salut! j'ai besoin d'écrire une fonction en langage C qui calcul l'inverse d'une matrice quelquonce
je n'arrive pas a trouvé l'algorithme
si quelq'un peut m'aider
urgence signalé
merci
template <class T>MATRIX<T>& MATRIX<T>::inverse()
{
if (m!=n)
{
__ENVOI("inversion de matrices non carré non implémenter!\n");
return *this;
}
MATRIX<T> MM(n),M1(n),Mi1(n),Minv(n);
MM=*this;
M1=MM;
Mi1.Id();
Minv=Mi1;
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
if (MM(i,i)==0)
{
__ENVOI("inversion pivot GAUSS impossible : division par 0\n");
return *this;
}
M1(i,j)=MM(i,j)/MM(i,i);
Mi1(i,j)=Minv(i,j)/(MM(i,i));
}
MM=M1;
Minv=Mi1;
for (int k=0;k<n;k++)// mise zéros de la colonne
if (k!=i)
for (int j=0;j<n;j++)
{
M1(k,j)=MM(k,j)-MM(i,j)*MM(k,i);
Mi1(k,j)=Minv(k,j)-Minv(i,j)*MM(k,i);
}
MM=M1;
Minv=Mi1;
/*for (int k=0;k<n;k++)//mise à zéro de la ligne. ap essai : pas la peine
if (k!=i)
for (int j=0;j<n;j++)
{
M1(j,k)=MM(j,k)-MM(i,j)*MM(i,k);
Mi1(j,k)=Minv(j,k)-Minv(i,j)*MM(i,k);
}
MM=M1;
Minv=Mi1;*/
}
*this=Minv;
return *this;
}
ça inverse n'importe quel matrice carré.
MATRIX& MATRIX::inverse()
{
if (m!=n)
{
perror("inversion de matrices non carré non implémenter!\n");
return *this;
}
MATRIX MM(n),M1(n),Mi1(n),Minv(n);// déclaration de matrices de taille identique à celle à inverser
MM=*this;// copie de la matrice à inverser
M1=MM;
Mi1.Id();//Mi1 est maintenant une matrice identité
Minv=Mi1;
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
if (MM(i,i)==0)
{
perror("inversion pivot GAUSS impossible : division par 0\n");
return *this;
}
M1(i,j)=MM(i,j)/MM(i,i);
Mi1(i,j)=Minv(i,j)/(MM(i,i));
}
MM=M1;
Minv=Mi1;
for (int k=0;k<n;k++)// mise zéros de la colonne
if (k!=i)
for (int j=0;j<n;j++)
{
M1(k,j)=MM(k,j)-MM(i,j)*MM(k,i);
Mi1(k,j)=Minv(k,j)-Minv(i,j)*MM(k,i);
}
MM=M1;
Minv=Mi1;
}
*this=Minv;
return *this;
}Voilà. La il est difficile de faire plus simple. C'est vraiment du basique ! Dit ce que tu ne comprend pas, ça ira mieux
[1 2] [3 4]
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.
Le fait d'être membre vous permet d'avoir des options supplémentaires.
Combien cela coûte-t-il au total ? Quelles aides apportent l'état et les acteurs du marché pour alléger cette charge non choisie ? Tous les détails sur Commentçamarche.net.