L'inverse d'une matrice en langage C
Fermé
mpiaya
Messages postés
3
Date d'inscription
dimanche 23 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2013
-
5 juil. 2013 à 19:47
mpiaya Messages postés 3 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 10 juillet 2013 - 8 juil. 2013 à 18:19
mpiaya Messages postés 3 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 10 juillet 2013 - 8 juil. 2013 à 18:19
A voir également:
- Inverse d'une matrice en c
- Annuaire inversé - Guide
- Annuaire inversé belgique - Forum Mobile
- Annuaire inverse sfr - Forum SFR
- Ecran inversé - Guide
- Annuaire inversé gratuit réponse immediate ✓ - Forum Réseaux sociaux
2 réponses
js95
Messages postés
773
Date d'inscription
samedi 14 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2014
354
6 juil. 2013 à 20:17
6 juil. 2013 à 20:17
Matlab travaille directement avec des variables matrices, ce qu'il faut implémenter à la main avec des pointeurs. C'est long à faire, en revanche t'expliquer ce que fait le code Matlab est plus rapide :
Explication de la sélection des cases des matrices :
Mm(_,_)
avant la virgule on sélectionne les lignes, après la virgule on sélectionne les colonnes
exemple:
2:4 -> de la 2e à la 4e (ligne ou colonne selon si c'est à gauche ou à droite de la virgule)
: -> toutes (les lignes ou les colonnes selon si c'est à gauche ou à droite de la virgule)
Le code situé avant la fonction inverse dans ton post présente le calcul de déterminant
function inverse = calcul_inverse(M) // M est la matrice passée en paramètre // et c'est la variable inverse qui est renvoyée par la fonction Matlab à la fin de la fonction inverse=zeros(size(M,1)); // size(M,1) renvoie le nombre de lignes de la matrice M // size(M,2) renverrait le nombre de colonnes de la matrice M // zeros(N) renvoie la matrice nulle carrée NxN for p=1:size(M,1) // p va de 1 au nombre de lignes de M for q=1:size(M,1) // p va de 1 au nombre de lignes de M // attention ce code ne marche que pour une matrice carrée sinon on ferait for q=1:size(M,2) Mm=M; // copie de la matrice M (toute une procédure en C) Mm(p,:)=[]; // suppression de la p-ième ligne de la matrice Mm Mm(:,q)=[]; // suppression de la q-ième colonne de la matrice Mm inverse(p,q) = (-1)^(p+q)*calcul_determinant(Mm); // dans la case à la p-ième ligne et la q-ième colonne on calcule et on range le coefficient end end inverse = inverse.'/calcul_determinant(M);
Explication de la sélection des cases des matrices :
Mm(_,_)
avant la virgule on sélectionne les lignes, après la virgule on sélectionne les colonnes
exemple:
2:4 -> de la 2e à la 4e (ligne ou colonne selon si c'est à gauche ou à droite de la virgule)
: -> toutes (les lignes ou les colonnes selon si c'est à gauche ou à droite de la virgule)
Le code situé avant la fonction inverse dans ton post présente le calcul de déterminant