1、特征值分解
主要还是调包:
from numpy.linalg import eig
特征值分解: A = P*B*PT 当然也可以写成 A = QT*B*Q 其中B为对角元为A的特征值的对角矩阵,P=QT,
首先A得对称正定,然后才能在实数域上分解,
>>> A = np.random.randint(-10,10,(4,4))>>>A
array([[6, 9, -10, -1],
[5, 9, 5, -5],
[-8, 7, -4, 4],
[-1, -9, 0, 6]])>>> C =np.dot(A.T, A)>>>C
array([[126, 52, -3, -69],
[52, 292, -73, -80],
[-3, -73, 141, -31],
[-69, -80, -31, 78]])>>> vals, vecs =eig(C)>>>vals
array([357.33597086, 174.10172008, 8.84429957, 96.71800949])>>>vecs
array([[-0.28738314, -0.51589436, -0.38221983, -0.71075449],
[-0.87487263, 0.12873861, -0.24968051, 0.39456798],
[0.2572149 , -0.69304313, -0.33950158, 0.58161018],
[0.29300052, 0.48679627, -0.82237845, -0.02955945]