import numpy as np
import matplotlib.pyplot as plt
import scipy.linalg as la
A = np.array([[-5,-5,-1,0,0,0,500,500,100],
[0,0,0,-5,-5,-1,500,500,100],
[-150,-5,-1,0,0,0,30000,1000,80],
[0,0,0,-150,-5,-1,12000,400,80],
[-150,-150,-1,0,0,0,33000,33000,220],
[0,0,0,-150,-150,-1,12000,12000,80],
[-5,-150,-1,0,0,0,500,15000,100],
[0,0,0,-5,-150,-1,1000,30000,200]])
print("Matrix A is :\n", A)
A_Trans=np.transpose(A)
print("Transpose is:\n",A_Trans)
prod1=np.dot(A,A_Trans)
print(prod1)
u,v = la.eigh(prod1)
print("Eigen values of AAT are \n",np.abs(u))
print("Corresponding eigenvectors of AAT in the columns: \n",np.abs(v))
prod2=np.dot(A_Trans,A)
print(prod2)
w,x = la.eigh(prod2)
print("Eigen values of ATA are \n",np.abs(w))
print("Corresponding eigenvectors of ATA in the columns: \n",np.abs(x))
Это вывод, который я получаю. Для поддержания чистоты поста я опускаю некоторые из выводов.
Eigen values of AAT are
[2.85018004e+09 4.52373040e+00 2.19731826e+03 1.84822781e+04
2.46139762e+04 4.52427374e+04 1.01150754e+09 2.18234247e+09]
Eigen values of ATA are
[3.28219743e+09 6.70266037e+08 2.95889936e-01 1.23330275e+00
9.79916827e+03 2.20387805e+04 3.06750605e+04 7.13857850e+04
1.12278371e+06]
Я думал об использовании функции svd, но я хотел попробовать это для себя. Тем не менее, он работает просто отлично в MATLAB, но не в python. Кроме того, когда я вводю меньшие матрицы, такие как 2X2, это работает нормально. Что я делаю неправильно?