Resolution système linéaire => matrice inv
Fermé
Rvouille
Messages postés
1
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
13 décembre 2004
-
13 déc. 2004 à 15:33
doudou - 9 avril 2010 à 15:13
doudou - 9 avril 2010 à 15:13
A voir également:
- Resolution système linéaire => matrice inv
- Restauration systeme windows 10 - Guide
- Système d'exploitation 32 bits processeur x64 ✓ - Forum Windows
- Comment refaire le système d'un ordinateur - Guide
- Resolution 1366x768 - Forum TV & Vidéo
- Erreur système zoom lumix ✓ - Forum Panasonic
4 réponses
salut
si c'est une équation de la forme AX=B avec avec A et B des matrices
sur matlab tu peux utiliser la fonction linsolve
par exemple : resoudre AX=B
X=linsolve(A,B) et tu auras la solution.
coordialement.
si c'est une équation de la forme AX=B avec avec A et B des matrices
sur matlab tu peux utiliser la fonction linsolve
par exemple : resoudre AX=B
X=linsolve(A,B) et tu auras la solution.
coordialement.
Salut,
tu veux le faire avec un langage particulier ton programme?
Si t'as pas de préférence et que tu peux, utilises Matlab, il y a une fonction prédéfinie qui le fait.
A bon entendeur,
Tchussy
tu veux le faire avec un langage particulier ton programme?
Si t'as pas de préférence et que tu peux, utilises Matlab, il y a une fonction prédéfinie qui le fait.
A bon entendeur,
Tchussy
24 sept. 2009 à 20:28
il vous faudra juste créer un fichier mat.txt et vect.txt pour rentrer vos valeurs de matrice voilà
peut etre que ca aidera quelqun
#include<stdio.h>
#define max 500
main()
{
int i,j, k, g, dim;
float inten[max];
float pivot, det, somme, somme_gauss, intenstot, Requiv;
float init_mat[max][max], gauss_mat[max][max], vecteur[max], vect_gauss[max];
//----------initialisation matrice----------------------
FILE *mat, *vect;
mat=fopen("mat.txt", "r");
vect=fopen("vect.txt", "r");
printf("\ndimension de la matrice: ");
scanf("%d", &dim);
for (i=0; i<dim; i++)
{
for (j=0; j<dim; j++)
{
fscanf(mat, "%f", &init_mat[i][j]);
}fscanf(vect, "%f", &vecteur[i]);
}
printf("\n------ matrice initiale ---------\n\n");
for(i=0;i<dim;i++)
{
for(j=0;j<=dim;j++)
{
if (j==dim) {init_mat[i][j]=vecteur[i];printf("|\t%.3f\n", init_mat[i][j]);}
else printf("%.3f\t", init_mat[i][j]);
}
//printf("|\t%.2f\n", vecteur[i]);
}
//----------initialisation matrice transformee ----------------------
for(i=0;i<dim;i++)
{
for(j=0;j<=dim;j++)
{
gauss_mat[i][j]=init_mat[i][j];
if (j==dim) gauss_mat[i][j]=vecteur[i];
}//vect_gauss[i]=vecteur[i];
}
//------------- elimination de gauss --------------------
printf("\n");
for (k=1; k<dim; k++)
{ gauss_mat[k-1][k-1]=init_mat[k-1][k-1];
if (gauss_mat[k-1][k-1]==0)
{
for(i=k; i<dim; i++)
{ if (gauss_mat[k-1][k-1]==0)
{
if (init_mat[i][k-1]!=gauss_mat[k-1][k-1])
{
for(j=0; j<=dim; j++)
{
gauss_mat[k-1][j]=init_mat[i][j];
gauss_mat[i][j]=init_mat[k-1][j];
init_mat[i][j]=gauss_mat[i][j];
init_mat[k-1][j]=gauss_mat[k-1][j];
}
}
}
}
}
if (gauss_mat[k-1][k-1]!=0)
{
for(i=k;i<dim;i++)
{
for(j=0;j<=dim;j++)
{
pivot=-init_mat[i][k-1]/init_mat[k-1][k-1];
gauss_mat[i][j]=((pivot)*init_mat[k-1][j])+init_mat[i][j];
//if (j==dim) vect_gauss[i]=(pivot*vecteur[i-1])+vecteur[i];
}
}
if (k<dim-1)
{
for(i=0;i<dim;i++)
{
for(j=0;j<=dim;j++)
{
init_mat[i][j]=gauss_mat[i][j];
}
}//vecteur[i]=vect_gauss[i];
}
}
}
printf("\n------ matrice transformee ---------\n\n");
for(i=0;i<dim;i++)
{
for(j=0;j<=dim;j++)
{
if (j==dim) printf("|\t%.3f\n", gauss_mat[i][j]);
else printf("%.3f\t", gauss_mat[i][j]);
}
}
//----------- Resolution systeme d'équation ----------------------
for (i=dim-1; i>=0; i--)
{somme=0.0;
for (j=i; j<dim; j++)
{
if (i<dim-1)
{
if (j==i) somme=somme;
else
{
somme_gauss=(gauss_mat[i][j]*inten[j])+somme;
somme=somme_gauss;
}
}
}
if (i==dim-1) inten[i]=gauss_mat[i][dim]/gauss_mat[i][i];
inten[i]=(gauss_mat[i][dim]-somme)/gauss_mat[i][i];
}
for (i=0; i<dim; i++)
{
printf("\nX%d: %.3f", i+1, inten[i]);
}
getchar();
getchar();
}
24 sept. 2009 à 20:28
il vous faudra juste créer un fichier mat.txt et vect.txt pour rentrer vos valeurs de matrice voilà
peut etre que ca aidera quelqun
#include<stdio.h>
#define max 500
main()
{
int i,j, k, g, dim;
float inten[max];
float pivot, det, somme, somme_gauss, intenstot, Requiv;
float init_mat[max][max], gauss_mat[max][max], vecteur[max], vect_gauss[max];
//----------initialisation matrice----------------------
FILE *mat, *vect;
mat=fopen("mat.txt", "r");
vect=fopen("vect.txt", "r");
printf("\ndimension de la matrice: ");
scanf("%d", &dim);
for (i=0; i<dim; i++)
{
for (j=0; j<dim; j++)
{
fscanf(mat, "%f", &init_mat[i][j]);
}fscanf(vect, "%f", &vecteur[i]);
}
printf("\n------ matrice initiale ---------\n\n");
for(i=0;i<dim;i++)
{
for(j=0;j<=dim;j++)
{
if (j==dim) {init_mat[i][j]=vecteur[i];printf("|\t%.3f\n", init_mat[i][j]);}
else printf("%.3f\t", init_mat[i][j]);
}
//printf("|\t%.2f\n", vecteur[i]);
}
//----------initialisation matrice transformee ----------------------
for(i=0;i<dim;i++)
{
for(j=0;j<=dim;j++)
{
gauss_mat[i][j]=init_mat[i][j];
if (j==dim) gauss_mat[i][j]=vecteur[i];
}//vect_gauss[i]=vecteur[i];
}
//------------- elimination de gauss --------------------
printf("\n");
for (k=1; k<dim; k++)
{ gauss_mat[k-1][k-1]=init_mat[k-1][k-1];
if (gauss_mat[k-1][k-1]==0)
{
for(i=k; i<dim; i++)
{ if (gauss_mat[k-1][k-1]==0)
{
if (init_mat[i][k-1]!=gauss_mat[k-1][k-1])
{
for(j=0; j<=dim; j++)
{
gauss_mat[k-1][j]=init_mat[i][j];
gauss_mat[i][j]=init_mat[k-1][j];
init_mat[i][j]=gauss_mat[i][j];
init_mat[k-1][j]=gauss_mat[k-1][j];
}
}
}
}
}
if (gauss_mat[k-1][k-1]!=0)
{
for(i=k;i<dim;i++)
{
for(j=0;j<=dim;j++)
{
pivot=-init_mat[i][k-1]/init_mat[k-1][k-1];
gauss_mat[i][j]=((pivot)*init_mat[k-1][j])+init_mat[i][j];
//if (j==dim) vect_gauss[i]=(pivot*vecteur[i-1])+vecteur[i];
}
}
if (k<dim-1)
{
for(i=0;i<dim;i++)
{
for(j=0;j<=dim;j++)
{
init_mat[i][j]=gauss_mat[i][j];
}
}//vecteur[i]=vect_gauss[i];
}
}
}
printf("\n------ matrice transformee ---------\n\n");
for(i=0;i<dim;i++)
{
for(j=0;j<=dim;j++)
{
if (j==dim) printf("|\t%.3f\n", gauss_mat[i][j]);
else printf("%.3f\t", gauss_mat[i][j]);
}
}
//----------- Resolution systeme d'équation ----------------------
for (i=dim-1; i>=0; i--)
{somme=0.0;
for (j=i; j<dim; j++)
{
if (i<dim-1)
{
if (j==i) somme=somme;
else
{
somme_gauss=(gauss_mat[i][j]*inten[j])+somme;
somme=somme_gauss;
}
}
}
if (i==dim-1) inten[i]=gauss_mat[i][dim]/gauss_mat[i][i];
inten[i]=(gauss_mat[i][dim]-somme)/gauss_mat[i][i];
}
for (i=0; i<dim; i++)
{
printf("\nX%d: %.3f", i+1, inten[i]);
}
getchar();
getchar();
}