输出错误的numpy.linalg.solve

时间:2017-10-17 20:54:18

标签: python numpy

我正在尝试使用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'。所以我无法弄清楚这种情况的原因是什么。

1 个答案:

答案 0 :(得分:0)

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

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

这将返回你的b矢量。