1. 程式人生 > >Python求特徵值和特徵向量、奇異值分解

Python求特徵值和特徵向量、奇異值分解

問題1描述:
求解矩陣A=[-1 2 -3; 4 -6 6]的2範數。
其中,矩陣A的2範數為矩陣ATAA^{T}A的最大特徵值開平方根。
即利用Python求解2範數如下所示:

>>> A=np.array([[-1,2,-3],[4,-6,6]])
>>> A_T=np.transpose(A)
>>> Z=np.dot(A_T,A)
>>> a,b=np.linalg.eig(Z) #其中a為特徵值,b為特徵向量
>>> a
array([  1.01249378e+02,  -1.28328224e-16,   7.50621894e-01])
>>> b
array([[-0.40647913,  0.6882472 , -0.60090806],
       [ 0.62776097,  0.6882472 ,  0.36363711],
       [-0.66384552,  0.22941573,  0.71181286]])

因此2範數為

>>> np.sqrt(a[0])
10.062274996520641

問題2描述:
求矩陣A=[-1 2 -3;4 -6 6]的核範數。
其中,矩陣A的核範數等於矩陣的奇異值(將矩陣svd分解)之和

>>> A=np.array([[-1,2,-3],[4,-6,6]])
>>> s,u,v=np.linalg.svd(A)
>>> np.sum(u)
10.928659376802015