Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
5130 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  inverse matrice

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

inverse matrice

n°718816
benoiz
Posté le 07-05-2004 à 15:52:57  profilanswer
 

comment calculer l'inverse d'une matrice en pascal?

mood
Publicité
Posté le 07-05-2004 à 15:52:57  profilanswer
 

n°721123
didier1809
${citation_perso}
Posté le 10-05-2004 à 20:05:33  profilanswer
 

c'est pas specifique au pascal ca, revoit tes maths pour faire un algo ;)  :hello:


---------------
.
n°721158
Ace17
Posté le 10-05-2004 à 20:47:05  profilanswer
 

Pivot de Gauss...

n°723287
Tentacle
Posté le 12-05-2004 à 14:50:35  profilanswer
 

Calcule le déterminant (ça t'évitera déjà de bosser dans le vide si il est nul) puis on a A^(-1)=1/det(A) * t(C) avec C la matrice des coffacteurs de A, t(C) sa transposée.
Pour rappel, chaque élément de C se calcul ainsi :
 c(i, j) = (-1)^(i+j) * det(D)
D étant la sous-matrice de A quand on enlève la ligne i et la colonne j.
 
pour une petite matrice, tu peux effectivement utiliser le Pivot de Gauss (calcul le déterminant avant pour au moins savoir si elle est inversible), sinon cette méthode est la plus systématique.
 
Edit: ce serait plutôt catégorie Algo non ? (après avoir révisé ses maths =) )


Message édité par Tentacle le 12-05-2004 à 14:51:37
n°723544
Ace17
Posté le 12-05-2004 à 16:43:09  profilanswer
 

Et tu le calcules comment ton déterminant si ta matrice elle est pas 2x2 ni 3x3?

n°723546
Ace17
Posté le 12-05-2004 à 16:44:54  profilanswer
 

Et j'ajoute que calculer la 1/det * transposée de la comatrice , ca fait exploser les temps de calcul des que ta matrice devient un peu grande... Donc non, c'est vraiment le Pivot de Gauss la méthode valable

n°723818
Tentacle
Posté le 12-05-2004 à 18:55:01  profilanswer
 

pour calculer le déterminant, faut le faire récursivement selon une ligne ou une colonne.
 
C'est vrai qu'il faudrait calculer des tas de déterminant pour la comatrice :/

n°724126
fucky_fuck
Posté le 13-05-2004 à 07:42:33  profilanswer
 

Ace17 a écrit :

Et j'ajoute que calculer la 1/det * transposée de la comatrice , ca fait exploser les temps de calcul des que ta matrice devient un peu grande... Donc non, c'est vraiment le Pivot de Gauss la méthode valable


 
euh non ... tu peux aussi passer par la méthode de housholder, ou cholesky si ta matrice est symétrique ...
 
j'ajouterai que comme tu vas résoudre n systèmes linéaires avec gauss (ou householder), il ne faut pas triangulariser la matrice à chauqe fois, mais conserver le décomposition (LU ou QR) et l'appliquer à chaque vecteur ...
 
c'est dans tous les bons cours d'analyse numérique ou sinon, tu peux trouver sur le web , un livre qui s'appelle numerical recipee in C ...
tout est expliqué dedans !

n°724135
Ace17
Posté le 13-05-2004 à 07:56:20  profilanswer
 

"Donc non, c'est vraiment le Pivot de Gauss la méthode valable" ... comparé au coup de la transposée de la comatrice, évidemment!
 
Si la matrice est symétrique, va pour Cholesky...
Et si tu as n systemes a résoudre (meme matrice mais second membre différent), va pour la décomposition (P)LU...  
 
Mais s'il s'agit de ne résoudre qu'un seul systeme, a priori quelconque... moi je dis Pivot de Gauss
 
Quant a Numerical Recipes c'est un excellent bouquin mais passer par la pour inverser une malheureuse matrice...c'est un peu le marton pilon pour écraser les mouches!!

n°734943
GruikGruik
Posté le 22-05-2004 à 23:32:34  profilanswer
 

benoiz a écrit :

comment calculer l'inverse d'une matrice en pascal?


 
 En général, on n'a jamais besoin de calculer l'inverse d'une matrice.  
On s'arrange pour résoudre directement le système.
 
 Calculer l'inverse d'une matrice, c'est simplement résoudre un système un peu spécial (dont le second membre est le vecteur identité...)
 
 Le plus simple et le plus efficace, dans le cas général, c'est tout simplement le bon vieux algorithme de Gauss.  
 (Laisse tomber la méthode avec l'inverse du déterminant et la matrice des cofacteurs : c'est très util pour les démonstrations théoriques. Pour les calculs pratiques, cela n'est pas efficace.)
 
 Si tu veux assurer une bonne précision, tu peux ajouter à la méthode de Gauss le pivotage partiel. (En évitant de diviser par des coeff trop petits, tu évites la perte de précision. C'est souvent du luxe.)
 
 Evidemment, si tes matrices ont des propriétés particulières (symétrique, creuse, ...) tu disposes d'autres algo plus adaptés : Cholesky, QR, solveurs rapides itératifs...
 
 Mais franchement, la méthode de Gauss, c'est ce qu'il faut dans le cas général "sans prétention". Et en plus, cela se programme en 20 minutes et à peu près autant de lignes !
 
 (Pour le cas de grosses flemmes ou de "pas envie de chercher", le classique "Numerical Recipes" existe également en Pascal. Je crois me souvenir qu'il y a du code directement utilisable.)
 
 Si tu n'es pas tout à fait allergique au calcul algébrique, l'exercice vaut la peine de se pencher sur la programmation d'algo de Gauss.
 
Gruik!

mood
Publicité
Posté le 22-05-2004 à 23:32:34  profilanswer
 

n°734986
Ace17
Posté le 23-05-2004 à 00:21:34  profilanswer
 

GruikGruik a écrit :

dont le second membre est le vecteur identité...


C'est quoi que t'appelles vecteur identité?

n°735017
didier1809
${citation_perso}
Posté le 23-05-2004 à 01:39:47  profilanswer
 

Ace17 a écrit :

C'est quoi que t'appelles vecteur identité?


 


1 0 0
0 1 0
0 0 1


 
non  :??:

n°735039
Ace17
Posté le 23-05-2004 à 07:27:33  profilanswer
 

Ca c'est la matrice identité... Et ca ne peut en aucun cas faire office de second membre

n°735088
didier1809
${citation_perso}
Posté le 23-05-2004 à 11:46:08  profilanswer
 

Ace17 a écrit :

Ca c'est la matrice identité... Et ca ne peut en aucun cas faire office de second membre


 
c'est pas avec ca qu'on inverse une matrice  :??:

n°735094
Ace17
Posté le 23-05-2004 à 12:18:25  profilanswer
 

didier1809 a écrit :

c'est pas avec ca qu'on inverse une matrice  :??:


Ben c'est comme si tu disais que c'est avec le nombre 1 qu'on calcule l'inverse d'un nombre rationnel..

n°735103
didier1809
${citation_perso}
Posté le 23-05-2004 à 12:32:12  profilanswer
 

j'ai apris ca moi
 
matrice_a_inverser   matrice_unitée
 
ex :
 


1 2 3  1 0 0
4 5 6  0 1 0  
7 8 9  0 0 1


 
et avec dees operations style l2 = l2 + l1, on doit arriver a avoir la matrice unitée a gauche, et la matrice a droite est la matrice inversée


---------------
.
n°735107
Ace17
Posté le 23-05-2004 à 12:54:26  profilanswer
 

Oui, oui, c'est parfaitement exact ce que tu dis,
mais dire que c'est avec la matrice identité qu'on inverse une matrice ...
Disons que c'est pas faux, mais c'est ridicule... dans la mesure ou l'important dans le processus d'inversion c'est Gauss ; Sinon, je peux aussi dire que c'est grace a la multiplication et la division qu'on calcule l'inverse d'une matrice...
 
Mais moi ce que je voulais savoir c'est ce que Gruik^2 appelait "vecteur identité" qui justifiait l'inversion d'une matrice ( car c'est vrai que dans la pratique, on n'inverse quasiment jamais de matrice mais on résout un systeme )


Message édité par Ace17 le 23-05-2004 à 12:55:18
n°735146
didier1809
${citation_perso}
Posté le 23-05-2004 à 14:46:52  profilanswer
 

Ace17 a écrit :

Oui, oui, c'est parfaitement exact ce que tu dis,
mais dire que c'est avec la matrice identité qu'on inverse une matrice ...
Disons que c'est pas faux, mais c'est ridicule... dans la mesure ou l'important dans le processus d'inversion c'est Gauss ; Sinon, je peux aussi dire que c'est grace a la multiplication et la division qu'on calcule l'inverse d'une matrice...
 
Mais moi ce que je voulais savoir c'est ce que Gruik^2 appelait "vecteur identité" qui justifiait l'inversion d'une matrice ( car c'est vrai que dans la pratique, on n'inverse quasiment jamais de matrice mais on résout un systeme )


 
on est bien d'accord  :hello:  :jap:


---------------
.
n°735149
fucky_fuck
Posté le 23-05-2004 à 15:04:36  profilanswer
 

à mon avis ce qu'il voualait dire en parlant de vecteur identité, c que pour utiliser ta méthode de gauss comme j'en avais parlé avec la méthode LU
 
tu décompose ta matrice en LU, et apres tu resoud n systèmes linéaires avec a chaque fois Ax=b ou b est ce qu'on peut appeler "vecteur identité"  
 
en fait tu résoud pour chaque colonne de la matrice identité(1 colonne= ~vecteur identité), pis apres tu colle les résultats et ça te donne ta matrice inverse ... c comme cela que l'on a appris à le faire en analyse numérique ...
 
bon ok ct pas tres bien exprimé, mais je crois que c ça ...

n°735262
Ace17
Posté le 23-05-2004 à 18:51:03  profilanswer
 

fucky_fuck a écrit :

tu décompose ta matrice en LU


en PLU... [:aloy]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  inverse matrice

 

Sujets relatifs
[SQL] requette avec un LIKE mais inverséProduit de 2 matrices de format différent et inversion de matrice
convertir: hpgl vers gerber ou l'inverse[SQL] Tri inversé en SQL.
[PHP] Fonction inverse de nl2br ?Fonction "inverse" de date : Wed, 14 jan -> 2004-01-14
Standardiser une matricePassage MySql à fichier SYLK (compatible excel) et inverse (PHP)
Rotation dans une matrice : problèmes !Inverse d'une matrice
Plus de sujets relatifs à : inverse matrice


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)