Matrix Vektor Multiplikation

Nein, der Ansatz ist bisher leider falsch. Es sind dort wieder die gleichen Fehler wie oben drin: die Argumente heißen zwar Vektor, das hat aber nichts mit der Klasse “Vektor” zu tun.

Die Methode gehört meiner Meinung nach in die Matrix-Klasse. Die Signatur (weißt du, was die Signatur einer Methode ist?) sollte so aussehen:
public Vektor mult(Vektor v)

Dann solltest du prüfen, ob der übergebene Vektor die passende Dimension hat. An dieser Stelle bietet es sich an, die getDimension-Methode wieder einzufügen.
In die Matrix würde ich übrigens folgende Methoden einfügen (die Methodenrümpfe implementierst du bitte zur Übung), weil das die Prüfung der Dimension des Vektors vereinfacht:

    return // ...
}

public int getZeilen() {
    return // ...
}```

Hinweis: du musst wirklich nur noch die Zeile hinter dem return vervollständigen, alles andere ist schon vorhanden und steht auch schon hier im Thread.

ich muss leider nochmal dazwischen grätschen, habe diesen code jetzt, aber wenn ich ihn runne werden mir nur lauter rote fehlermeldungen angezeigt. wo ist denn jetzt nochmal fehler, weiß nicht was da nicht stimmt :grr::grr:


import algebra.SymmetrischeMatrix;
import algebra.Vektor;

public class test1 {

	public static void main(String[ ] args) {
		    testMatrix();
	    }
	
	private static void testMatrix() {
	    SymmetrischeMatrix matrix = new SymmetrischeMatrix(new double[][]{
	            {1.0},
	            {-1.0, 2.0},
	            {0.0, -1.0, 2.0},
	            {0.0, 0.0, -1.0, 2.0}
	    });
	    for (int zeile = 0; zeile < 4; zeile++) {
	        for (int spalte = 0; spalte < 4; spalte++)
	            System.out.print(matrix.get(zeile, spalte) + " ");
	        System.out.println();
	    }
	}
	
	 test1() {
		 
		 testVektor();
		}
		 

	       private static void testVektor() {
		    Vektor vektor = new Vektor(new double[]{0.3, 0.2, 0.1, 0.0});
		    for (int zeile = 0; zeile < 4; zeile++)
		        System.out.println(vektor.getKoeff(zeile));
	       }
}

		
	
	```


musste die klasse in SymmertrischeMatrix ändern, ist so vorgeschrieben

Ohne Details zum Fehler wird es schwierig, da etwas zu zu sagen.

Allerdings sollte die testVektor-Methode auch aus der main-Methode heraus aufgerufen werden. Und den Konstruktor test1() brauchst du auch nicht (dort wo du testVektor aufrufst).
Klassennamen beginnen mit einem Großbuchstaben.

*** Edit ***

Ich sehe gerade, dass du die “dreieckige” Variante genommen hast. Die funktioniert mit unverändertem Code der Matrixklasse nicht. Du solltest in testMatrix die quadratische Variante nehmen.

Edit: ganz anderer Code

wie ruft man die testVektor-Methode aus der main-Methode auf?

Genauso, wie auch die testMatrix-Methode aufgerufen wird.

Programmieren besteht zu einem großen Prozentteil aus Wiederverwendung von Code. Ob nun per copy und paste, per Verwendung von allgemein genug gehaltenen Klassen, von Entwurfsmustern, von Herangehensweisen an Problemen… ich klaue dauernd unglaublich viel Code, den meisten bei mir selbst, an einigen Stellen wird halt gegoogelt oder Bücher gewälzt.

Was ist der Koeffizient einer Matrix und gibt es genau einen, mehrere oder für jede Zeile einen?
Und wäre
private long/double[][] erwKoeffiMatrix = new double[m][n+1];
nicht wegen der Sortierung nach Koeffi oder den Zeilen einfacher? (Zuweisung[/Definition]/Initialisierung eigentlich erst im deep-copy-Konstruktor)

Auf jeden kennen wir die Aufgabenstellung eigentlich nicht. Te/to sollte sich Klassen, Objekte, Konstruktor, Attribute, Arrays, arithm. Operatoren/Operanden noch mal anschauen, eigentlich ein Drittel eines Java-Buches, denn hier karpert es nicht am mathem. Verständnis sondern an der Umsetzung/Implementierung in einer speziellen Programmiersprache, und an Beispielen.