当前位置:   article > 正文

python numpy逆_numpy.linalg.inv返回奇异矩阵的逆函数 - python

numpy.linalg.linalgerror:singular matrix

下面的矩阵是单数,并且AFAIK尝试将其求反应导致

numpy.linalg.linalg.LinAlgError: Singular matrix

但是我得到了一些输出矩阵。请注意,输出矩阵是无意义的结果,因为它具有一行0(这是不可能的,因为矩阵的逆本身应该是可逆的)!

我是否在这里缺少与浮点精度有关的东西,或者与真实逆相反的伪逆的计算?

$ np.__version__

'1.13.1'

$ np.linalg.inv(np.array([[2,7,7],[7,7,7],[8,7,7]]))

array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],

[ 3.43131400e+15, -2.05878840e+16, 1.71565700e+16],

[ -3.43131400e+15, 2.05878840e+16, -1.71565700e+16]])```

参考方案

在后台,NumPy和SciPy(以及许多其他软件)都退回到线性方程求解器的LAPACK实现(或C转换)(在本例中为GESV)。

由于GESV首先执行LU分解,然后检查U矩阵的对角线是否有确切的零,因此很难在分解中达到理想的零。这就是为什么您不会遇到奇异矩阵错误的原因。

除此之外,如果要与其他矩阵相乘,则永远不要求逆矩阵,而是求解AX=B。

在SciPy自版本0.19起,scipy.linalg.solve使用GESVX的“专家”驱动程序GESV,该驱动程序还会报告条件编号并发出

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号