begin process at 2012 02 11 19:59:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Algorithme

 > 

Maths

 > 

Multiplication de 2 matrices


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Multiplication de 2 matrices

mercredi 2 mai 2007 à 22:15:04 | Multiplication de 2 matrices

developvbdebut

Membre Club

Bonjour tout le monde

J'ai un probleme avec un algo pour la multiplication de 2 matrices.

Voici le code

Je ne m'ai que la fonction qui fais le calcul.

int multipli_matrice(int m1[a][b], int m2[c][d])
{
 int i,j,k;     
int m3[4][4];
puts("Multiplication de M1 par M2\n");


    for(i=0;i<4;i++)
    {
   
    puts("\n");
         for(j=0;j<4;j++)
         {

         for(k=0;k<4;k++)
         {
         m3[i][j]+=m1[i][k]* m2[k][j];
         }
         }
         }


puts("Resultat M3\n");


         for(i=0;i<4;i++)
         {
        
         puts("\n");               
              for(j=0;j<4;j++)
              {
               printf(" %d",m3[i][j]);   
                  
              }           

              }
 return m3[i][j];
}



 Voici ce qu'il affiche


calcul matriciel

Voici la matrice M1


 22 69 79

 47 35 80

 99 75 21

 15 45 35

Voici la matrice M2


 6 66 42 79

 12 9 1 12

 52 65 41 96

Multiplication de M1 par M2

Resultat M3


 2013333596 10452 4151473 12361

 2013277465 4153696 2306510 2013343894

 2945 2013420787 6280 2013516642

 -934662623 1491182894 151146694 144309605


Ce resultat est faut.

Je ne voix pas ce qu'il faut changer.

A+

mercredi 2 mai 2007 à 22:47:32 | Re : Multiplication de 2 matrices

acx01b

salut for(j=0;j<4;j++) { m3[i][j] = 0; for(k=0;k<4;k++) { m3[i][j]+=m1[i][k]* m2[k][j]; } } } si tu ne précises pas: les variables et tableaux alloués dans la pile (variables temporaires) ne sont pas initialisés les variables globales le sont (avec des 0)
jeudi 3 mai 2007 à 08:25:48 | Re : Multiplication de 2 matrices

developvbdebut

Membre Club

Bonjour tout le monde

C'est presque résolut, mais j'ai encore un probleme.

Voici le code.


#include <stdio.h>
#include <stdlib.h>

#define a 4
#define b 3
#define c 3
#define d 4



int multipli_matrice(int m1[a][b], int m2[c][d])
{
 int i,j,k;     
int m3[4][4];
puts("Multiplication de M1 par M2\n");


    for(i=0;i<4;i++)
    {
   
  
         for(j=0;j<4;j++)
         {
          m3[i][j]=0;
         for(k=0;k<4;k++)
         {
         m3[i][j]+=m1[i][k]* m2[k][j];
         }
         }
         }


puts("Resultat M3\n");


         for(i=0;i<4;i++)
         {
        
         puts("\n");               
              for(j=0;j<4;j++)
              {
               printf(" %d",m3[i][j]);   
                  
              }           

              }
 return m3[i][j];
}

void entre_donnee_mat()
{
   
    int mu[a][b];
   
   
    int md[c][d];
   
   
    int i,j,l,m,v,w;
    int partSize   = (10 == RAND_MAX) ?        1 : 1 + (RAND_MAX - 10)/(10+1);
   int maxUsefull = partSize * 10 + (partSize-1);
   int draw;
   srand(time(NULL));


     for(i=0;i<a;i++)
     {
         
         for(j=0;j<b;j++)
         {
           draw = draw = (int)(10.00*(double)rand()/(double)RAND_MAX); 
           mu[i][j]= draw;
             
         }              
     }
    
     for(l=0;l<c;l++)
     {
          for(m=0;m<d;m++)
          {
               draw = draw = (int)(10.00*(double)rand()/(double)RAND_MAX);
               md[l][m]= draw;
              
               }
              
               }
    
     puts("Voici la matrice M1\n");
    
     for(v=0;v<4;v++)
     {
    
     puts("\n");
         
          for(w=0;w<3;w++)
               {
               printf(" %d",mu[v][w]);
    
     }
     }
    
     puts("\n");
         
     puts("Voici la matrice M2\n");
    
     for(v=0;v<3;v++)
     {
    
     puts("\n");
         
          for(w=0;w<4;w++)
               {
               printf(" %d",md[v][w]);
    
     }
     }

     puts("\n");
         
     multipli_matrice( mu, md);
}


Voici ce qu'il affiche.

Voici la matrice M1

 

 9 8 1

 8 3 3

 2 8 8

 3 6 6

Voici la matrice M2

 

 0 9 2 6

 4 7 4 7

 9 9 7 7

Multiplication de M1 par M2

Resultat M3

 

 113 210 65 181

 57 136 51 106

 131 170 95 148

 941452550 -1072027589 2013480256 -1072027610

La deernier lignes de m3 pose probleme, j'ignore d'où vient l'erreur.

Voyez vous une erreur?

Cordialement

A bientôt

jeudi 3 mai 2007 à 11:52:16 | Re : Multiplication de 2 matrices

luhtor

Bas tu fais des boucles de 0 à 3:

for(i=0;i<4;i++)
    {
         for(j=0;j<4;j++)

Alors que tes matrices m1 et m2 ne sont pas 4x4.
jeudi 3 mai 2007 à 12:34:44 | Re : Multiplication de 2 matrices

emmatopiak

Salut,

Luthor a raison, tu fais n'importe quoi là:p
-Puis return m3[i][j] ca fait pas du tout ce qu'il veut, ca retourne deja qu'une seule valeur au lieu de toute la matrice, et y'a des chances que ca soit une valeur en dehors de la matrice
-Donc si tu veux retourner la matrice, faut l'allouer dynamiquement, pas statiquement, et retourner un int **
@++

vendredi 8 juin 2007 à 15:10:29 | Re : Multiplication de 2 matrices

HSylvio

Et oui tu avais deja ta réponse, mais de la multiplicatin de M2 par M1 : une matrice 4*3
Essaies avec deux matrices 4.4 mais méfies toi A*B != B*A....
dimanche 19 décembre 2010 à 10:05:02 | Re : Multiplication de 2 matrices

guendouzbachir


salut
a la place de m3[i][k]=m1[i][j],m2[j][k];
tu mais m3[i][k]=m1[i][j],m2[j][k]+m3[i][k];

devplloper


Cette discussion est classée dans : int, multiplication, m1, m3, m2


Répondre à ce message

Sujets en rapport avec ce message

Code Binaire [vaw] [ par daheda ] Euhh bonjour à tous,etudiant, actuellement je suis sur un projet de réconnaissance vocal et je voudré capturé les code bianire des signaux qui entre o Besoin d'aide [ par romainbisson ] Bonjour,j'ai besoin de faire un programme qui lit ligne par ligne un fichier en recuperant a certains emplacement de la ligne, la valeur :exemple de l Traduction [ par gableouf ] Bonjour, j'aimerai faire une traduction d'un programme C en VB pour access. Voici le code: #include #include #include int findidaddressbook() { aide [ par achrafgassolina ] salut tout le monde la j ai une érreure et je c pas comment la resoudre dans la ligne 296:36 dans la condition if et aprés je veux faire la saisie des Programme Tri à Bulle [ par tivanbelle ] Bonjour,J'ai fait ce programme en cours, c'est un tri a bullequi tri des valeur donc 2à2, mais le programme ne fonctionne pas. Pouvez vous me dire ce map [ par taieb84 ] salut j'ai une classe caisse class caisse{            float val;        int nbr;            public:            bool exist(float);    void ajouter(floa erreur [ par taieb84 ] salut, j'ai une class produit et j'aimerai faire quelques operations de insertion, suppression,affichage,recherche a l'aide d'un vecteur mais j'ai eu problème de vecteur,produit mixtes,produit vectoriel... [ par faerie ] bonjour, alors voilà, j'ai un problème avec un exercice d' informatique, il faut créer un programme qui porte sur les vecteurs, quand je le compile, i Pb avec D3DXCreateTextureFromFileInMemory [ par DIMUSERS ] Bonjour,Je vous soumet un code qui ne fonctionne pas ! Le but recherché est de créer une texture avec un texte issu d'une fonte du GDI. Le code retour afficher le contenu d'une image.h dans son .exe [ par wargore ] Bonsoir à tous!Je suis à recherche d'une aide précieuse :p qui poura me débloquer dans mon code.Tout d'abord j'ai un code principal qui contient: ----


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,108 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales