Mon ami et moi exécuté ces lignes de code dans Python 2
et Python 3
:Numpy intervertit une matrice non inversible
import numpy as np
mat = np.array([[1,0,0],[-1,3,3],[1,2,2]])
np.linalg.inv(mat)
qui retourne:
array([[ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00],
[ 1.50119988e+16, 6.00479950e+15, -9.00719925e+15],
[ -1.50119988e+16, -6.00479950e+15, 9.00719925e+15]])
Ce qui est étrange donné:
np.linalg.matrix_rank(mat)
renvoie 2
, indiquant ainsi que la matrice est pas inversible. Je comprends de ce fil qui est probablement dû à la façon dont numpy et python manipulent des nombres de virgule flottante, bien que ma matrice soit composée de nombres entiers.
Y a-t-il une raison particulière pour laquelle mat
casse l'implémentation inverse de numpy? Rang = 2 signifie que la matrice est et non inversible
S'il vous plaît préciser: voulez-vous dire « matrice est _invertible_ » ou « matrice n'est pas _invertible_ »? – DyZ