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 pivot de Gauss


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Par défaut Résolution pivot de Gauss
    bonjour est-ce que quelqu'un pourrait m'aider svp mon programme ne fonctionne pas le traitemen n'est pas bon mais je vois pas où

    merci de votre aide.

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    #define N 50
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
     
    main()
    {
     
     //déclaration des variables
     
     int n,i,j,k;
     float A[N][N],B[N],X[N],C;
     
     printf("\n\t\t    !!!!RESOLUTION D'UN SYSTEME CRAMER-GAUSS!!!!\n");
     
     //nombre d'inconnu
     
     do
     {
      printf("\n\nQuel est le nombre d'inconnu (0<N<50)? ");
      scanf("%d",&n);
     }
     while((n<=0)||(n>N));
     
     //acquisition de la matrice A
     
     system("cls");
     printf("\n\t\t    !!!!RESOLUTION D'UN SYSTEME CRAMER-GAUSS!!!!\n");
     printf("\n\n\tSaisie des coefficients de la matrice A\n");
     printf("\nL'‚l‚ment diagonal doit ˆtre diff‚rent de 0\n\n");
     for(i=0;i<n;i++)
     {
      for(j=0;j<n;j++)
      { 
      // do
      //{
        printf("Entrez le coefficient A %d %d: ",i+1,j+1);
        scanf("%f",&A[i][j]);
      // }
       //while(A[i][i]==0);
      }
     }
     printf("\n\nMatrice A:\n\n\t");
     for(i=0;i<n;i++)
     {
      for(j=0;j<n;j++)
      {
       printf("%5.2f ",A[i][j]);
      }
      printf("\n\t");
     }
     getche();
     
     //acquisition du second membre 
     
     system("cls");
     printf("\n\t\t    !!!!RESOLUTION D'UN SYSTEME CRAMER-GAUSS!!!!\n");
     printf("\n\n\tSaisie des coefficients du second membre B\n\n");
     printf("\nLe nombre d'‚l‚ments est: %d\n\n",n);
     for(i=0;i<n;i++)
     {
      printf("Entrez le coefficient B %d: ",i+1);
      scanf("%f",&B[i]);
     }
     printf("\n\nSecond membre B:\n\n\t");
     for(i=0;i<n;i++)
     {
      printf("%5.2f\n\t",B[i]);
     }
     getche();
     
     //affichage de votre système
     
     system("cls");
     printf("\n\t\t    !!!!RESOLUTION D'UN SYSTEME CRAMER-GAUSS!!!!\n");
     printf("\n\nMatrice A:\n\n\t");
     for(i=0;i<n;i++)
     {
      for(j=0;j<n;j++)
      {
       printf("%5.2f ",A[i][j]);
      }
      printf("\n\t");
     }
     printf("\n\nSecond membre B:\n\n\t");
     for(i=0;i<n;i++)
     {
      printf("%5.2f\n\t",B[i]);
     }
     printf("\n\nInconnu X:\n\n\t");
     for(i=0;i<n;i++)
     {
      printf(" X %d\n\t",i+1);
     }
     getche();
     
     //algorithme de Gauss
     
     system("cls");
     printf("\n\t\t    !!!!RESOLUTION D'UN SYSTEME CRAMER-GAUSS!!!!\n");
     for(i=0;i<n;i++)
     {
      C=A[i][i];
     
      for(j=0;j<n;j++)
      {
       A[i][j]=A[i][j]/C;
     
      }
      B[i]=B[i]/C;
      for(k=i+1;k<n;k++)
      {
       for(j=0;j<n;j++)
       {
        A[k][j]=A[k][j]-A[k][i]*A[i][j];
     
       }
       B[k]=B[k]-A[k][i]*B[i];
      }
     }
     printf("\nVoici votre sytŠme selon l'agorithme de Gauss");
     printf("\n\nMatrice A:\n\n\t");
     for(i=0;i<n;i++)
     {
      for(j=0;j<n;j++)
      {
       printf("%5.2f ",A[i][j]);
      }
      printf("\n\t");
     }
     printf("\n\nSecond membre B:\n\n\t");
     for(i=0;i<n;i++)
     {
      printf("%5.2f\n\t",B[i]);
     }
     printf("\n\nInconnu X:\n\n\t");
     for(i=0;i<n;i++)
     {
      printf(" X %d\n\t",i+1);
     }
     getche();
    }

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    Salut, bienvenu sur le forum. Je n'ai pas beaucoup de temps immédiatement pour me plonger dans ton problème mais

    1) le prototype de la fonction main() est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int main(void)
    {
      blabla;
      return EXIT_SUCCESS;
    }
    avec la constante EXIT_SUCCESS (ou EXIT_FAILURE) dans stdlib.h

    2) pour faire du calcul scientifique, oublie les floats et utilise les doubles !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Par défaut
    merci de ton aide, mais ça ne résoud pas mon problème de traitement
    l'info c'est pas mon truc pff

    quelqu'un aurait il une idée?
    merci.

  4. #4
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Hormis des warnings à la construction, le programme a l'air de fonctionner. Quel résultat attendais tu ?
    Voilà ce que j'obtiens.

    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
                        !!!!RESOLUTION D'UN SYSTEME CRAMER-GAUSS!!!!
     
    Matrice A:
     
             2.00  3.00
             4.00  5.00
     
    Second membre B:
     
             6.00
             4.00
     
    Inconnu X:
     
             X 1
             X 2
    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
     
                        !!!!RESOLUTION D'UN SYSTEME CRAMER-GAUSS!!!!
     
    Voici votre sytSme selon l'agorithme de Gauss
     
    Matrice A:
     
             1.00  1.50
             0.00  1.00
     
    Second membre B:
     
             3.00
             0.80
     
    Inconnu X:
     
             X 1
             X 2

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Par défaut
    mais dans ton exemple ça veut dire que x2=0.80 c'est le cas?

  6. #6
    Invité(e)
    Invité(e)
    Par défaut
    Oui, effectivement, si on compte à la main, on se rend compte de l'erreur. C'est plutôt un problème algorithmique.

    Je pense que le problème vient de l'étape, où on cherche à annuler les coefficients sous la diagonale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      for(k=i+1;k<n;k++)
      {
       for(j=0;j<n;j++)
       {
        A[k][j]=A[k][j]-A[k][i]*A[i][j];
        /* Ici, on utilise et modifie les coeff de A à chaque passage
            alors qu'on souhaite juste soustraire une ligne de la matrice à une autre.*/
     
       }
       B[k]=B[k]-A[k][i]*B[i];
      }



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
       for(k=i+1;k<n;k++)
      {
         C = A[k][i];
       for(j=0;j<n;j++)
       {
        /*A[k][j]=A[k][j]-A[k][i]*A[i][j];*/
        A[k][j]=A[k][j]-C*A[i][j];
       }
       /*B[k]=B[k]-A[k][i]*B[i];*/
       B[k]=B[k]-C*B[i];
      }
    Avec cette modif, pour les même données, j'ai ce résultat :
    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
                        !!!!RESOLUTION D'UN SYSTEME CRAMER-GAUSS!!!!
     
    Voici votre sytSme selon l'agorithme de Gauss
     
    Matrice A:
     
             1.00  1.50
            -0.00  1.00
     
    Second membre B:
     
             3.00
             8.00
     
    Inconnu X:
     
             X 1
             X 2

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Par défaut
    ah merci bien, j'aurai jamais trouvé...
    je vais essayer de continuer pour trouver les solutions maintenant encore merci.

  8. #8
    Invité(e)
    Invité(e)
    Par défaut
    De rien.

    Merci de penser au tag

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

Discussions similaires

  1. [Débutant] Code Pivot de Gauss
    Par didier35 dans le forum MATLAB
    Réponses: 1
    Dernier message: 27/03/2014, 22h27
  2. programme pivot de Gauss
    Par azertysq123 dans le forum MATLAB
    Réponses: 7
    Dernier message: 17/11/2010, 18h39
  3. Explication de pivot de gauss
    Par bilou_2007 dans le forum Mathématiques
    Réponses: 6
    Dernier message: 01/03/2007, 22h33
  4. [Pivot de Gauss] probleme si pivot nul
    Par jmjmjm dans le forum Mathématiques
    Réponses: 33
    Dernier message: 02/02/2007, 15h47
  5. [LG]Matrice et pivot de Gauss
    Par Loopingus dans le forum Langage
    Réponses: 3
    Dernier message: 16/03/2005, 17h26

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