Numpy собственных векторов - PullRequest
1 голос
/ 14 января 2020

Я пытаюсь использовать функцию numpy linalg.eig() для получения собственных векторов и собственных значений.

import numpy as np
M = np.array([[168.04570515, 1.38100609, -48.60662242],
              [1.38100609, 16.49647382, 9.18370965], 
              [-48.60662242, 9.18370965, 38.37842496]])
eigenvalue, eigenvector = np.linalg.eig(M)

>>>eigenvalue
array([184.25812834,  28.91371368,   9.74876191])

>>>eigenvector
array([[-0.94849917, -0.26039343, -0.18040119],
   [ 0.0095255 , -0.59267178,  0.80538775],
   [ 0.31663637, -0.7621912 , -0.56462906]])

Однако, когда я ввожу те же самые значения M в WolframAlpha, я получаю следующее: enter image description here

Почему я получаю разные собственные векторы?

1 Ответ

1 голос
/ 14 января 2020

Итак, вы на самом деле получаете те же собственные векторы. Просто Wolfram Alpha масштабирует собственные векторы, поэтому последний элемент равен 1 (если вы помните, собственные векторы масштабно инвариантны). Давайте посмотрим на первый столбец вашего результата. Если вы запустите,

np.array([-0.94849917, 0.0095255, 0.31663637])/0.31663637

Вы получите

array([-2.99554713,  0.0300834 ,  1.        ])

Что, если вы заметили, сообщает Wolfram Alpha. Вы также можете проверить два других.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...