Я хотел найти собственное значение размера матрицы (280 * 280). Я сделал это в MATLAB, используя
[V D] = eig(matrix);
но я хотел преобразовать свой код в python, используя
d, v = np.eigh(matrix)
Он будет обеспечивать почти тот же вывод, но в python первый и последний столбцы имеют противоположный знак (т.е. Если положительный в MATLAB тогда отрицательный в python), и я знаю, что вывод MATLAB верен
То, что вы делаете, эквивалентно, только если ваша матрица является эрмитовой.
вы должны использовать в 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)))
- простой случай норм Матрицы, индуцированных векторными нормами.
Если ваши вычисления в порядке, результат должен быть связан с ошибкой округления машины.