J'essaye d'utiliser python pour résoudre une fonction de matrice Ax = b. Dans ce cas, nous avonsJ'ai une mauvaise sortie de numpy.linalg.solve
A = [[-1. 1. 0.]
[-1. 0. 1.]
[-2. 0. 0.]]
b = [ 1. 1. 2.]
je tentais d'utiliser numpy.linalg.solve
pour résoudre ce que mon code ci-dessous
result = np.linalg.solve(A,b)
la sortie est comme ce
[ -1.00000000e+00 2.22044605e-16 2.22044605e-16]
qui est apparemment différent de la bonne réponse. J'ai donc essayé de mettre en œuvre ce dans le terminal comme ci-dessous
>>> 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'>
Je pense sur le type de données peut provoquer ce genre de résultat, mais à la fois A et b de mon code sont « numpy.float64 ». Donc, je ne peux pas comprendre quelle est la raison de cette situation.
Cela me semble bien. (Notez les 'e-16's.) – user2357112
Le premier commentaire est correct. Pour le plaisir: ajouter '' 'np.set_printoptions (supprimer = True)' '' après avoir importé numpy et observer. Recherchez la notation scientifique et les documents de numpy s'ils ne sont toujours pas clairs. – sascha