Matritzen multiplizieren

hubuluktu

Mitglied
Hallo,

ich würde gerne zwei Matritzen miteinander multiplizieren. Und zwar Matritze A der Größe 2x3 und Matritze B der Größe 3x2. Dabei muss der User selbst 12 random Zahlen eingeben. Hab zwar schon etwas programmiert, aber da ich mehrmal nachgerechnet habe, bin ich mir sicher, dass meine Lösung nicht stimmt. Nun würde ich gerne wissen wo mein Fehler liegt. Hier der Code:

Java:
public class Matrix {

	static int[][] multiplyMatrix(int[][] a, int[][] b) {
		int[][] c = new int[2][2];
		
		c[0][0] = a[0][0]*b[0][0] + a[0][1]*b[1][0] + a[0][2]*b[2][0];
		c[0][1] = a[0][0]*b[0][1] + a[0][1]*b[1][1] + a[0][2]+b[2][1];
		c[1][0] = a[1][0]*b[0][0] + a[1][1]*b[1][0] + a[1][2]*b[2][0];
		c[1][1] = a[1][0]*b[0][1] + a[1][1]*b[1][1] + a[1][2]*b[2][1];
		
		return c;

	}

	public static void main(String[] args) {

		try {
			if (args.length != 12) {
				System.out.println("You must use exactly 12 arguments of Type Integer!");
			} else {
				int[][] c = new int[2][2];
				int[][] a = new int[2][3];
				int[][] b = new int[3][2];
				a[0][0] = Integer.parseInt(args[0]);
				a[0][1] = Integer.parseInt(args[1]);
				a[0][2] = Integer.parseInt(args[2]);
				a[1][0] = Integer.parseInt(args[3]);
				a[1][1] = Integer.parseInt(args[4]);
				a[1][2] = Integer.parseInt(args[5]);

				b[0][0] = Integer.parseInt(args[6]);
				b[0][1] = Integer.parseInt(args[7]);
				b[1][0] = Integer.parseInt(args[8]);
				b[1][1] = Integer.parseInt(args[9]);
				b[2][0] = Integer.parseInt(args[10]);
				b[2][1] = Integer.parseInt(args[11]);

				c = multiplyMatrix(a, b);
				System.out.println("C00: " + c[0][0] + " C01: " + c[0][1]);
				System.out.println("C10: " + c[1][0] + " C11: " + c[1][1]);
			}
		} catch (NumberFormatException nfEx) {
			System.out.println("Wrong format! You may only use Int-numbers as arguments!");
		}
	}
}



Schonmal Danke für die Hilfe
 
Hi,

in Deinem Code ist ein Tippfehler. Es muss heißen:
Java:
c[0][1] = a[0][0]*b[0][1] + a[0][1]*b[1][1] + a[0][2]*b[2][1];

(Multiplikation statt Addition)

Dann sollte das Ergebnis stimmen.

Java:
public static void main(String[] args) {
		int[][]a = new int[][] {
				{3, 4, 5},
				{7, 9, 1},
		};

		int[][]b = new int[][] {
				{1, 5},
				{4, 3},
				{9, 7}
		};
		
		int [][] c = multiplyMatrix(a,b);
		for (int i=0; i<c.length; i++) {
			for (int j=0; j<c[i].length; j++) {
				System.out.print(c[i][j]+"  ");
			}
			System.out.println();
		}
	}

Gruß Micha
 
Kannst du das vllt. etwas genauer formulieren?

Java:
	public static void main(String[] args) {
		System.out.println(berechneSumme(3,4,5));
		System.out.println(berechneSumme(1,1000));
    }
	
	public static int berechneSumme(int a, int b, int c){
		int summe = a + b + c;
		return summe;
	}
	
	public static int berechneSumme(int von, int bis){
		int summe = 0;
		for (int i = von; i <= bis; i++) {
			summe += i;
		}
		return summe;
	}

Code:
public static int berechneSumme(int a, int b, int c)
Eine statische Version mit 3 Summanden.

Code:
public static int berechneSumme(int von, int bis)
Eine dynamische Version mit beliebig vielen Summanden.
 
oder google doch einfach mal nach "matrizenmultiplikation java". da gibt es wirklich massig dazu im netz 🙂
 
Java:
	public static int berechneSumme(int a, int b, int c){
		int summe = a + b + c;
		return summe;
	}
	
	public static int berechneSumme(int von, int bis){
		int summe = 0;
		for (int i = von; i <= bis; i++) {
			summe += i;
		}
		return summe;
	}


Hallo ,hab ne Anfängerfrage zu dem Code. Warum kannst du beide Methoden gleich benennen (berechneSumme) ? Liegt es nur an der Anzahl der übergebenen Integervariablen, dass der Compiler erkennt um welchen Methodenaufruf es sich handelt ? :reflect:

Danke
 
Genau daran liegt das. Man spricht von der Signatur einer Methode, die sich hier an 2x unterschiedlichen Anzahl von int-Variablen unterscheidet.
 

Neue Themen


Zurück
Oben