2017-10-17 28 views
-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」。所以我無法弄清楚這種情況的原因。

+3

看起來很好。 (注意'e-16's。) – user2357112

+1

第一條評論是正確的。爲了好玩:在導入numpy並觀察之後,添加'''np.set_printoptions(suppress = True)'''。如果仍然不清楚,請查看科學記數法和numpy的文檔。 – sascha

回答

0

您可以檢查它通過執行以下

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

這將返回你有向量b的解決方案。