OPÉRATION SUR MATRICE

Kornferki Messages postés 17 Date d'inscription jeudi 25 mars 2004 Statut Membre Dernière intervention 6 décembre 2004 - 16 juin 2004 à 14:44
cs_kabrel2 Messages postés 1 Date d'inscription mardi 22 mars 2011 Statut Membre Dernière intervention 6 avril 2011 - 6 avril 2011 à 22:13
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/23467-operation-sur-matrice

cs_kabrel2 Messages postés 1 Date d'inscription mardi 22 mars 2011 Statut Membre Dernière intervention 6 avril 2011
6 avril 2011 à 22:13
salut
j'ai pas un bon niveau en c++ ::alors:: personne peut me dire comment utiliser le code " svp c urgent"
je veux faire l'inverse d'une matrice" en nombre complexe "
Arcidiavolo Messages postés 1 Date d'inscription mercredi 4 novembre 2009 Statut Membre Dernière intervention 24 mars 2011
24 mars 2011 à 10:37
En fait pour la fonction reduction de matrice, il suffit de changer la ligne 125 de:
if(jsn-1)js++;
en
if(jsm-1)js++;
le m etant l'index de la colonne.
cs_snoopy77 Messages postés 7 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 22 août 2009
22 août 2009 à 19:14
Bonjour,

Merci beaucoup pour le partage de cette source, quelques fonctions m'ont bien aidées dans l'un de mes projets. J'ai aussi une remarque a ajouter sur l'une des fonctions en plus de celles déjà données.

Donc faire simple voici un résumé des bugs dans la version courante :

1) Dans la fonction inverse:

>> Supprimer la ligne 197: libererMatrice(inv_A);

En effet la fonction est de type Matrice et donc dois renvoyer un element de ce type en l'occurence 'inv_A' qui viens d'être calculé.

2) Dans la fonction multiplication, le fait d'avoir l'étoile sans espace autour ne me pose pas de problème. A voir suivant le compilateur qui peut être peu confondre avec un pointeur en effet.

3) J'ai du ajouter des conditions dans la fonction de reduction de matrice " Matrice Mat_sousMat(Matrice A,int ib,int jb)" ligne 115. J'ai eu des problème en voulant retirer la derniére ligne/colonne.

J'ai pas le temps de refaire l'analogie avec le code de Bonac pour expliquer la correction (a confirmer quand même), cependant je vous fournis la version actuel de mon code (en anglais) avec lequel je n'ai pas de souci:

Matrix matrixReduc(Matrix A,int ib,int jb){
int i,j;
int is=0,js=0;
int n=A->n;
int k=A->k;
Matrix B;

B=createMatrix(n-1,k-1);

/* Extreme condition */
if(ib==A->n-1){n--;}
if(jb==A->k-1){k--;}

for(i=0;i<n;i++)
{
if(i==ib && ib!=k)
{
i++;
}
for(j=0;j<k;j++)
{
if(j==jb && jb!=n)
{
j++;
}

B->P[is][js]=A->P[i][j];
js++;
}
js=0;
is++;
}
return B;
}

Merci encore pour le code.

SnOoPy
didou4545 Messages postés 2 Date d'inscription vendredi 23 mai 2008 Statut Membre Dernière intervention 30 avril 2009
30 avril 2009 à 14:43
Il y a une faute dans cette fonction
 
 # Matrice Mat_invMat(Matrice A){/*renvoie la matrice inverse de A*/
# double det;
# Matrice coA,t_coA,inv_A;
# det=Mat_determinant(A);
# if(det==0)return NULL;
# coA=Mat_coMat(A);
# t_coA=Mat_transpose(coA);
# inv_A=Mat_mul(t_coA,1/det);
# libererMatrice(coA);
# libererMatrice(t_coA);
# libererMatrice(inv_A);    // ici vous libérer la matrice " inv_A " puis vous la retourné tout de suite !!
# return inv_A;
# }   

 
Gaston0510 Messages postés 4 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 10 décembre 2010
20 mars 2008 à 16:53
merci Bonac c un enorme travail !!
enfet c presque notr sujet mai seulement avec les bibliotheque stdio.h, string.h, conio.h ..
et dans mon projet on ns demande de faire un quadrillage double lor d l'affichage des matrices ..
Alors peut tu m'aider ou m montrer comment faire ce quadrillage ?
Amanobuo Messages postés 65 Date d'inscription mardi 24 février 2004 Statut Membre Dernière intervention 11 décembre 2006
2 avril 2007 à 23:31
Merci ! c'est exactement ce que je cherchais !
J'était frustre de pas y arriver pour la multiplications ! Mais je me suis trop embrouillé avec ces math !
regisbeg Messages postés 1 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 9 novembre 2005
9 nov. 2005 à 18:23
Pour la multiplication, remplacer dans la fonction de multiplication des matrices C->P[i][j] += A->P[i][k] * B->P[k][j]; en mettant un espace de chaque coté de la multiplication sans quoi le compilateur considère B->P[k][j] comme un pointeur.
Byron202 Messages postés 2 Date d'inscription mardi 26 avril 2005 Statut Membre Dernière intervention 6 juin 2005
6 juin 2005 à 16:30
Il suffit en fait de mettre le libererMatrice "APRES" le return detA.
En effet, dans le code, on libère la mémoire avant de retourner la valeur d'où le bug et donc le calcul du determinant déconne.
Byron202 Messages postés 2 Date d'inscription mardi 26 avril 2005 Statut Membre Dernière intervention 6 juin 2005
6 juin 2005 à 09:54
Je confirme un bug dans la partie inversion de matrice.
Multiplication, j'ai pas encore vérifié.
zbigzo Messages postés 4 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 19 février 2005
19 janv. 2005 à 18:06
c bien ce que t'as fai je te souhai 1 bon continuat°
Cyber_steph Messages postés 2 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 30 juillet 2004
30 juil. 2004 à 10:59
bonjour,

j'ai voulut utiliser cette source mais apparement la multiplication et l'inverssion ne marche pas.

C bien dommage car ce code m'interessait bc.

bye
bonac Messages postés 5 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 25 novembre 2004
6 juil. 2004 à 16:04
J'ai pour abitude de travaillé à partir de l'indexe 0, mes boucles for s'arrètes à n-1. Il y a donc bien n valeur dans [0; n-1]. En d'autres termes pour une matrice n,m avec les paramètre n,m fournie en entrée les boucle parcourirons [0,n-1](n éléments) et [0,m-1] (m éléments), ont aura bine une matrice n,m.
Kornferki Messages postés 17 Date d'inscription jeudi 25 mars 2004 Statut Membre Dernière intervention 6 décembre 2004
16 juin 2004 à 14:44
Je ne suis pas sur que la dimension des matrices soit vraiment de n et m. Si dans tes boucles tu vas de 0 a n ou m, les dimensions seraient plutot de n+1 a m+1, isnt it ???

Que se passe t il si ta matrice n est pas carree et que tu calcules le determinant ?
Rejoignez-nous