Multiplikation von Matrizen

Status
Nicht offen für weitere Antworten.

Ivo

Mitglied
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....

Code:
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]);
            }
        }
        
    }
}
 
B

Beni

Gast
Hä? Also sorry, aber deine Matrizen werden auch seltsamen zusammengebastelt :wink: ...
Code:
        int [][] a = {{1,1,1},{2,2}};
        int [][] b = {{3,3},{4,4,4}};
... Das sind irgendwelche Pyramidendinger, aber sicher keine zwei Matrizen.
 

Ivo

Mitglied
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)
 
R

Roar

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

Ivo

Mitglied
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?!
 

Ivo

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

aber das ist falsch wo liegt mein fehler?!

Code:
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");
        }
       
    }
}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben