Resolution d'un systeme d'equation

Fermé
alibabapro - Modifié par crapoulou le 29/04/2016 à 09:05
alibabapro Messages postés 23 Date d'inscription lundi 18 avril 2016 Statut Membre Dernière intervention 23 novembre 2016 - 30 avril 2016 à 10:50
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

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
29 avril 2016 à 21:19
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
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
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101 > alibabapro
30 avril 2016 à 10:05
Il 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
alibabapro Messages postés 23 Date d'inscription lundi 18 avril 2016 Statut Membre Dernière intervention 23 novembre 2016 > Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023
30 avril 2016 à 10:50
Bonjour 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