Rechercher : dans
Par :

Calcul de l'inverse d'une matrice(urgentsvp)

Dernière réponse le 9 nov 2009 à 12:58:21 Maz, le 1 mar 2007 à 21:36:24 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « calcul de l'inverse d'une matrice(urgentsvp) » dans :
Rotation écran / Affichage inversé (90° ou 180°) VoirSi votre écran est inversé (rotation d'angle 90° voire 180°), ceci est dû : soit aux propriétés de votre carte graphique soit à une mauvaise manipulation sur le clavier Vérifier les propriétés de la carte graphique Cliquer avec le bouton...
Inverser les éléments d'un tableau -Récursivité- VoirVoici une procédure récursive qui permet d’inverser les éléments d’une partie d’un tableau compris entre la position p et n : Procedure Inverser (Var t : Tab; p, n : Integer); Var aux : Real; Begin If p < n Then ...
Concaténer les vecteurs ou les matrices sous Matlab VoirL'opération de concaténation des variables de Matlab consiste à regrouper ces variables dans une seule (vecteur ou matrice). Exemple : |2 3 4| X= |1 2 5| |0 2 7| Avec : |9 6 8| Y= |5 6 2| |3 2 1| Donne...
Télécharger MOREFUNC (Macro complémentaire EXCEL) VoirMorefunc est une macro complémentaire proposant 67 nouvelles fonctions de feuille de calcul pour Excel. Ces fonctions sont compatibles avec Excel 95 à 2007. Elles ne sont pas portables sur d'autres plate-formes que Windows, ni sur d'autres...
VBScript - Les opérateurs VoirQu'est-ce qu'un opérateur? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, ... On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs de...
Tableur - Les feuilles de calcul VoirLa notion de feuille de calcul Un tableur présente les données et les formules sous forme d'un tableau (lignes et colonnes) appelé feuille de calcul. Une feuille de calcul est constitué de lignes (numérotées à l'aide de chiffres) et de colonnes...

1

mounir234, le 1 mar 2007 à 23:15:10
  • +1

Je pourais t'aider si tu veut mais tu doit me dire le fonctionement que tu ve faire parceque je me souvien pas bcp des matrice.
exemple :
l'utilisateure saisi 3 nombre le prog fait la somme et afiche le resultat

Répondre à mounir234

17

s2m3ouia, le 22 mai 2008 à 11:21:05

Salut! j'ai besoin d'écrire une fonction en langage pascal qui calcul l'inverse d'une matrice quelquonce
si tu peut m'aider urgence signalé
merci

Répondre à s2m3ouia

18

Char Snipeur, le 22 mai 2008 à 11:57:48

Tu as l'algo message 4 écris en C++ sans template. Il ne doit pas être trop dur à traduire en pascal ! Salutation ! avant je croyais, maintenant je suis fixé.Jésus Christ
Char Snipeur

Répondre à Char Snipeur

2

Char Snipeur, le 2 mar 2007 à 08:51:21
  • +1

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é.
précision c'est un morceau d'une classe matrice dont un des membre est la fonction inverse(). n et m sont les dimensions lignes colonnes de la matrice, Id() est une méthode qui transfiorme la matrice en matrice identité. __ENVOI() est une macro qui permet de faire des sorties et de la gestion d'erreur. à par ça, je pense que le reste du code na pas besoin d'explications. Salutation !
Char Snipeur

Répondre à Char Snipeur

3

schumi, le 2 mar 2007 à 15:11:58

Salut les gens, j'avoue ne pas avoir tres bien compris le fonctionnement de cet algorithme car mes connaissances en C restent assez elementaire ,alors une solutino plus facile a comprendre serait la bienvenue, merci d'avance , et merci a sniper

Répondre à schumi

4

Char Snipeur, le 2 mar 2007 à 16:29:10
  • +1

C'est du C++ en effet, mais c'est vraiment pas compliquer !
je te fait des simplifications :

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 Salutation !
Char Snipeur

Répondre à Char Snipeur

23

christiankamewe, le 8 nov 2009 à 11:56:28

Salut ; j'ai un problème , j'ai copié ce code et je l'ai testé car j'avais besoin d'une matrice inverse , mais il ne marche pas , l'as tu vérifié ? est il correct? surtout que j'ai copié aussi le code de la matrice identité et il n'était pas bon; as tu un code me permettant de calculer la matrice inverse et le déterminant.

Répondre à christiankamewe

24

Mish, le 9 nov 2009 à 04:52:35

J'ai une solution pour toi, mais il me faudrait ton adresse e-mail, parce que le fichier est une librairie javascript plutôt volumineuse pour être affichée sur le forum. Bref, c'est comme tu veux... C'est un fichier de 56Ko... Plus la documentation de 32Ko...

Répondre à Mish

26

christiankamewe, le 9 nov 2009 à 10:13:18

Merci d'avance,mon adresse email est: christiankamewe@hotmail.com; cette solution est codée en C++?

Répondre à christiankamewe

27

Char Snipeur, le 9 nov 2009 à 10:16:18

Il viens de dire "javascript" je suppose donc que ce n'est pas du C++. Mais je m'avance peut être beaucoup ;-) Salutation ! (il faut bien que vous compreniez que j'ai TOUJOURS raison)
Char Snipeur

Répondre à Char Snipeur

29

christiankamewe, le 9 nov 2009 à 10:31:57

Voici finalement le code de ma classe matrice.h ; il ya une fonction qui s'appelle inverse et c'est elle ki n'est pas ok.

#ifndef matrice_h
#define matrice_h
//#include <cstdlib>
#include <string>
#include <iostream>
#include <fstream>
//#include <limits>
#include <iomanip>
#include <string>
#include <vector>
#include <windows.h>
#include <stdio.h>
#include <algorithm>

using namespace std;

class Matrice
{
int M;
int N;
vector<float> contenu;
public:
// initialisation de la taille de la matrice à zero
Matrice(){
M=0;
N=0;
}
// declaration d'une matrice
Matrice( int lig,int col, float val=0){
M=lig;
N=col;
contenu.resize(M*N,val);
}

// permet de retourner la talle N de la matrice
int getN(){
return N;
}

// permet de retourner la talle N de la matrice
int getM(){
return M;
}

// declaration de l operateur ()
float operator()(int i,int j)const{
return contenu[i*N+j];
}

// declaration de l operateur recuperant sa valeur
float &operator()(int i,int j){
return contenu[i*N+j];
}

// initialisation des elements d'une matrice
void initialize( int lig,int col, float val=0){
M=lig;
N=col;
contenu.clear();
contenu.resize(M*N,val);
}

// operateur d'addition d une matrice par une autre matrice
Matrice operator+( Matrice mat){
//int K=mat.N;
Matrice out=mat;

for(int i=0;i< contenu.size() ;i++)
{
out.contenu[i]=out.contenu[i]+contenu[i];

}
return out;
}

// operateur de division d une matrice par un element
Matrice operator/( float d ){

Matrice out=*this;

for(int i=0;i< contenu.size() ;i++)
{
out.contenu[i]=out.contenu[i]/d;

}
return out;
}

// operateur de multiplication d une matrice par un element
Matrice operator*( float d ){

Matrice out=*this;

for(int i=0;i< contenu.size() ;i++)
{
out.contenu[i]=out.contenu[i]*d;

}
return out;
}

// operateur d' addition d une matrice par un element
Matrice operator+( float d ){

Matrice out=*this;

for(int i=0;i< contenu.size() ;i++)
{
out.contenu[i]=out.contenu[i]+d;

}
return out;
}

// operateur de soustraction d une matrice par un element
Matrice operator-( float d ){

Matrice out=*this;

for(int i=0;i< contenu.size() ;i++)
{
out.contenu[i]=out.contenu[i]-d;

}
return out;
}

//operateur de multiplication d'une matrice par une autre matrice
Matrice operator*( Matrice mat){
int K=mat.N;
Matrice out(M,K);

for(int i=0;i<M;i++)
{
for(int j=0;j<K;j++)
{
for (int l=0;l<N;l++)
{
out(i,j)=out(i,j)+contenu[i*N+l]*mat(l,j);
}
}

}
return out;
}

// Moyenne d'une matrice

vector<float> moyenne(){
vector<float> out(N);
Matrice mat= transpose();
for(int i=0;i<N;i++)
{
for (int l=0;l<M;l++)
{
out[i]=out[i]+ mat(i,l);
}
out[i]=out[i]/M;
}
return out;
}

// affichage d'une matrice
void afficher(){
for(int i=0;i<M;i++)
{
for(int j=0;j<N;j++)
{
printf("%f\t",contenu[i*N+j]);
}
cout<<endl<<endl;
}
}

// transposer d'une matrice
Matrice transpose(){
Matrice out(N,M);

for(int i=0;i<N;i++)
{
for(int j=0;j<M;j++)
{
out(i,j)=contenu[j*N+i];
}

}
return out;
}

// Matrice identite
Matrice identite(){
Matrice out=*this;


if (M==N){

out.initialize(M,N,0.0);
for (int i=0;i<M;i++)

out.contenu[i*(M+1)]=1.0;
}
return out;
}


float trace() const
{
if (M==N){
float tr=0.0;
for (int i=0;i<N;i++)
tr=tr+contenu[i*(1+N)];

return tr;
}
else
return 0;
}

Matrice inverse(){
if (M!=N)
{
cout<<"inversion de matrices non carrées non implémentées!\n"<<endl;
return *this;
}
Matrice MM,M1,Mi1,Minv;// déclaration de matrices de taille identique à celle à inverser
MM=*this;// copie de la matrice à inverser
M1=MM;

Mi1.initialize(M,N,0) ;//Mi1 est maintenant une matrice identité
Minv=Mi1.identite();
for (int i=0;i<M;i++)
{
for (int j=0;j<M;j++)
{
if (MM.contenu[i*N+i]==0)
{
cout<<"inversion pivot GAUSS impossible : division par 0\n"<<endl;
return *this;
}
M1.contenu[i*N+j]=MM.contenu[i*N+j]/MM.contenu[i*N+i];
Mi1.contenu[i*N+j]=Minv.contenu[i*N+j]/(MM.contenu[i*N+i]);
}
MM=M1;
Minv=Mi1;
for (int k=0;k<M;k++)// mise zéros de la colonne
if (k!=i)
for (int j=0;j<M;j++)
{
M1.contenu[k*N+j]=MM.contenu[k*N+j]-MM.contenu[i*N+j]*MM.contenu[k*N+i];
Mi1.contenu[k*N+j]=Minv.contenu[k*N+j]-Minv.contenu[i*N+j]*MM.contenu[k*N+i];
}
MM=M1;
Minv=Mi1;

}
*this=Minv;
return *this;
}

// matrice de wishart d une matrice
Matrice wishart(){
Matrice out=*this;
vector<float>moy=moyenne();
for(int i=0;i<M;i++)
{
for (int j=0;j<N;j++)
{
out(i,j)=out(i,j)-moy[j];
}

}
return out.transpose()*out;

}

// renvoie la valeur d une matrice de wishart
void Towishart(){
*this = wishart();
}

//Centrer les element d une colonne d une matrice
Matrice centrer(){
Matrice out=*this;
vector<float>moy=moyenne();
for(int i=0;i<M;i++)
{
for (int j=0;j<N;j++)
{
out(i,j)=out(i,j)-moy[j];
}

}
return out;

}

// calcul la somme des elements d une matrice
float somme(){
float som=0;
int val=contenu.size();

for(int i=0;i<val;i++)
{
som=som+contenu[i];
}

return som;
}
};
#endif

Répondre à christiankamewe

25

Char Snipeur, le 9 nov 2009 à 09:51:59

Je l'ai déjà utilisé, il fonctionne.
Je viens même de tester sur une matrice 2*2.
Mais une erreur n'est pas à exclure.
Donne ta matrice que je teste. Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

28

christiankamewe, le 9 nov 2009 à 10:20:41

Salut char snipeur , mes matrices sont longues car elle sont de taille 45 *45 ; alors peux tu me passer ton adresse e mail pour que je d'envoi le fichier? écris moi à mon adresse christiankamewe@hotmail.com pour que j'obtienne ton adresse émail ; sinon j'ai eu quelques problèmes avec ton code , tout d'abord sur la matrice identité ; as tu verifié car moi je l'ai exécuté et el n'étais pas bonne , de même je pense que mon problème se situe sur l'initialisation des matrices; si tu as crée une classe matrice alors passe la moi pour que je compare et moi je vais te passer ma classe matrice.h que j'ai crée pour que tu verifies.
merci d'avance

Répondre à christiankamewe

30

Char Snipeur, le 9 nov 2009 à 10:45:24

Ma classe matrice est visible sur mon site (regarde mon profil).
http://pagesperso-orange.fr/celine-julien/julien/prog/matric­eV5.h
Tu devrais pourvoir comparer.
Si tu détecte un problème, dit le moi, ça m'intéresse. Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

31

christiankamewe, le 9 nov 2009 à 11:32:19

Effectivement , en ce qui concerne la fonction Id pour la matrice identité , je me rends compte que tu mets uniquement les éléments de la diagonale à 1.0 et qu'en est il des autres éléments qui doivent passer à 0.

Répondre à christiankamewe

32

Char Snipeur, le 9 nov 2009 à 12:25:16

Oui, j'avais trouvé ce bug, et je l'ai corrigé (il faut que je mette à jour le site). Mais normalement ce n'est pas grave dans l'algorithme d'inversion car les matrice mises à l'identité sont nulles. Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

33

christiankamewe, le 9 nov 2009 à 12:33:08

Ok , deuxiement quand tu fais MM(i,i)==0.0 qu'es ce que cela veut dire? est ce que tu sais regarder mon code, particulierement celui de la fonction inverse et me dire où il peut y avoir problème?

Répondre à christiankamewe

34

 Char Snipeur, le 9 nov 2009 à 12:58:21

Je ne vois pas d'erreur.
Vérifie la composition de tes matrices avant d'entrer dans la première boucle.
As tu testé mon code ?
Comment vérifie tu que ta matrice est bien inversée ? (attentions aux erreurs numériques) Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

5

robertmat, le 25 nov 2007 à 11:53:16

Mais, ou et comment exécuter le programme (Si c'est sur C, comment y proceder) sinon ou voir les résultats.

Répondre à robertmat

6

Char Snipeur, le 26 nov 2007 à 08:38:58

La question était sur l'algorithme d'une inversion de matrice pas le code en entier. Pour afficher et exécuté, il faut faire le programme qui va autour, donc voir sur autre messages.
Précision sur l'algorithme présenté ici, il s'agit de l'inversion par pivot de Gauss. La méthode consiste à prendre deux matrice, celle à inverser MM et une matricve identité Mi1. Ensuite, on applique différentes opérations à la matrice à inverser afin de la faire devenir identité. En même temps, les mêmes opérations sont appliquées à la matrice identité. à la fin, la matrice initialement identité est l'inverse cherché.
Salutation ! Quand on sait pas, on touche pas !JBT
Char Snipeur

Répondre à Char Snipeur

7

manoush, le 29 nov 2007 à 21:43:25

Svp g besoin pour m'aider à réaliser un programme en pascal qui affiche et calcul le determinant d'une matrice. je sais pas comment on peut afficher la matrice. merci d'avance

Répondre à manoush

8

Char Snipeur, le 30 nov 2007 à 12:11:33

Pour afficher en pascal, Writeln.
Toujours est il que ce genre de question doit être ouverte dans un nouveau message.
Merci Salutation ! Quand on sait pas, on touche pas !JBT
Char Snipeur

Répondre à Char Snipeur

9

gsn-mao, le 4 déc 2007 à 20:01:46

Qu'est-ce que vous voulez dire au début:
if (m!=n)?
vous utilisé plusieurs fois! "!" est-ce que c'est factoriel?

Répondre à gsn-mao

10

Char Snipeur, le 5 déc 2007 à 09:11:13

Hum... une petite recherche sur le langage C/C++ te permettrai de répondre à cette question.
le ! est tout simplement le not logique. Et encore, là ce n'est pas '!', mais '!=', c'est à dire différent.
a!=b est équivalent à !(a==b) Salutation ! Quand on sait pas, on touche pas !JBT
Char Snipeur

Répondre à Char Snipeur

11

ninaaa, le 12 déc 2007 à 21:02:09

Svp j ai besoin d'aide je ss encore debutante g besoin de resoudre cet algo : ecrire un algo qui permet de calculer le produit C(n,n) de deux matrices carré A(n,n) et B(n,n) sachant que : Ci,j=la somme de k=1 jusqu'à n ai,k*bk,j svp c urgent!!!!!!!!!!!!!

Répondre à ninaaa

22

Mish, le 4 fév 2009 à 04:08:27

Voilà comment calculer un produit matriciel de type Amn * Bnp. C'est en JavaScript, c'est-à-dire un language pour faire des pages web... Il n'y a rien de plus simple. Vous copiez-collez dans bloc-notes, et vous enregistrez... Testé sous IE7. Désolé pour l'indentation irrégulière.

<html><body><textarea cols="40" rows="20" id="test"></textarea><script language="javascript">

function MISHTeK_Maths_Matrix_MatrixProduct(a,b)
{
dataA=MISHTeK_Maths_Matrix_Props(a);
if(dataA==-1)
return -1;
dataB=MISHTeK_Maths_Matrix_Props(b);
if(dataB==-1)
return -1;
if(dataA[0]!=dataB[1]) //Matrix product requieres this to be false, since sizes would be mismatching.
return -1;
var buffer=MISHTeK_Maths_Matrix_Create(dataA[1],dataB[0]);
for(j=0;j<dataA[1];j++) //Matrix a's height (for row)
for(i=0;i<dataB[0];i++) //Matrix b's width (for column)
{
//i and j specifies the location in the new matrix, while k is acting as Sigma's (sum operator) iterator.
buffer[i][j]=0;
for(k=0;k<dataA[0];k++) //Matrix a's width or b's height (same by definition)
buffer[i][j]+=a[i][k]*b[k][j];
}
return buffer;
}
function MISHTeK_Maths_Matrix_Format(mtrx)
{
data=MISHTeK_Maths_Matrix_Props(mtrx);
if(data==-1)
return -1;
var space="";
for(i=0;i<data[2]-1;i++)
space+=" ";
var buffer="";
for(j=0;j<data[1];j++)
{
buffer+="[";
for(i=0;i<data[0];i++)
{
buffer+=space.substring(0,data[2]-String(mtrx[j][i]).length)+mtrx[j][i];
if(i+1<data[0])
buffer+=" ";
}
buffer+="]";
if(j+1<data[1])
buffer+="\r\n";
}
return buffer;
}
function MISHTeK_Maths_Matrix_Create(w,h,v)
{
var buffer=new Array(h);
for(i=0;i<h;i++)
{
buffer[i]=new Array(w);
for(j=0;j<w;j++)
buffer[i][j]=v;
}
return buffer;
}
function MISHTeK_Maths_Matrix_Props(mtrx)
{
if(!MISHTeK_Maths_Matrix_IsValidMatrix(mtrx))
return -1;
var buffer=new Array(mtrx[0].length,mtrx.length,0); //width, height, max column width
for(i=0;i<mtrx.length;i++)
for(j=0;j<mtrx[0].length;j++)
if(String(mtrx[i][j]).length>buffer[2])
buffer[2]=String(mtrx[i][j]).length;
return buffer;
}
function MISHTeK_Maths_Matrix_IsValidMatrix(mtrx)
{
if(mtrx.length==undefined)
return false;
for(i=0;i<mtrx.length;i++)
{
if(mtrx[i].length!=mtrx[0].length)
return false;
for(j=0;j<mtrx[0].length;j++)
if(mtrx[i][j]==undefined || String(mtrx[i][j])=="")
return false;
}
return true;
}

function Test()
{
var Mtrx1=new Array(new Array(1,2),new Array(3,4));
var Mtrx2=new Array(new Array(5,6),new Array(7,8));
var Mtrx3=MISHTeK_Maths_Matrix_MatrixProduct(Mtrx1,Mtrx2);
document.getElementById("test").value=MISHTeK_Maths_Matrix_Format(Mtrx3);
}
</script></body></html>

Et voilà.

Pour faire fonctionner, remplacer la section en gras par votre matrice. Le premier new Array est nécessaire, il consitue l'ensemble des lignes de la matrice. Pour trois lignes, il faut mettre trois new Array() dans le new Array principal. Puis, il faut mettre des chiffres dans chaque new Array secondaire. Par défaut, il a a une matrice de 2x2 qui s'afficherait comme ceci :

[1  2]
[3  4]


La réponse du calcul s'affiche dans le textarea. Désolé encore une fois pour le code bâtard, mais je l'ai copié d'une de mes librairies de calcul matriciel, et s'aurait été vraiment trop long...

Répondre à Mish

12

yakalilo, le 22 fév 2008 à 14:18:22
  • +1

Bonjour
voila , un tres bon site pour les gens qui manipule les matrice
http://wims.unicaen.fr/...

Répondre à yakalilo

13

LUKA, le 29 avr 2008 à 19:15:51

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;
}

Répondre à LUKA

14

Char Snipeur, le 30 avr 2008 à 08:39:50

Pourquoi réécrire ça ? Salutation ! avant je croyais, maintenant je suis fixé.Jésus Christ
Char Snipeur

Répondre à Char Snipeur

15

mimi, le 11 mai 2008 à 23:50:18
  • +1

Slt S.V.P vus puvez m'aider pour le calcule ledeterminant d'une matricz carée c'est pourresudre un ystemed'equation avecla methode decramer .merci à tousle monde

Répondre à mimi

16

DARK ANGEL, le 17 mai 2008 à 19:52:06

Slt ,svp si vous pouver m'aider de me donner l'algorithme en pascal qui me permet de calculer le determinant d'une matrice n*n (je veut pas l'idee mais le programm complet svp)

merci à tous

Répondre à DARK ANGEL

19

salam, le 29 mai 2008 à 18:30:44

Svp g besoin de l'algo qui fais l'inverce d'une matrice mais l'algo non pa le programme car je ne metrise pa le c++ urgentttttttttt

Répondre à salam

21

auto, le 11 déc 2008 à 00:46:47

C simple ta le program , prend n'importe kel matrice inversible ( det#0 ) , une matrice 2*2 c simple ....remplace dans le program que ta (mm en c c pa grave ).... (é sur une feuille bien sur ) suit le étape par étape é là tu poura déduir l'algorythme

Répondre à auto

20

yascsine, le 20 jun 2008 à 12:09:54

Svp je cherche un programme de calcul matricielle tel que le produit matricielle et le calcul de l'inverse d'une matrice qui soit adaptable avec ma calculatrice c'est une casio graph25 merci pour votre aide

Répondre à yascsine