Соответствующие собственные значения собственных векторов в Python

У меня есть симметричная матрица 3 * 3, A:

A = np.mat("1, 2, 1; 2, 5, 0; 1, 0, 5")

Я вычислил собственные значения A, которые равны 0, 6 и 5. Теперь мне сказали, что у A есть следующие три собственных вектора, и меня попросили найти соответствующие три собственных значения. Как мне это сделать в Python?

   v1=np.array([[-5],[2], [1]])
   v2=np.array([[0],[-1], [2]])
   v3=np.array([[1],[2], [1]])

После этого я должен показать, что три собственных вектора линейно независимы, что я также не знаю, как показать в Python?


person user12541161    schedule 18.12.2019    source источник
comment
docs.scipy.org/doc/numpy/reference/ сгенерировано/   -  person Dschoni    schedule 18.12.2019
comment
Рекомендуется использовать numpy ndarrays, а не матрицы, поскольку матрицы включены только для обратной совместимости.   -  person user2653663    schedule 18.12.2019


Ответы (2)


Чтобы найти собственное значение данного собственного вектора, существует хорошо известная формула (частное Рэлея):

собственное значение

А чтобы узнать, являются ли собственные векторы линейно независимыми, вы можете показать, что их определитель отличен от нуля:

import numpy as np

A = np.array([[1, 2, 1], [2, 5, 0], [1, 0, 5]])

v1 = np.array([[-5], [2], [1]])
v2 = np.array([[0], [-1], [2]])
v3 = np.array([[1], [2], [1]])

# eigenvalues
l1 = (v1.T@A@v1/(v1.T@v1))[0, 0]
l2 = (v2.T@A@v2/(v2.T@v2))[0, 0]
l3 = (v3.T@A@v3/(v3.T@v3))[0, 0]

# Are linearly independent?
tol = 1e-8
if np.abs(np.linalg.det(np.concatenate((v1, v2, v3), axis=1))) < tol:
    print('eigenvector are linearly dependent')
else:
    print('eigenvector are linearly independent')
person Diego Palacios    schedule 18.12.2019

Я не уверен, что вы пробовали, но вот ссылка , описывающий теоретический аспект этой темы.

С точки зрения кода Python вы можете попробовать это

import numpy as np
from numpy.linalg import eig
from numpy.linalg import det

A = np.mat("1, 2, 1; 2, 5, 0; 1, 0, 5")
values, vector = eig(A)
det(vector)
person Pavan Kumar Polavarapu    schedule 18.12.2019
comment
Я сделал это, и это сработало - это дало мне det (A), который равен 0, и собственные значения: 0, 6 и 5. Однако теперь мое задание состоит в том, чтобы найти три собственные значения, соответствующие трем собственным векторам, которые у меня есть. было дано (v1, v2 и v3 в моем коде) - person user12541161; 18.12.2019