Resolution d'un systeme d'equation

Bonjour, je veux utiliser la boucle << switch case>> pour résoudre un système d’équation à 2, 3, 4, 5 inconnus. Pouvez-vous m'aider? Voici mon code a 2 inconnus.

#include <stdlib.h>
#include <iostream>
#include <conio.h>
#include <iomanip>
using namespace std;

int main()
{

double matrice[2][3]={2,3,6,7,6,2};
double coefficient,x,y;
int i;
int j;
i=0;
j=0;

cout << "Résolution d'un système de 2 équations a trois inconnues\n";
cout << "Première équation, entrez en ordre respectif x,y et la constante\n";
cin >> matrice[0][0]>>matrice[0][1]>>matrice[0][2];
cout << "Seconde équation, entrez en ordre respectif x,y et la constante\n";
cin >> matrice[1][0]>>matrice[1][1]>>matrice[1][2];

coefficient=(-1*matrice[1][0]/matrice[0][0]);

i=0;
for(i;i<=2;i++)
{
matrice[1][i]=(coefficient*matrice[0][i])+matrice[1][i];               
}

y=matrice[1][2]/matrice[1][1];
x=(matrice[0][2]-(matrice[0][1]*y))/matrice[0][0];
cout << "X est egal a " << setw(10) << x << "\n";
cout << "Y est egal a " << setw(10) << y << "\n";
system("PAUSE");
return 0;
}


Merci pour votre aide!!!!

1 réponse

  1. Bonjour,

    Pour écrire un code résolvant les systèmes d'équations à N inconnues, il te faut tout d'abord connaître une des méthodes possibles.
    Le cas de 2 inconnus est assez simple, pour plus d'inconnues quelle méthode connais-tu (cela dépend de ton niveau en math) ?
    Ensuite il te faudra 'oublier' l'utilisation d'un tableau de tableaux car en C++ les dimensions seraient obligatoirement fixes, hors tu désires les choisir dynamiquement. Le code devrait utiliser par exemple des vector<vector<double>>, ensuite le code sera composé de nombreuses boucles for() imbriquées en fonction de la méthode choisie.
    0
    1. Bonjour! Le principe vector<vector<double>> imbriques avec la boucle for() je n'ai pas compris.Pouvez-vous m'expliquer avec un exemle?
      Merci!!
      0
    2. @alibabaproIl faut commencer par choisir une méthode de résolution (par substitution, par combinaisons linéaire, par inversion de matrice, par diagonalisation de matrice, ...), alors ?
      Ensuite il faut aussi connaître le C++.
      Si on a besoin d'une matrice N*M avec N et M connu dynamiquement, on doit utiliser un tableau dynamique (appelés vector<> en C++) ou le simuler via un simple buffer (façon C).
      #include <vector>
      using namespace std;
      // définition d'une matrice N*M
      vector<vector<double>> matrice(N); // nb de lignes
      for ( auto& v : matrice ) v.resize(M); // nb de colonnes pour chaque ligne
      // utilisation de la matrice, p.e somme de tous les éléments
      for ( int i=0 ; i < N ; ++i )
      for ( int j=0 ; j < M ; ++j )
      somme += matrice[i][j]; // même notation qu'un tableau de tableaux à l'utilisation
      0
    3. @DalfabBonjour merci pour ta reponse, mais dans mon exemple si je choisie par exmpele la methode de diagonalisation de matrice, que dois-je faire?Merci d'advance!!!
      0