函数:numpy.linalg.eig(a)
参数:
- a:想要计算奇异值和右奇异值的方阵。
返回值:
- w:特征值。每个特征值根据它的多重性重复。这个数组将是复杂类型,除非虚数部分为0。当传进的参数a是实数时,得到的特征值是实数。
- v:特征向量。
例子:
当我们想要求解一个非方阵的奇异值之前,我们需要先把这个矩阵转换为方阵。
>>> from numpy import *
>>> import numpy as np
>>> A = mat([[4,5,6],[1,2,3]])
>>> U = A*A.T
>>> lamda,hU=linalg.eig(U)
>>> sigma=sqrt(lamda)
>>> print sigma
[9.508032 0.77286964]
在开头先进行矩阵的乘法,把矩阵和矩阵的转置相乘,得到一个方阵,然后这个方阵作为参数,可以得到特征值和特征向量。
其中返回的第一个值w进行开根号就是data这个矩阵的奇异值。至于为什么w开根号的值就是svd函数的第二个返回值,可以查看我之前写的svd函数的解释。numpy.linalg.svd
我们可以用svd函数来验证一下。
>>> Q,S,VT=linalg.svd(A)
>>> print S
[9.508032 0.77286964]
官方手册:numpy.linalg.eig