Bonjour, je développe un programme de calcul matriciel.
Je m'aide de maple pour vérifier mes resultats.
Cependant, pour certains calculs j'obtiens des résultats pour le moins étranges.
Petit exemple :
Si je fais les opérations à la main je trouve bien :A=
0 1 1 1
0 -2 -1 1
0 -1 1 0
-1 1 0 -1
Inv(A) =
-0.4 -0.6 -0.2 -1
0.2 -0.2 -0.4 0
0.2 -0.2 0.6 0
0.6 0.4 -0.2 0
A.Inv(A) =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
par exemple :
Pour l'instant pas de soucis(1;1) => 1 = 0*(-0.4) + 1*(0.2) + 1*(0.2) + 1*(0.6)
(3;2) => 0 = 0*(-0.6) + (-1)*(-0.2) + 1*(-0.2) + 0*(0.4)![]()
Sauf que quand c'est mon programme qui fait le calcul j'obtient :
et sur maple :A.Inv(A) =
1 0 5.55112e-17 0
0 1 -5.55112e-17 0
0 0 1 0
0 5.55112e-17 0 1
Donc, première conclusion : Vive le calcul à la main
Et deuxième... Qu'est ce qu'il se passe ici ?
Je dois avouer que je ne sais pas d'ou viens l'erreur, si nécessaire je peux montrer mon code, mais je ne suis pas sur que l'erreur vienne de celui-ci ...
Enfin si quelqu'un a une idée, je suis preneur !
Merci d'avance
PS: je viens de voir que pour des matrices plus petites ça ne le fait jamais et la probabilité d'erreur augmente avec la taille de la matrice ...
Partager