-3
我想用python來解決矩陣函數Ax = b。在這種情況下,我們有有錯誤的輸出numpy.linalg.solve
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」。所以我無法弄清楚這種情況的原因。
看起來很好。 (注意'e-16's。) – user2357112
第一條評論是正確的。爲了好玩:在導入numpy並觀察之後,添加'''np.set_printoptions(suppress = True)'''。如果仍然不清楚,請查看科學記數法和numpy的文檔。 – sascha