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 :

résolution systeme linéaire Ax=B


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 29
    Par défaut résolution systeme linéaire Ax=B
    Bonjour à tous,


    Voila je dois coder la méthode de gauss et de jordan pour la résolution de systéme linéaire Ax=B. Pour rappel, le but de ces deux méthodes est de réduire la matrice A (initialement aléatoire) à une matrice plus facile à résoudre. Pour gauss, la matrice devra être supérieure (= uniquement des zéros dans la partie inférieure) tandis que pour Jordan , elle devra être diagonale (= des zéros dans la partie inférieure et supérieure). Ce qui me pose un probléme, c'est plus la réduction des matrices que la résolution . J'ai réussi à faire la méthode de Gauss, enfin je pense que ça marche mais par contre pour Jordan j'ai plus de mal, soit j'ai une matrice inférieure, soit supérieur mais j'arrive pas à avoir les deux. Je pense qu'à partir de Gauss, on devrait pouvoir arriver à jordan.
    Voici l'algo de Gauss :

    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
     
     
     
    void gauss(double **A,double **V,int n) {
      double **X;
      double x[19],p,s;int i,j,k;
      double tmp;
      double c;
      int y;
     
    	for(i=0;i<n;i++){
    		if(i<n-1){  //  permet d'éviter de sortir du tableau  lor d'une eventuelle permutation 
    		if (A[i][i]==0){  
    		//permutation de deux lignes pour éviter un pivot nul
    				 for(y=0;y<n;y++){
    						tmp = A[i][y];
    						A[i][y] =A[i+1][y];
    						A[i+1][y] =tmp;
     
    						tmp = V[i][0];
    						V[i][0] = V[i+1][0];
    						V[i+1][0] = tmp;
    					}
    				}
    			}
     
    			p= A[i][i];
    			for(j=i+1;j<n;j++){ 
    				  if (p !=0){		 // évite un pivot nul et donc la division par zéro	
    					 c=A[j][i]/p;
    				  }else{ 
    			  	     c=0;
    			 	  }
    				for(k=i;k<n;k++){
    					A[j][k]=A[j][k] - c * A[i][k];
    				}
    				V[j][0]=V[j][0] - c * V[i][0];
    			}
    		}
     
        affiche_matrice(A,n);
     
    }



    merci d'avance

    Flo62

  2. #2
    Membre éprouvé Avatar de siegfried64
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 78
    Par défaut
    Citation Envoyé par flo62 Voir le message
    Ce qui me pose un probléme, c'est plus la réduction des matrices que la résolution . J'ai réussi à faire la méthode de Gauss, enfin je pense que ça marche mais par contre pour Jordan j'ai plus de mal, soit j'ai une matrice inférieure, soit supérieur mais j'arrive pas à avoir les deux.
    Evidemment, il faut d'abord vérifier si la matrice est diagonalisable, ce qui n'est pas le cas pour toute les matrices.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 29
    Par défaut
    merci, mais comment vérifie t on cela car je n'ai pas du tout penser a faire cette vérification .

    merci

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 80
    Par défaut
    Citation Envoyé par siegfried64 Voir le message
    Evidemment, il faut d'abord vérifier si la matrice est diagonalisable
    Vraiment n'importe quoi.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 29
    Par défaut
    En même temp, dans le projet que je dois faire, il parle pas du tout de çà et en plus je l'ai pa vue en cour donc bon je pense que ce n'est pas essentiel . Je préfére résoudre mon probléme par rapport à la méthode de Jordan et voir ma méthode de Gauss si elle est correctement implémentée .

    merci d'avance

    Flo62

  6. #6
    Membre confirmé
    Homme Profil pro
    Collégien
    Inscrit en
    Mars 2003
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Mars 2003
    Messages : 192
    Par défaut
    C'est le déterminant qui doit être non nul qu'il faut vérifier.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 29
    Par défaut
    ok mais j'aimerais savoir si ma version pour la méthode de gauss est valable et comment je pourrais implémenter la méthode de jordan ?

    merci

    flo62

  8. #8
    Membre expérimenté
    Profil pro
    Dev
    Inscrit en
    Décembre 2007
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Décembre 2007
    Messages : 191
    Par défaut
    Citation Envoyé par Heimdall Voir le message
    C'est le déterminant qui doit être non nul qu'il faut vérifier.
    pourquoi, pour qu'une matrice soit diagonalisable oO ? Le déterminant non nul permet de savoir si la matrice est inversible, ce qui permet de savoir si la méthode de Gauss peut etre appliquée. (c-à-d s'il y a une unique solution au problème, il peut y en avoir aucune, il peut y en avoir une infinité)

Discussions similaires

  1. [Débutant] Résoudre un system linéaire, coefficient non constant
    Par MohEllayali dans le forum MATLAB
    Réponses: 1
    Dernier message: 02/06/2010, 15h01
  2. Bibliothèque résolution système linéaire
    Par jexxo dans le forum Bibliothèques
    Réponses: 5
    Dernier message: 11/05/2010, 18h13
  3. Réponses: 6
    Dernier message: 31/05/2009, 14h25
  4. Résolution système linéaire mais avec paramètre
    Par feynman dans le forum Scilab
    Réponses: 7
    Dernier message: 03/10/2007, 06h55

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