Inverse d'une matrice

farah_87 Messages postés 6 Statut Membre -  
tatou_38 Messages postés 1220 Date d'inscription   Statut Membre Dernière intervention   -
je cherche le code source de calcul de l'inverse d'une matrice. svp je veux qu'il soit en algorithmique je connai aucun langage de programmation. c'est urgent.
merci d'avance
Configuration: Windows XP
Internet Explorer 6.0

12 réponses

  1. tatou_38 Messages postés 1220 Date d'inscription   Statut Membre Dernière intervention   121
     
    De mémoire, l'inverse d'une matrice n'est pas la permutation des colonnes en ligne et vice et versa (ça c'est la matrice dite transposée), mais la matrice qui multipliée par la première donne la matrice unité, à l'image de l'inverse d'un nombre qui est 1/nombre !
    Et là ce n'est plus du tout le même algorithme !!
    Il te faut déjà calculer le déterminant de la matrice.
    Tous les calculs doivent se faire en nombres réels
    Bonne chance !
    7
  2. khadija
     
    salut ..
    je veux ecrire un prog pascal qui transforme cette matrice ( matrice carée ! )en sa transposée par rapport à la deuxième diagonale
    voir l'exemple :
    7 2 1 3........................ 5 0 4 3
    0 5 9 4........................ 6 8 9 1
    2 0 8 0 ........................3 0 5 2
    1 3 6 5 ........................1 2 0 7
    3
    1. tatou
       
      et le program ou ?
      0
    2. tatou_38 Messages postés 1220 Date d'inscription   Statut Membre Dernière intervention   121
       
      3 ans après, khadija a sans doute perdu le programme ...
      0
  3. adamlouay Messages postés 2 Statut Membre 1
     
    BONSOIR A TOUS

    y a t-il parmis vous quelqu'un qui peut m'aider a resoudre un probleme de script en shell bash le jeux du pendu merci d'avance
    1
    1. Doctor C Messages postés 630 Date d'inscription   Statut Membre Dernière intervention   400
       
      euh, tu es un peu hors contexte si tu veux mon avis...

      tu devrais créer une nouvelle discussion!

      cette discussion est au sujet du calcul de l'inverse d'une matrice...
      0
  4. farah_87 Messages postés 6 Statut Membre 1
     
    merci pour vos reponses mais j'arrive pas encore a ecrire l'algorithme svp si vous l'avez envoie le.c'est un DL que je dois rendre demain
    1
    1. siioo
       
      t'es un marrant toi un peu non ?
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. tatou_38 Messages postés 1220 Date d'inscription   Statut Membre Dernière intervention   121
     
    1. N'attends peut-etre pas du forum de faire tes devoirs à ta place, ce ne serait pas pédagogique !
    2. Pourquoi attendre le dernier jour des vacances pour faire son DL ?

    Je te répodrai bien, mais je ne sais plus où sont mes bouquins de math et je ne me rappèle plus les détails de la chose.

    Mais tu es sauvée, il y a un outil que tu peux utiliser, tu le trouveras à https://www.google.fr/?gws_rd=ssl . Il te permetra sans aucun doute de te montrer comment inverser une matrice !

    1
  7. angela
     
    Pour calculer l'inverse d'une matrice par la methode de gauss on utilise des combinaisons linéaires entre les lignes uniquement, les colonnes uniques ou tous les deux ensemble????
    Merci
    1
  8. khadija
     
    salut ..
    je veux ecrire un prog pascal qui transforme cette matrice ( matrice carée ! )en sa transposée par rapport à la deuxième diagonale
    voir l'exemple :
    7 2 1 3 5 0 4 3
    0 5 9 4 6 8 9 1
    2 0 8 0 =====> 3 0 5 2
    1 3 6 5 1 2 0 7
    1
  9. eclatente
     
    bsr;
    bein ma question est la suivante.
    existe t il des fonction qui nous montre comment inversé une matrice mais avec le langage c++ builder.
    merci de m'y rependre.
    1
  10. dobilise
     
    salut a tous
    SVP j'ai besoin d'un programme qui effectue l'inversion d'une matrice d'urgence
    si ya quelqu'un qui peut m'aider alors voila mon email ali_00731@hotmail.com
    1
    1. tatou_38 Messages postés 1220 Date d'inscription   Statut Membre Dernière intervention   121
       
      dis-nous ce que tu as fait et on t'aidera à avancer !
      0
  11. prog.pas
     
    programme qui calcule la matrice inverse en pascal
    1
    1. khiter zakaria
       
      Salut "prog.pas" voici un programme pascal qui effectue l'inversion d'une matrice

      PROGRAM INV_MAT_Z++;

      USES Crt;

      TYPE Matrice=ARRAY[1..10,1..10] OF REAL;

      VAR MatA,MatB,MatC:Matrice;
      N:BYTE;
      OK:BOOLEAN;

      PROCEDURE Intro(VAR N:BYTE;VAR Mat:Matrice);
      VAR i,j:BYTE;
      BEGIN
      CLRSCR;
      TEXTCOLOR(YELLOW);
      WRITE('Nombre de lignes:');READLN(N);
      FOR i:=1 TO N DO
      FOR j:=1 TO N DO
      BEGIN
      {GOTOXY(3,4);CLREOL;
      WRITE('Introduisez A(',i,',',j,'): ');
      READLN(Mat[i,j]);}
      Mat[i,j]:=RANDOM(100);{Pour tester}
      END;
      END;

      PROCEDURE Attente;
      VAR St:STRING;
      BEGIN
      TEXTCOLOR(LIGHTRED);
      St:='Une touche pour continuer.';
      GOTOXY(40-LENGTH(St) DIV 2,25);WRITE(St);READKEY;
      END;

      PROCEDURE Affiche(S:STRING;N:BYTE;Mat:Matrice);
      VAR i,j:BYTE;
      BEGIN
      CLRSCR;
      TEXTCOLOR(LIGHTGREEN);
      WRITELN(S);
      FOR i:=1 TO N DO
      BEGIN
      FOR j:=1 TO N DO
      WRITE(Mat[i,j]:9:4);
      WRITELN;
      END;
      END;

      PROCEDURE Somme(N:BYTE;MatA,MatB:Matrice;VAR MatC:Matrice);
      VAR i,j:BYTE;
      BEGIN
      FOR i:=1 TO N DO
      FOR j:=1 TO N DO
      MatC[i,j]:=MatA[i,j]+MatB[i,j];
      END;

      PROCEDURE Difference(N:BYTE;MatA,MatB:Matrice;VAR MatC:Matrice);
      VAR i,j:BYTE;
      BEGIN
      FOR i:=1 TO N DO
      FOR j:=1 TO N DO
      MatC[i,j]:=MatA[i,j]-MatB[i,j];
      END;

      PROCEDURE Produit(N:BYTE;MatA,MatB:Matrice;VAR MatC:Matrice);
      VAR i,j,k:BYTE;
      BEGIN
      FOR i:=1 TO N DO
      FOR j:=1 TO N DO
      BEGIN
      MatC[i,j]:=0;
      FOR k:=1 TO N DO
      MatC[i,j]:=MatC[i,j]+MatA[i,k]*MatB[k,j];
      END;
      END;

      PROCEDURE Inverse(N:BYTE;A:Matrice;VAR X:Matrice;VAR OK:BOOLEAN);
      VAR Id,E,B:Matrice;
      Old,New:REAL;
      Cpt:BYTE;

      FUNCTION Norme_Ligne(N:BYTE;B:Matrice):REAL;
      VAR Tmp,Tmp2:REAL;
      i,j:BYTE;
      BEGIN
      Tmp:=0;
      FOR i:=1 TO N DO
      BEGIN
      Tmp2:=0;
      FOR j:=1 TO N DO
      Tmp2:=Tmp2+ABS(B[i,j]);
      IF Tmp2>Tmp THEN Tmp:=Tmp2;
      END;
      Norme_Ligne:=Tmp
      END;

      FUNCTION Norme_Colonne(N:BYTE;B:Matrice):REAL;
      VAR Tmp,Tmp2:REAL;
      i,j:BYTE;
      BEGIN
      Tmp:=0;
      FOR i:=1 TO N DO
      BEGIN
      Tmp2:=0;
      FOR j:=1 TO N DO
      Tmp2:=Tmp2+ABS(B[j,i]);
      IF Tmp2>Tmp THEN Tmp:=Tmp2;
      END;
      Norme_Colonne:=Tmp
      END;

      PROCEDURE Init(N:BYTE;A:Matrice;VAR B:Matrice;VAR OK:BOOLEAN);
      VAR i,j:BYTE;
      T:REAL;
      BEGIN
      FILLCHAR(Id,SizeOf(Id),0);
      T:=Norme_Ligne(N,A)*Norme_Colonne(N,A);
      IF ABS(T)>1E-10 THEN BEGIN
      OK:=TRUE;
      FOR i:=1 TO N DO
      BEGIN
      Id[i,i]:=1;
      B[i,i]:=A[i,i]/T;
      FOR j:=i+1 TO N DO
      BEGIN
      B[i,j]:=A[j,i]/T;
      B[j,i]:=A[i,j]/T;
      END;
      END;
      END
      ELSE OK:=FALSE;
      END;

      PROCEDURE Calcule_E;
      VAR C:Matrice;
      BEGIN
      Produit(N,B,A,C);
      Difference(N,Id,C,E);
      END;

      PROCEDURE Calcule_B;
      VAR C,D:Matrice;
      BEGIN
      Somme(N,Id,E,D);
      Produit(N,D,B,C);
      B:=C
      END;

      BEGIN
      Init(N,A,B,OK);
      IF NOT OK THEN WRITELN('Matrice nulle!')
      ELSE BEGIN
      Calcule_E;
      Old:=Norme_Ligne(N,E);
      New:=Old;
      Cpt:=0;
      WHILE NOT ((New<1E-6) OR ((New>Old) AND (Cpt>5))) DO
      BEGIN
      Old:=New;
      Calcule_B;
      Calcule_E;
      New:=Norme_Ligne(N,E);
      INC(Cpt);
      END;
      OK:=TRUE;
      IF New<1E-6 THEN X:=B
      ELSE OK:=FALSE
      END;
      END;

      BEGIN
      Intro(N,MatA);
      Affiche('A=',N,MatA);
      Attente;
      Inverse(N,MatA,MatB,OK);
      IF OK THEN BEGIN
      Affiche('Inverse de A=',N,MatB);
      Attente;
      Produit(N,MatA,MatB,MatC);
      Affiche('Produit des matrices inverses=',N,MatC);
      Attente;
      END
      ELSE BEGIN
      CLRSCR;
      WRITELN('Pas d''inverse!');
      END;
      END.
      0
    2. naziha64
       
      ce programme se bloque dans le cas ou le déterminant est nul ; en principe il doit afficher un message pas d'inverse.
      0
  12. rimeuse
     
    Bonjour,
    Je voudrais avoir l'inverse d'une matrice mais cette fois au sens propre c'est à dire avoir une symétrie contraire d'une matrice dans Matlab mais sans utliser les fonctions for.... il faut juste utiliser des affectations. Merci
    1
  13. grad
     
    Pour avoir l'inverse de la matrice il faut que les lignes soit des colonnes et vice-versa;
    Pour ça il faut:
    1-Lire le tableux dynamique A à 2 dimension tel que les lignes=les colonnes et chaque cellule représente un élément de la matrice
    2-B <= A
    3-Pour i <= 1 à N faire : *N est le nombre de colonnes=le nombres de lignes
    Pour j <= 1 à N faire :
    A[j,i] <= B[i,j];
    écrire(A);
    Fin.
    0