# Multiplikation von Matrizen



## Ivo (15. Dez 2005)

Hi, 
die Aufgabe lautet: Matrizen zu Multiplizieren. Das ist mein Ansatz. Könnte mir jemand verraten warum falsche werte in die methode matrizenMultiplikation übergeben werden(selbst wenn ich die anzahl von den b inhalten ändere bleiben die auf 2 und 2)?!

Vielleicht bin ich einfach nur blind und seh meinen Gedanken fehler nicht. Vielleicht könnt ihr mir weiterhelfen....


```
import javagently.*;
import java.io.*;

class Matrizen{

    public static int [][] matrizenMultiplikation(int a[][], int b[][]) 
                                                 throws IOException{
        
        int  [][] c = new int [a.length][b[0].length];
        System.out.println(a.length);        // hier komischerweise 2
        System.out.println(a[0].length);    // hier komischerweise 3
        System.out.println(b.length);        // hier richtigerweise 2
        System.out.println(b[0].length);    // hier komischerweise 2
        int summe = 0;
        
        try{
            if (a[0].length != b.length){
                throw new IllegalArgumentException();
            }
            else{
                for(int i=0; i<a.length; i++ ){
                    for (int j=0; j<b[0].length;  j++){
                        for (int k=0; k<a[0].length; k++){
                            summe = summe + a[i][k]*b[k][i];
                        }
                        c[i][j] = summe;
                    }
                }
            }
        }
        catch (IllegalArgumentException e){
            System.out.println("Die Matrizen lassen sich nicht multiplizieren");
        }
        
        return c;
    }


    public static void main (String [] args) throws IOException{
    
        int [][] a = {{1,1,1},{2,2}};
        int [][] b = {{3,3},{4,4,4}};
        
        int [][] erg = matrizenMultiplikation(a,b);
        
        for (int i=0; i<a.length; i++){
            for (int j=0; j<b[0].length; j++){
                System.out.println(erg[i][j]);
            }
        }
        
    }
}
```


----------



## Beni (15. Dez 2005)

Hä? Also sorry, aber deine Matrizen werden auch seltsamen zusammengebastelt :wink:  ...

```
int [][] a = {{1,1,1},{2,2}};
        int [][] b = {{3,3},{4,4,4}};
```
... Das sind irgendwelche Pyramidendinger, aber sicher keine zwei Matrizen.


----------



## Ivo (15. Dez 2005)

sagen wir mal ich will eine haben die 3 spalten hat und 3 zeilen und die zweite soll 2 spalten haben und 3 zeilen...

wie muss das dann aussehen??? (es sollen dann schon werte drin sein)


----------



## Roar (15. Dez 2005)

int[][] a = {{1,2,3}, {4,5,6}, {7,8,9}}; // 3 spalten
int[][] b = {{1,2}, {3,4}, {5,6}}; // 2 spalten


----------



## Ivo (15. Dez 2005)

und wie kann ich jetzt auf die einzelnen werte zugreifen!?

ist dann
int[][] a = {{*1*,2,3}}
a[0][0]

oder 

int[][] a = {{1,2,*3*}}
a[0][2]


ist das so richtig?! oder wie kann ich auf die einzelnen elemente zugreifen?!


----------



## Roar (15. Dez 2005)

ja is richtig (warum haste nicheinfach ausprobiert?  )


----------



## Ivo (16. Dez 2005)

Mein ergebnis.
Allerdings gibt er folgendes aus
22 22
64 64 

aber das ist falsch wo liegt mein fehler?!


```
import javagently.*;
import java.io.*;

class Matrizen{

    public static int [][] matrizenMultiplikation(int a[][], int b[][])
                                                 throws IllegalArgumentException{
       
        int  [][] c = new int [a.length][b[0].length];
        int summe = 0;

        try{
            for (int i=0; i<a.length; i++){
                if (b.length !=a[i].length){
                    throw new IllegalArgumentException();
                 }
            }
                for(int i=0; i<c.length; i++ ){
                    for (int j=0; j<c[0].length;  j++){
                        for (int k=0; k<a[0].length; k++){
                            summe += a[i][k]*b[k][i];
                        }
                        c[i][j] = summe;
                        summe = 0;
                    }
                }
        }
        catch (IllegalArgumentException e){
            System.out.println("Die Matrizen lassen sich nicht multiplizieren");
        }

        return c;
    }


    public static void main (String [] args) throws IOException{

        int [][] a = {{1,2,3},{4,5,6}};
        int [][] b = {{1,2},{3,4},{5,6}};
       
        int [][] erg = matrizenMultiplikation(a,b);

        for (int i=0; i<a.length; i++){
            for (int j=0; j<b[0].length; j++){
                System.out.print(erg[i][j]+" ");
            }
            System.out.print("\n");
        }
       
    }
}
```


----------



## Ivo (17. Dez 2005)

Habs gelöst. Läuft.... [close]


----------

