IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

inversion de matrice?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 16
    Par défaut inversion de matrice?
    Bonjour,

    Je cherche une nouvelle methode pour inverser une matrice.

    J'utilise actuellement la methode de Gauss-Jordan mais elle donne regulierement des erreurs.

    Si vous voulez je peux vous joindre le code.

  2. #2
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 487
    Par défaut
    peut tu nous le montré ?
    Les pièges de l'Internet
    Helix, réponse à une intrusion


    "La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
    "Si j'ai vu plus loin, c'est en me tenant sur les épaules de géants." Isaac Newton

  3. #3
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 16
    Par défaut ok!
    ok,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    void invert_mat( double **  mat, register int len_i)
    {
    	int i,j,k;
    	double val;
    	make_mat( &mat2, len_i, 2*len_i);
     
    	for(i=0; i<len_i; i++)
    	{
    		for(j=0; j<2*len_i; j++)
    		{
    			if (j<len_i) mat2[i][j]=mat[i][j];
    			else if(i==(j-len_i)) mat2[i][j]= 1;
    			else mat2[i][j]=0;
    		}
    	}
     
    	for(i=0; i<len_i; i++) // ligne
    	{
    		for(j=0; j<2*len_i; j++) mat2[i][j]=mat2[i][j]/mat2[i][i];
    		for(j=0; j<len_i; j++)
    		{
    			if(j!=i)
    			{
    				val = mat2[j][i];
    				for(k=0; k<2*len_i; k++)
    					mat2[j][k] = mat2[j][k] - val * mat2[i][k];
    			}
    		}
    	}
     
     
    	for(i=0; i<len_i; i++)
    		for(j=0; j<len_i; j++) mat[j][i]=mat2[j][i+len_i];
     
    	//free_mat(mat2,len_i,2*len_i);
    }
    Voila!

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Comment est déclarée mat dans un appel invert_mat( mat, len_i) ?
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #5
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 16
    Par défaut
    oui c ca

    [code]invert_mat(A,len);[\code]

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 112
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    include <stdio.h>
    #include <conio.h>
    void main (){
    int a[3][4];
    int x[4][3];
    int sum=0;
    //-------------------- input ------------------------
    printf("\t\t\t  OMAR ABO MAILEQ\n\t\t\t DEALINT WITH ARRAY\n\t\t\tQUDS OPEN UNVERSITY\n");
    for (int i=0;i<3;i++)
    	{
       printf("Enter four values: \n");
       	for (int j=0;j<4;j++)
          	scanf("%d",&a[i][j]);
             }
       printf("\n\n");
             //-------------------- output ------------------------
     
       printf("THE ARRAY VALUS YOU INTERD: \n");
       for (int i=0;i<3;i++)
    	{
    	for (int j=0;j<4;j++)
       printf("%d\t",a[i][j]);
    	printf("\n");}
    //-------------------- sum ---------------------------
    for (int i=0;i<3;i++)
    	{
    	for (int j=0;j<4;j++)
       	sum+=a[i][j];}
    printf("\nSUM OF ELEMENTS IS: %d\n\n",sum);
    //-------------------- make oposit -------------------
    for (int i=0;i<4;i++)
    	{  for (int j=0;j<3;j++)
       		x[i][j]=a[j][i];}
    //---------------------- output again ----------------
    printf("\nNOW WE SWITCH THE ROWS & COLOMONS\n");
    for (int i=0;i<4;i++)
    	{
    	for (int j=0;j<3;j++)
       printf("%d\t",x[i][j]);
    	printf("\n");}
    //-----------------------------------------------------
    printf(" \n\n\t\t\tPRESS ANY KEY TO EXIT...");
    getch();
     
    }
    ]
    toujours le plus simple est le plus efficace

  7. #7
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Non, ce que je veux dire, mat est-elle allouée par un malloc ou définie sous la forme int mat[3][3] par exemple ?
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  8. #8
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par babycrash
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    		for(j=0; j<2*len_i; j++) mat2[i][j]=mat2[i][j]/mat2[i][i];
    Voila!
    Que devient mat2[i][i] quand i == j? Est-ce que le reste des calculs pour cette ligne est correct? (A mon avis, non, et c'est là ton problème).

  9. #9
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 16
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Que devient mat2[i][i] quand i == j? Est-ce que le reste des calculs pour cette ligne est correct? (A mon avis, non, et c'est là ton problème).

    je n'ai effectivement pas cherche a debugger ce code aucune idee en fait de ce que deviens mat2[i][j] qd i==j?
    ce que je sais est que le pgm fonctionne mais me donne des resultats aberrants

    Si l'erreur se trouve la comment puis je la corrigee?

    Merci, Pierre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment inverser une matrice (array)
    Par bonomsoleil dans le forum C
    Réponses: 7
    Dernier message: 10/11/2006, 20h53
  2. Inversion de matrice
    Par mhooreman dans le forum Mathématiques
    Réponses: 6
    Dernier message: 26/10/2006, 18h35
  3. Probleme d'inversion de matrice subtil
    Par babycrash dans le forum C
    Réponses: 2
    Dernier message: 02/08/2006, 17h41
  4. Comment inverser une matrice H(2,2) ?
    Par fafa624 dans le forum Langage
    Réponses: 4
    Dernier message: 29/06/2005, 10h23
  5. Calculer un inverse de matrice avec boost?
    Par Clad3 dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 02/06/2005, 18h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo