Python求特征值和特征向量、奇异值分解

问题1描述:
求解矩阵A=[-1 2 -3; 4 -6 6]的2范数。
其中,矩阵A的2范数为矩阵 A T A A^{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

猜你喜欢

转载自blog.csdn.net/Hansry/article/details/83713635