То, что вы делаете, эквивалентно, только если ваша матрица эрмитова .
, которую вы должны использовать в 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)))
представляет собой простой случай норм матрицы, индуцированных векторомнорм .
Если ваши вычисления в порядке, результат должен быть вокруг ошибки машинного округления.