Hey Leute,
also ich muss ein Programm schreiben, welches das Produkt einer Symmetrischen Matrix und eines Vektors berechnet. Bis jetzt hab ich folgendes geschrieben:
leider stimmt das Ergebnis nicht. Könnt ihr mir vielleicht einen Hinweis geben was falsch ist?!
Danke!
also ich muss ein Programm schreiben, welches das Produkt einer Symmetrischen Matrix und eines Vektors berechnet. Bis jetzt hab ich folgendes geschrieben:
Java:
package algebra;
public class SymmetrischeMatrix {
private double [][] koeffizientenFeld = null;
private int anzahlZeilenUndSpalten;
public SymmetrischeMatrix(int groesse) {
this.anzahlZeilenUndSpalten = groesse;
this.koeffizientenFeld = new double[groesse][];
for (int j = 0; j < groesse; j++){
koeffizientenFeld[j] = new double[j+1];
}
}
public int getGroesse (){
return anzahlZeilenUndSpalten;
}
public double getKoeffizient(int row, int col) {
if (row >= col){
return koeffizientenFeld [row][col];
}
else{
return koeffizientenFeld [col][row];
}
}
public void setKoeffizient(int row, int col, double value){
if (row >= col){
koeffizientenFeld [row][col]=value;
}
else{
koeffizientenFeld [col][row]=value;
}
}
}
Java:
package algebra;
public class Vektor {
private double [] vektor;
private int groesse;
public Vektor(int groesse) {
this.groesse = groesse;
vektor = new double[groesse];
}
public void setKoeffizient(double wert, int stelle){
vektor[stelle] = wert;
}
public double getKoeffizient(int stelle){
return vektor[stelle];
}
@Override
public String toString() {
String ausgabe;
ausgabe = "Vektor(";
for (int i = 0; i < groesse; i++) {
ausgabe += vektor[i];
if (i < groesse-1) {
ausgabe += ",";
}
}
ausgabe += ")";
return ausgabe;
}
public Vektor multiplizieren(SymmetrischeMatrix matrix) throws Exception {
Vektor Ergebnisvektor;
Ergebnisvektor = new Vektor (groesse);
if (matrix.getGroesse() != groesse){
throw new Exception("Größe nicht kompatibel");
}
for (int j = 0; j < groesse; j++){
for (int i = 0; i < groesse; i++) {
double Zwischenwert;
Zwischenwert = Ergebnisvektor.getKoeffizient(j);
Zwischenwert += matrix.getKoeffizient(j, i)*this.getKoeffizient(i);
Ergebnisvektor.setKoeffizient(Zwischenwert, j);
}
}
return Ergebnisvektor;
}
}
Java:
package programme;
import algebra.SymmetrischeMatrix;
import algebra.Vektor;
public class Prüfklasse {
public static void main(String args[]) {
SymmetrischeMatrix prüfmatrix1 = new SymmetrischeMatrix(4);
Vektor prüfvektor1 = new Vektor(4);
prüfvektor1.setKoeffizient(0.3, 0);
prüfvektor1.setKoeffizient(0.2, 1);
prüfvektor1.setKoeffizient(0.1, 2);
prüfvektor1.setKoeffizient(0.0, 3);
prüfmatrix1.setKoeffizient(0, 0, 1.0);
prüfmatrix1.setKoeffizient(1, 0, -1.0);
prüfmatrix1.setKoeffizient(1, 1, 2.0);
prüfmatrix1.setKoeffizient(2, 0, 0.0);
prüfmatrix1.setKoeffizient(2, 1, -1.0);
prüfmatrix1.setKoeffizient(2, 2, 2.0);
prüfmatrix1.setKoeffizient(3, 0, 0.0);
prüfmatrix1.setKoeffizient(3, 1, 0.0);
prüfmatrix1.setKoeffizient(3, 2, -1.0);
prüfmatrix1.setKoeffizient(3, 3, 2.0);
try {
System.out.println("Prüfmatrix1 * Vektor1 = ");
System.out.println(prüfvektor1.multiplizieren(prüfmatrix1));
} catch (Exception e) {
System.out.println(e);
}
}
leider stimmt das Ergebnis nicht. Könnt ihr mir vielleicht einen Hinweis geben was falsch ist?!
Danke!