Собственное значение в Python - PullRequest
0 голосов
/ 02 октября 2018

Я хотел найти собственное значение размера матрицы (280 * 280).Я сделал это в MATLAB, используя

[V D] = eig(matrix);

, но я хотел преобразовать свой код в python, используя

d, v = np.eigh(matrix)

Это обеспечит почти тот же вывод, но в Python первый и последнийстолбцы имеют противоположный знак (т. е. если положительный в MATLAB, а отрицательный в python), и я знаю, что вывод MATLAB правильный

1 Ответ

0 голосов
/ 03 октября 2018

То, что вы делаете, эквивалентно, только если ваша матрица эрмитова .

, которую вы должны использовать в python:

d, v = np.eig(matrix)

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

d, v = np.linalg.eig(matrix)
norm_1=np.max(np.max(abs(np.matmul(np.matmul(v,np.diag(d)),np.linalg.inv(v))-matrix)))
print norm_1

результат np.max(np.sum(abs(np.matmul(np.matmul(v,np.diag(d)),np.linalg.inv(v))-matrix))) представляет собой простой случай норм матрицы, индуцированных векторомнорм .

Если ваши вычисления в порядке, результат должен быть вокруг ошибки машинного округления.

...