[Matlab] Inversion matrice complexe 39x39

Résolu/Fermé
matbator - 28 mai 2009 à 18:59
karim et hanene Messages postés 6 Date d'inscription samedi 3 décembre 2011 Statut Membre Dernière intervention 2 mars 2012 - 2 mars 2012 à 09:59
Bonjour,

J'ai un problème avec une inversion de matrice sous matlab. En fait, je résous un système d'équation linéaires par cette simple opération :

Vect_RDS = inv(Mat_parametres)*Vect_I0;

avec Mat_parametres : matrice 39x39 complexe
et Vect_I0 : vecteur 39 lignes complexe.

Malheureusement, le résultat de cette opération n'est pas exact. Parfois, j'ai l'erreur suivante :

Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 4.565062e-18

Et quand je fais le produit :

inv(Mat_parametres)*Mat_parametres;

La matrice résultante n'est la matrice identité ! Matlab semble donc battu sur ce coup.

Quelqu'un connaitrait il un moyen d'inverser une matrice lourde et de type complexe sous matlab ?

Je n'sais pas si ça parle à quelqu'un ? Mais si oui, je serais vraiment heureux d'avoir une piste pour me débloquer.

4 réponses

Fee Fay Messages postés 635 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 31 mai 2009 377
31 mai 2009 à 03:03
Bonsoir mon ami !

Si ta matrice est mal conditionnée ou très proche d'une matrice singulière, il n'y a aucun moyen de donner ta matrice telle qu'elle est à Matlab pour qu'il l'inverse.

Les possibilités qui me viennent à l'esprit sont :

1) Utiliser une méthode itérative pour la résolution comme la méthode de Gauss-Seidel, peut-être que les résultats seront meilleurs s'il ne s'agit que d'un problème de conditionnement, mais tu auras certainement besoin d'un nombre important d'itérations pour arriver à la solution.
Tu pourras trouver un programme pour cette méthode sur cette page : http://matlabdb.mathematik.uni-stuttgart.de/download.jsp?MC_ID=3&MP_ID=406

2) Utiliser un préconditionneur si le problème est uniquement un problème de conditionnement de ta matrice

3) Si le problème que tu essaies de résoudre correspond à un problème inverse, il faut savoir qu'en général, les problèmes inverses ne sont pas des problèmes bien posés au sens de Hadamard (ils sont donc mal posés, jolie lapalissade...) et il est nécessaire de régulariser ces problèmes, la méthode de régularisation la plus utilisée étant selon moi la régularisation de Tychonoff. Une méthode possible de détermination du(des) paramètre(s) de régularisation est le Morozov Discrepancy Principle.

Je te souhaite une bien bonne nuit !
2
Bonjour

j'ai le même problème que vous avec des matrices 100*100. Avez vous réussi à resoudre votre problème de matrices singulières. Si oui comment???

Merci d'avance pour votrre réponse
0
salut tout le monde mon probléme c est que j ai une matrice singuliére non pas proche et je dois inverser pour calculer la matrice de covariance . bon en faite je travaille pas sur matlab mais sur SAS .
mais je voudrais juste savoir si il ya une solution pour régler ce probléme de matrice singuliére .

merci d 'avance
0
Bonjour

Malheureusement, je n'ai pas réussi à inverser mais matrices qui étaient mal conditionnées.

Par contre j'ai essayé plusieurs méthodes notamment à base de pré-conditionneurs. Cela décompose ta matrice en un produit de matrice plus simple ayant de bonnes propriètés (notamment A-1 = transposée(A) ). J'ai par exemple utilisé la décomposition Choleski ou la méthode SPAI et j'ai pu constater que les matrcies inversés suite à ces décompositions étaient "mieux" inversées.

J'avais également pensé réaliser des inversions par bloc. C'est à dire puisque mon problème était la dynamique de la matrice (écart entre le plus petit terme et le plus grand de l'ordre de 10^40), j'ai pensé à organiser ma matrcie de telle sorte que les petits termes soient tous au même endroit et de même pour les plus grands. Ainsi on a des sous matrices avec une dynamique plus faible qu'on peut essayer d'inverser individuellement. Puis regrouper ces matrices inversées dans la matrice globale en faisant des simples calculs d'addition, soustraction, ... .

J'éspère que ca peut t'aider en tout cas bon courage
0
Bonjour!
J ai une petite question.. comment fait on pour ameliorer le conditionnement avec choleski??
0
karim et hanene Messages postés 6 Date d'inscription samedi 3 décembre 2011 Statut Membre Dernière intervention 2 mars 2012
2 mars 2012 à 09:59
bonjour
je veux que vous m'aidez svp,j'ai un probléme avec la dévision d'une image de taille[n m] en blocs 8*8 sous matlab!! est ce que vous avez une lien qui pourra m'aider ?
0