np.linal.solve没有给出正确的结果



我试图用函数linalg.solve:参数化给定基ss的任意t向量

t = np.array([0.4, 0., 0., 0., 0., 0., 0., 0.3, 0., 0., 0., 0., 0.2, 0., 0., 0.1])
ss = np.array([[1.,  0.,  0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  1.,  0.,  0.,  1.],
           [0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.],
           [0.,  0., -1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., -1.,  0.],
           [1.,  0.,  0.,  0.,  0.,  0.,  0., -1.,  0.,  0., -0.,  0.,  1.,  0.,  0., -1.],
           [0.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  0.],
           [0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
           [0.,  0.,  0.,  0.,  0.,  0., -1.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.],
           [0.,  0.,  0.,  1.,  0.,  0.,  0., -0.,  0.,  0., -1.,  0.,  0.,  0.,  0., -0.],
           [0.,  0.,  0.,  0., -1.,  0.,  0.,  0.,  0.,  0.,  0., -1.,  0.,  0.,  0.,  0.],
           [0.,  0.,  0.,  0.,  0.,  0., -1.,  0.,  0., -1.,  0.,  0.,  0.,  0.,  0.,  0.],
           [0.,  0.,  0.,  0.,  0., -1., -0.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
           [0.,  0.,  0.,  0., -1.,  0.,  0., -0.,  0.,  0.,  0.,  1.,  0.,  0.,  0., -0.],
           [1.,  0.,  0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.,  0.,  0., -1., -0.,  0., -1.],
           [0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., -0., -1.,  0., -0.],
           [0.,  0., -1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., -0.,  0.,  1., -0.],
           [1.,  0.,  0.,  0.,  0.,  0.,  0., -1.,  0.,  0., -0.,  0., -1., -0.,  0.,  1.]])

然后执行:

para = sp.linalg.solve(ss, t)
print para
print np.dot(ss, para) == t

我得到了:

[0.175 0-0.15-0。0。-0。0.1250--0.15。0.025-0。0.075]

[真是真是真真真假]

显然这是不对的。。。为什么会发生这种错误?

看起来是舍入/数值近似错误:

t[-1]
Out[493]: 0.10000000000000001
np.dot(ss,para)[-1]
Out[495]: 0.099999999999999964

相关内容

  • 没有找到相关文章

最新更新