Rechercher : dans
Par :

Resolution système linéaire => matrice inv

Dernière réponse le 24 sep 2009 à 20:28:14 Rvouille, le 13 déc 2004 à 15:33:36 
 Signaler ce message aux modérateurs

Bonjour,
Je suis actuellement en galère sur un programme et je demande donc aux bonnes âmes de me donner un petit coup de pouce si c'est dans le moyen bien sur (ne vous tuez pas à la tache pour moi quand meme!!) !!! En effet je ssouhaite réaliser un programme permettant d'inverser une matrice 3x3 ceci dans le but de résoudre un système linéaire. Si quelqu'un peut m'aider ce serai vraiment sympa

Merci d'avance.

Have a RideStyle

Meilleures réponses pour « Resolution système linéaire => matrice inv » dans :
Système d'exploitation VoirDescription du système d'exploitation Pour qu'un ordinateur soit capable de faire fonctionner un programme informatique (appelé parfois application ou logiciel), la machine doit être en mesure d'effectuer un certain nombre d'opérations...
DNS (Système de noms de domaine) VoirQu'appelle-t-on DNS ? Chaque ordinateur directement connecté à internet possède au moins une adresse IP propre. Cependant, les utilisateurs ne veulent pas travailler avec des adresses numériques du genre 194.153.205.26 mais avec un nom de domaine...
Introduction aux systèmes AS/400 VoirIntroduction à l’AS/400 AS/400 est une gamme de mini-ordinateurs IBM apparue début février 1987. Dans l’informatique de gestion d’IBM, il existe trois gammes d’ordinateurs : les gros systèmes (appelés MainFrame), ES/9000, sous le système...

1

Mattiou, le 13 déc 2004 à 16:30:35

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

Répondre à Mattiou

2

meky, le 5 oct 2007 à 16:02:43

Bonjour,
je souhaite avoir une méthode de résolution standard des matrices 4x4

Répondre à meky

3

l, le 21 mar 2008 à 15:08:16

Khjgif

Répondre à l

4

rpgff1, le 24 sep 2009 à 20:28:13

Salut à tous, voici un programme crée par mes soins pour une résolution de système linéaire, avec matrice carrée de dimension n*n, voila, c un programme langage C....
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();
}

Répondre à rpgff1

5

 rpgff1, le 24 sep 2009 à 20:28:14
  • +1

Salut à tous, voici un programme crée par mes soins pour une résolution de système linéaire, avec matrice carrée de dimension n*n, voila, c un programme langage C....
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();
}

Répondre à rpgff1