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

1

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

[V D] = eig(matrix);

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

d, v = np.eigh(matrix)

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

Теги:
eigenvector

1 ответ

1

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

вы должны использовать в 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))) - простой случай норм Матрицы, индуцированных векторными нормами.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню