有错误的numpy.linalg.solve输出



我正在尝试使用python来解决矩阵函数Ax=b。在这种情况下,我们有

A = [[-1.  1.  0.]
     [-1.  0.  1.]
     [-2.  0.  0.]]
b = [ 1.  1.  2.]

我试图使用numpy.linalg.solve来解决这个问题,因为我下面的代码

result = np.linalg.solve(A,b)

输出是这样的

[ -1.00000000e+00   2.22044605e-16   2.22044605e-16]

这显然与正确答案不同。所以我尝试在终端中实现这一点,如下所示

>>> import numpy as np
>>> T = np.matrix([[-1.0,1.0,0.0],[-1.0,0.0,1.0],[-2.0,0.0,0.0]])
>>> b = np.array([1.0,1.0,2.0])
>>> np.linalg.solve(T,b)
array([-1.,  0.,  0.])
>>> type(b[0])
<type 'numpy.float64'>

我正在考虑数据类型可能会导致这种结果,但我的代码中的 A 和 b 都是"numpy.float64"。所以我无法弄清楚这种情况的原因是什么。

您可以通过执行以下操作来检查它是否是一个解决方案

r = np.linalg.solve(T,b)
T@r  # Matrix mutiplication if you have a modern python

这将返回您拥有的 b 向量。

最新更新