quelqu'un peut m'aide à inverser une matrice 2*2.
quelqu'un peut m'aide à inverser une matrice 2*2.
C'est de l'algorithmique ça. Tu aurais du poster dans le forum Algo.
MD Software
---------------------------
F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi
pour une 2*2 la réponse est connue
soit A ta matrice :
alors soit G = det(A) = a*d - b*c
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ( a b ) ( c d )
tu as :
A^(-1) :
après y'a plus qu'a mettre ça en forme avec delphi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ( d/G -b/G ) ( -c/G a/G )
de facon + generale pour une matrice nXn, son inverse existe si Det(A) non nul. Si c'est le cas alors
A^-1 = 1/ det(A) * Transposée ( Comatrice(A) )
ok, soyon clair,
J'ai fait cet exercice pour mes etude l'année derniere.
Prend ta matrice :
( a b )
( c d )
colle y l'identité dans une matrice 4x2
( a b 1 0 )
( c d 0 1 )
Ensuite programme une fonction pivot-de-Gauss telle que
Procedure Pivot ( x, y : integer )
lorsque tu prend la matrice precedente :
Pivot (1,1) pivote sur a et donne :
( a b 1 0 )
( 0 d-n*d -n 1 )
avec n = c/a
ensuite pivot sur d:
Pivot(2,2) :
( a 0 1 + m*n -m )
( 0 d-n*d -n 1 )
avec m = b / (d * n*d)
ensuite divise chaque ligne pour obtenir une matrice genre
( 1 0 A' B' )
( 0 1 C' D' )
La matrice
( A' B' )
( C' D' )
Est l'inverse de la matrice de depart.
concretement
A' = (1+ m*n) / a
B' = -m / a
C' = -n / (d - n*d)
D' = 1 / (d - n*d)
Si tu commence par le calcule de n et de m, ca se fait tout seul. ^^
sans meme la fonction pivot, mais ca, c'etait pour la methode, et ca marche pour tout taille de matrice. suffit de pivoter sur toute la diagonale.
si l'exception division par zero est levé, ta matrice n'est pas inversible.
voila, j'espere avoir eté clair, et pas avoir fait d'erreur de calcule, sinon, pose une question.
A bientot
HopeLeaves
Partager