原文:https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.pinv.html
校对:(虚位以待)
numpy.linalg.
pinv
(a, rcond=1e-15)[source]计算矩阵的(Moore-Penrose)伪逆。
使用奇异值分解(SVD)并包括所有大奇异值计算矩阵的广义逆。
参数: | a:(M,N)array_like
rcond:float
|
---|---|
返回: | B:(N,M)ndarray
|
上升: | LinAlgError
|
笔记
表示为的矩阵A的伪逆定义为:“求解'[最小二乘问题] 的矩阵,即,如果是所述解,那么是的矩阵。
可以表明,如果是A的奇异值分解,则,其中是正交矩阵,是由A的所谓奇异值组成的对角矩阵, (通常由零),然后仅仅是由A的奇异值的倒数(再次,之后是零)组成的对角矩阵。[R42]
参考文献
[R42] | (1,2) G. Strang,线性代数及其应用,第2版,Orlando,FL ,Academic Press,Inc.,1980,pp。139-142。 |
例子
The following example checks that a * a+ * a == a
and a+ * a * a+ == a+
:
>>> a = np.random.randn(9, 6)
>>> B = np.linalg.pinv(a)
>>> np.allclose(a, np.dot(a, np.dot(B, a)))
True
>>> np.allclose(B, np.dot(B, np.dot(a, B)))
True