2017-10-17 3 views
-3

Ich versuche Python zu verwenden, um eine Matrixfunktion Ax = b zu lösen. In diesem Fall haben wirFalsche Ausgabe von numpy.linalg.solve

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

ich versuche numpy.linalg.solve zu verwenden, um dies unter

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

als meinen Code zu lösen, ist die Ausgabe wie diese

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

, die aus scheinbar anders die richtige Antwort. Also habe ich versucht, diese, wie unten

>>> 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'> 

im Terminal zu implementieren ich über den Datentyp denke, diese Art von Ergebnis kann dazu führen, aber beide A und b aus meinem Code ist ‚numpy.float64‘. Also kann ich nicht herausfinden, was der Grund für diese Situation ist.

+3

Sieht gut für mich aus. (Beachte die 'e-16's.) – user2357112

+1

Der erste Kommentar ist korrekt. Zum Spaß: füge '' 'np.set_printoptions (suppress = True)' '' nach dem Import von numpy hinzu und beobachte. Schlagen Sie die wissenschaftliche Notation und die Dokumente von numpy nach, wenn sie noch unklar sind. – sascha

Antwort

0

können Sie überprüfen, ob es eine Lösung ist durch die

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

folgenden Aktionen ausführen, die b-Vektor Dadurch kehren Sie hatten.