A voir également:
- Pivot de gauss en c
- Méthode de gauss en c - Meilleures réponses
- Gauss c - Meilleures réponses
- Pivot de gauss matlab ✓ - Forum - Matlab
- Pivot de gauss partiel en langage c - Forum - C
- Pivot de gauss matlab ✓ - Forum - Matlab
- Pivot de gauss Matlab - Forum - Matlab
- Programme matlab du pivot de gauss - Forum - Matlab
11 réponses
rudy
si tu as trouvé la resolution de systeme d'equation par le pivaot de gauss veux tu bien me l'envoyer a mon mail
merci.
merci.
juanpablo
- Messages postés
- 142
- Date d'inscription
- mercredi 30 mai 2007
- Statut
- Membre
- Dernière intervention
- 16 juin 2008
salut
exemple de mise en oeuvre de la methode de gauss . attention les indices des tableaux vont de 1 à n (comme en math)
a : la matrice du système b : le second membre du système n : l'ordre de la matrice.
renvoie la valeur 1 si la matrice est numériquement inversible et la valeur 0 sinon ;
quand la valeur renvoyée est 1, la solution du système se trouve dans le tableau b.
NMAX est égale à la dimension maximale de la matrice +1 ; N2MAX =NMAX+1
int sl_gauss(double a[NMAX][NMAX],double b[NMAX],int n)
{
int i,j,k,l,err;
double max,pivot,coef,s;
double t[NMAX][N2MAX];
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
t[i][j]=a[i][j];
t[i][n+1]=b[i];
}
err=1;
k=1;
while (err==1 && k<n)
{
max=fabs(t[k][k]);
l=k;
for(i=k+1;i<=n;i++)
if(max<fabs(t[i][k]))
{
max=fabs(t[i][k]);
l=i;
}
if(max!=0)
{
if(l!=k)
for(j=k;j<=n+1;j++)
{
pivot=t[k][j];
t[k][j]=t[l][j];
t[l][j]=pivot;
}
pivot=t[k][k];
for(i=k+1;i<=n;i++)
{
coef=t[i][k]/pivot;
for(j=k+1;j<=n+1;j++)
t[i][j] -= coef*t[k][j];
}
}
else err=0;
k++;
}
if(t[n][n]==0) err=0;
if(err==1)
{
b[n]=t[n][n+1]/t[n][n];
for(i=n-1;i>=1;i--)
{
s=t[i][n+1];
for(j=i+1;j<=n;j++)
s-=t[i][j]*b[j];
b[i]=s/t[i][i];
}
}
return(err);
}
//------------------------------------------------------------------------------
exemple de mise en oeuvre de la methode de gauss . attention les indices des tableaux vont de 1 à n (comme en math)
a : la matrice du système b : le second membre du système n : l'ordre de la matrice.
renvoie la valeur 1 si la matrice est numériquement inversible et la valeur 0 sinon ;
quand la valeur renvoyée est 1, la solution du système se trouve dans le tableau b.
NMAX est égale à la dimension maximale de la matrice +1 ; N2MAX =NMAX+1
int sl_gauss(double a[NMAX][NMAX],double b[NMAX],int n)
{
int i,j,k,l,err;
double max,pivot,coef,s;
double t[NMAX][N2MAX];
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
t[i][j]=a[i][j];
t[i][n+1]=b[i];
}
err=1;
k=1;
while (err==1 && k<n)
{
max=fabs(t[k][k]);
l=k;
for(i=k+1;i<=n;i++)
if(max<fabs(t[i][k]))
{
max=fabs(t[i][k]);
l=i;
}
if(max!=0)
{
if(l!=k)
for(j=k;j<=n+1;j++)
{
pivot=t[k][j];
t[k][j]=t[l][j];
t[l][j]=pivot;
}
pivot=t[k][k];
for(i=k+1;i<=n;i++)
{
coef=t[i][k]/pivot;
for(j=k+1;j<=n+1;j++)
t[i][j] -= coef*t[k][j];
}
}
else err=0;
k++;
}
if(t[n][n]==0) err=0;
if(err==1)
{
b[n]=t[n][n+1]/t[n][n];
for(i=n-1;i>=1;i--)
{
s=t[i][n+1];
for(j=i+1;j<=n;j++)
s-=t[i][j]*b[j];
b[i]=s/t[i][i];
}
}
return(err);
}
//------------------------------------------------------------------------------
wahid
je souhaite avoir la programmation du pivot de gauss partiel en langage c. C'est une méthode de résolution des matrices
merci d'avance.
merci d'avance.
Amoureux3
- Messages postés
- 940
- Date d'inscription
- vendredi 9 avril 2004
- Statut
- Membre
- Dernière intervention
- 5 mai 2007
suffit de déterminer les étapes de la solution mathématique avec ses cas particuliers (exemple le calcul du déterminant), puis préciser les structures que tu dois utiliser (tableau 2d, matrice, variables, indices...)
te reste ensuite que le plus simple, l'interprétation de la solution mathématique en programme informatique..
[ Ton Doux Visage ]
te reste ensuite que le plus simple, l'interprétation de la solution mathématique en programme informatique..
[ Ton Doux Visage ]
rudy
Merci pour ta reponce
mais le probleme et que je ne c pas le resoudre mathematiquement
je c qu'il y a le choix du pivot mais comment le determiner?
la trangulation de la matrice mais qu'elle sont les etapes?
et enfin la resolution.
en realité mon projet est a faire ezn ADA et donc si j'avais un algo ou un cour de maths assez bien expliqué je commencerai sans pb.
merci.
mais le probleme et que je ne c pas le resoudre mathematiquement
je c qu'il y a le choix du pivot mais comment le determiner?
la trangulation de la matrice mais qu'elle sont les etapes?
et enfin la resolution.
en realité mon projet est a faire ezn ADA et donc si j'avais un algo ou un cour de maths assez bien expliqué je commencerai sans pb.
merci.
JSS
- Messages postés
- 3745
- Date d'inscription
- jeudi 22 avril 2004
- Statut
- Contributeur
- Dernière intervention
- 17 décembre 2004
Bonjour ou Bonsoir,
Recherche google : pivot gauss explication :
http://www.dil.univ-mrs.fr/~garreta/generique/sujets/PB01.pdf
++
JSS
Recherche google : pivot gauss explication :
http://www.dil.univ-mrs.fr/~garreta/generique/sujets/PB01.pdf
++
JSS
slash
bonjour juanpablo!j'ai regardé ton programme et je ne comprends pas comment fonctionne ta boucle "tant que" while.est ce que ce serait pour proceder a l'echange entre les equations pour la suite des calculs?et a quoi correspond "err"?
08031984
Il y'a un problème des pivots dans les système matricielle quelle est la meilleure méthode pour résoudre ce problème
Wolf
Salut, ça fait longtemps que j'ai travaillé la dessus , j'espere que cela t'aidra
bonne chance!!
#include <iostream.h>
int main(){
int n;
double e[11][10];
double s[10];
cout<<"programme du pivot de gauss\nCombien dequations ?\nN= ";
cin>>n;
cout<<"\n";
for (int i=0;i<n;i++){
cout<<"equation "<<i<<"\n";
for (int p=0;p<n;p++){
cout<<"v"<<p<<" = ";
cin>>e[p][i];
}
cout<<"\n";
cout<<"equation "<<i<<" = ";
cin>>e[n][i];
cout<<"\n";
}
// on a saisi les facteurs des equations ds e[][]
int y=0;
double var1=0,var2=0;
double temp;
int a,t;
for(int x=0;x<n-1;x++){
for(a=1+x;a<n;a++){
temp=e[x][a];
for (t=x;t<n+1;t++){
e[t][a]=e[t][a]*e[x][x]-e[t][x]*temp;
/// triangulation du systeme.
}
}
}
//Passons au remplacage..
int af;
s[n-1]=e[n][n-1]/e[n-1][n-1];
e[n][n-1]=0;
e[n-1][n-1]=0;
for (int ligne=1;ligne<=n;ligne++){
for (int sol=2;sol<=n;sol++){
e[n-ligne][n-sol]*=s[n-ligne];
e[n][n-sol]-=e[n-ligne][n-sol];
e[n-ligne][n-sol]=0;
}
s[n-(ligne+1)]=e[n][n-(ligne+1)]/e[n-(ligne+1)][n-(ligne+1)];
}
// Resolution..
// Affichage..
for (af=0;af<n;af++){cout<<" var "<<af<<" = "<<s[af];}
cin>>n;
return 0;}
bonne chance!!
#include <iostream.h>
int main(){
int n;
double e[11][10];
double s[10];
cout<<"programme du pivot de gauss\nCombien dequations ?\nN= ";
cin>>n;
cout<<"\n";
for (int i=0;i<n;i++){
cout<<"equation "<<i<<"\n";
for (int p=0;p<n;p++){
cout<<"v"<<p<<" = ";
cin>>e[p][i];
}
cout<<"\n";
cout<<"equation "<<i<<" = ";
cin>>e[n][i];
cout<<"\n";
}
// on a saisi les facteurs des equations ds e[][]
int y=0;
double var1=0,var2=0;
double temp;
int a,t;
for(int x=0;x<n-1;x++){
for(a=1+x;a<n;a++){
temp=e[x][a];
for (t=x;t<n+1;t++){
e[t][a]=e[t][a]*e[x][x]-e[t][x]*temp;
/// triangulation du systeme.
}
}
}
//Passons au remplacage..
int af;
s[n-1]=e[n][n-1]/e[n-1][n-1];
e[n][n-1]=0;
e[n-1][n-1]=0;
for (int ligne=1;ligne<=n;ligne++){
for (int sol=2;sol<=n;sol++){
e[n-ligne][n-sol]*=s[n-ligne];
e[n][n-sol]-=e[n-ligne][n-sol];
e[n-ligne][n-sol]=0;
}
s[n-(ligne+1)]=e[n][n-(ligne+1)]/e[n-(ligne+1)][n-(ligne+1)];
}
// Resolution..
// Affichage..
for (af=0;af<n;af++){cout<<" var "<<af<<" = "<<s[af];}
cin>>n;
return 0;}