伪逆矩阵计算

Pseudo inverse matrix calculation

我尝试重复lectures计算伪逆矩阵的例子:

我用这个代码

from numpy import *
# https://classes.soe.ucsc.edu/cmps290c/Spring04/paps/lls.pdf
x = np.array([[-11, 2],[2, 3],[2, -1]]) 
print(x)
# computing the inverse using pinv
a = linalg.pinv(x)
print(a)

我的计算结果和讲座的结果不一样

我的结果:

[[-0.07962213  0.05533063  0.00674764]
 [ 0.04048583  0.2854251  -0.06275304]]

讲座结果:

[[-0.148  0.180  0.246]
 [ 0.164  0.189 -0.107]]

我做错了什么?请告诉我!

讲义有误。看来他们找到了

的伪逆
    [-1   2]
A = [ 2   3]
    [ 2  -1]

(注意 A[0,0] 从 -11 到 -1 的变化。)这是使用 A 版本的计算:

In [73]: A = np.array([[-1, 2], [2, 3], [2, -1]]) 

In [74]: A
Out[74]: 
array([[-1,  2],
       [ 2,  3],
       [ 2, -1]])

In [75]: np.linalg.pinv(A)
Out[75]: 
array([[-0.14754098,  0.18032787,  0.24590164],
       [ 0.16393443,  0.18852459, -0.10655738]])

In [76]: np.linalg.pinv(A).dot([0, 7, 5])
Out[76]: array([ 2.49180328,  0.78688525])