Zwei Matrizen multiplizieren. Mein Code gibt falsche Werte aus



  • Es sollen zwei Matrizen Multipliziert werden. Nur igendwie kommt bei mir das falsche Ergebnis raus. Weiß jmd von euch vllt wieso?
    Und wenn ich zwei Matrixzen subtrahieren soll. Kann ich das selbe Schema verwenden nur anstatt * einfach -

    ?

    #include <iostream.h>
    #include <conio.h>
    #include <math.h>
    #include <stdio.h>
    #define max 3
    
    int main (void)
    {
    
    clrscr();
    
    int matrixA[max][max] = {
    			{0,1,2},
    			{4,2,3},
    			{5,3,1}
    			};
    int matrixB[max][max]= {
    			{3,1,1},
    			{1,3,1},
    			{4,0,2}
    			};
    int matrixC[max][max];
    
    for(int i=0; i<max;++i)
    	for(int g=0;g<max; ++g)
    		matrixC[i][g] = matrixA[i][g] * matrixB[i][g];
    int e=0;
    for(int f=0; f<max;f++)
    {
    
        for(e=0; e<max;e++)
        printf("\t%d",matrixC[f][e]);
    
        printf("\n");
    }
    
    getch();
    return 0;
    }
    

    Dieses Schema bekomme ich nicht hin
    http://www.numerik.mathematik.uni-mainz.de/didaktikseminar/Gruppe6/Matrizen_Multiplikation-Dateien/image014.jpg



  • So habe ich das gelöst und muss daraus nur noch den Algo machen. Kann mir jemand vllt helfen??

    #include <iostream.h>
    #include <conio.h>
    #include <math.h>
    #include <stdio.h>
    #define max 3
    
    int main (void)
    {
    
    clrscr();
    
    int matrixA[max][max] = {
    			{0,1,2},
    			{4,2,3},
    			{5,3,1}
    			};
    int matrixB[max][max]= {
    			{3,1,1},
    			{1,3,1},
    			{4,0,2}
    			};
    int matrixC[max][max];
    
    matrixC[0][0]= matrixA[0][0]*matrixB[0][0] + matrixA[0][1]*matrixB[1][0]  + matrixA[0][2]*matrixB[2][0];
    matrixC[1][0]= matrixA[1][0]*matrixB[0][0] + matrixA[1][1]*matrixB[1][0]  + matrixA[1][2]*matrixB[2][0] ;
    matrixC[2][0]= matrixA[2][0]*matrixB[0][0] + matrixA[2][1]*matrixB[1][0]  + matrixA[2][2]*matrixB[2][0]  ;
    
    matrixC[0][1]= matrixA[0][0]*matrixB[0][1] + matrixA[0][1]*matrixB[1][1]  + matrixA[0][2]*matrixB[2][1];
    matrixC[1][1]= matrixA[1][0]*matrixB[0][1] + matrixA[1][1]*matrixB[1][1]  + matrixA[1][2]*matrixB[2][1];
    matrixC[2][1]= matrixA[2][0]*matrixB[0][1] + matrixA[2][1]*matrixB[1][1]  + matrixA[2][2]*matrixB[2][1];
    
    matrixC[0][2]= matrixA[0][0]*matrixB[0][2] + matrixA[0][1]*matrixB[1][2]  + matrixA[0][2]*matrixB[2][2];
    matrixC[1][2]= matrixA[1][0]*matrixB[0][2] + matrixA[1][1]*matrixB[1][2]  + matrixA[1][2]*matrixB[2][2];
    matrixC[2][2]= matrixA[2][0]*matrixB[0][2] + matrixA[2][1]*matrixB[1][2]  + matrixA[2][2]*matrixB[2][2];
    
    int e=0;
    for(int f=0; f<max;f++)
    {
    
        for(e=0; e<max;e++)
        printf("\t%d",matrixC[f][e]);
    
        printf("\n");
    }
    
    getch();
    return 0;
    }
    


  • kwt



  • Okay, kam leider keine Antwort aber habs gerade selber gelöst. Trotzdem Danke.

    #include <iostream.h>
    #include <conio.h>
    #include <math.h>
    #include <stdio.h>
    #define max 3
    
    int main (void)
    {
    
    clrscr();
    
    int matrixA[max][max] = {
    			{0,1,2},
    			{4,2,3},
    			{5,3,1}
    			};
    int matrixB[max][max]= {
    			{3,1,1},
    			{1,3,1},
    			{4,0,2}
    			};
    int matrixC[max][max];
    
    /*
    matrixC[0][0]= matrixA[0][0]*matrixB[0][0] + matrixA[0][1]*matrixB[1][0]  + matrixA[0][2]*matrixB[2][0];
    matrixC[1][0]= matrixA[1][0]*matrixB[0][0] + matrixA[1][1]*matrixB[1][0]  + matrixA[1][2]*matrixB[2][0] ;
    matrixC[2][0]= matrixA[2][0]*matrixB[0][0] + matrixA[2][1]*matrixB[1][0]  + matrixA[2][2]*matrixB[2][0]  ;
    
    matrixC[0][1]= matrixA[0][0]*matrixB[0][1] + matrixA[0][1]*matrixB[1][1]  + matrixA[0][2]*matrixB[2][1];
    matrixC[1][1]= matrixA[1][0]*matrixB[0][1] + matrixA[1][1]*matrixB[1][1]  + matrixA[1][2]*matrixB[2][1];
    matrixC[2][1]= matrixA[2][0]*matrixB[0][1] + matrixA[2][1]*matrixB[1][1]  + matrixA[2][2]*matrixB[2][1];
    
    matrixC[0][2]= matrixA[0][0]*matrixB[0][2] + matrixA[0][1]*matrixB[1][2]  + matrixA[0][2]*matrixB[2][2];
    matrixC[1][2]= matrixA[1][0]*matrixB[0][2] + matrixA[1][1]*matrixB[1][2]  + matrixA[1][2]*matrixB[2][2];
    matrixC[2][2]= matrixA[2][0]*matrixB[0][2] + matrixA[2][1]*matrixB[1][2]  + matrixA[2][2]*matrixB[2][2];
      */
    for(int j=0; j<3;j++)
    {
    	for(int i=0; i<3;i++)
    	{
    		matrixC[i][j]= matrixA[i][0]*matrixB[0][j] + matrixA[i][1]*matrixB[1][j]  + matrixA[i][2]*matrixB[2][j];
    	}
    }
    int e=0;
    for(int f=0; f<max;f++)
    {
    
        for(e=0; e<max;e++)
        printf("\t%d",matrixC[f][e]);
    
        printf("\n");
    }
    
    getch();
    return 0;
    }
    

Anmelden zum Antworten