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

当尝试使用numpy.linalg.inv计算奇异矩阵的逆时,可能会得到无意义的结果,因为实际计算过程中涉及的LU分解可能导致接近零的值。建议避免直接求逆,而是使用线性方程求解器如scipy.linalg.solve,它能提供更准确的条件数警告并避免奇异矩阵错误。
摘要由CSDN通过智能技术生成

下面的矩阵是单数,并且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,该驱动程序还会报告条件编号并发出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值