Matrix mit Vektor multiplizieren

ElifÖzt

Mitglied
Hallo Leute,

ich weiß das Thema gibt es unendlich mal im Internet, aber daraus kann ich einfach keine Lehre ziehen.
Ich muss eine 3x3 Matrix mit einem 3dim Vektor multiplizieren bzw. wenn das geschafft ist eine Mathode implementieren, mit der man eine beliebige Matrix mit einem beliebigen Vektor multiplizieren kann und dabei soll auch abgeprüft werden, ob es überhaupt möglich ist.

Mein Quellcode:
Java:
public class Matrixmultiplikation {
public static double[] multiply(double[][] A, double[] x) {
        int m = A.length;
        int n = A[0].length;
        if (x.length != n) throw new RuntimeException("Illegal matrix dimensions.");
        double[] y = new double[m];
        for (int i = 0; i < m; i++)
            for (int j = 0; j < n; j++)
                y[i] += A[i][j] * x[j];
        return y;
    }
   
   
    public static void main(String[] args){
       
        double [] x = {-1,1,1};
        double [][] A = {    {1, 2, 3},
                            {3, 2, 1},
                            {0, 1, 2}};
       
        System.out.println(Matrixmultiplikation.multiply(A, x));
       
        }
}
}

Als Ausgabe kommt eine Referenz und kein Vektor. Ich weiß einfach nicht wo mein Fehler liegt.
Könnte mir jemand bitte mein Fehler sagen?
Danke im Voraus :)
lg ElifÖzt
 
Zuletzt bearbeitet von einem Moderator:

Tarrew

Top Contributor
Du musst das Array einmal durchlaufen und dann die Werte einzeln ausgeben:
Java:
        double[] d = Matrixmultiplikation.multiply(A, x);
        for(double value : d){
            System.out.println(value);
        }
 

ElifÖzt

Mitglied
Danke für die Antwort,
kannst du eventuell mir auch verraten, wie ich die for-Schleife auf alte Weise schreiben kann, um das gleiche zu erreichen. Habe nämlich nicht die neueste Version
 

Tarrew

Top Contributor
Nicht die neuste Version? Die for-each Schleife gibts schon seit dem JDK 1.5 und das ist 2004 erschienen ;o Du musst aber echt auf einer ganz alten Version arbeiten ...

Aber so ist die 'alte' Schreibweise:
Java:
        for(int i=0; i<d.length; i++){
            System.out.println(d[i]);
        }
 

ElifÖzt

Mitglied
Okay danke, jetzt kommt nicht mehr eine Referenz sondern ein Vektor, aber die Lösung sollte (2,1,0) sein und es kommt bei mir (4,0,3) raus.
 

Tarrew

Top Contributor
Du multiplizierst diese Matrix:

1 2 3
3 2 1
0 1 2

mit dem Vektor
-1
1
1

Und wenn mein Mathe nicht ganz eingerostet ist kommt da (4,0,3) raus. Also das stimmt schon.
Vermutlich denkst du an die Matrix:
1 3 0
2 2 1
3 1 2
Da würde dann tatsächlich (2,1,0) rauskommen. Wenn du das erreichen willst musst du aber auch nur 2 Zeichen ändern.

Kann es sein, dass du den Code irgendwo kopiert hast? Wenn der Code wirklich von dir kommen würde, dann dürftest du ja auch keine Probleme haben ein Array mit einer normalen for-Schleife auszugeben, vor allem weil du in deiner multiply-Funktion ja mehrere for-Schleifen benutzt.
 

strußi

Top Contributor
hatte das ganze mal zum Spass programmiert
Java:
public class MatrixRechnung {

  // Anfang Attribute
  // Ende Attribute



  // Matrizenaddition

  // Anfang Methoden
  public static void matrixAddition (double[][]m1, double[][]m2){
    double[][]ergebnis = new double[m1.length][m1.length];
    if(m1.length!=m2.length) System.out.println("Matrizen sind unterschiedlich groß");
    else if( m1.length==m2.length) {

      ergebnis = new double[m1.length][m1.length];
      for(int i =0; i<m1.length; ++i){
        for(int j =0; j<m1.length; ++j) {
          ergebnis[i][j] = m1[i][j] + m2[i][j];
          System.out.println(ergebnis[i][j]);
        }
      }
    }
  }

  // Matrizensubtraktion
  public static void matrixSubtraktion (double[][]m1, double[][]m2){
    double[][]ergebnis = new double[m1.length][m1.length];
    if(m1.length!=m2.length) System.out.println("Matrizen sind unterschiedlich groß");
    else if( m1.length==m2.length) {

      ergebnis = new double[m1.length][m1.length];
      for(int i =0; i<m1.length; ++i){
        for(int j =0; j<m1.length; ++j) {
          ergebnis[i][j] = m1[i][j] - m2[i][j];
          System.out.println(ergebnis[i][j]);
        }
      }
    }
  }

  // Multiplikation einer Matrix mit einem Vektor
  public static void multiplikation( int matrix[][], int vektor[]) {
    for(int i=0; i<matrix.length; i++) {
      int result[] = new int[vektor.length];
      for( int j=0; j<vektor.length; j++) {
        result[i] = result[i]+matrix[i][j]*vektor[j];
      }
      System.out.println(result[i]);
    }
  }

  // Inverse einer 2 X 2 Matrix
  public static void inverse(double matrix[][]) {
    double result[][] = new double[matrix.length][matrix.length];
    double det = ( matrix[0][0]* matrix[1][1]) - (matrix[0][1]*matrix[1][0]);
  
    double x = matrix[0][0];
    matrix [0][0] = matrix[1][1];
    matrix [1][1] = x;
  
    matrix[0][1] = matrix[0][1]*(-1);
    matrix[1][0] = matrix[1][0]*(-1);
  
    for( int i=0; i<matrix.length; i++) {
      for( int j=0; j<matrix.length; j++){
        result[i][j]= (1/det)*matrix[i][j];
        System.out.println(result[i][j]);
      }
    }
  }

  //Matrix mal Matrix
  public static void multiplikation( double matrix1[][], double matrix2[][]){
     for( int i=0; i<matrix1.length; i++) {
       double result[][] = new double[matrix1.length][matrix1.length];
       for( int j=0; j<matrix1.length; j++){
         for( int k=0; k<matrix1.length; k++){
           result[i][j] = result[i][j]+matrix1[i][k]*matrix2[k][j];
         }
         System.out.println(result[i][j]);
       }
     }
  }

  // determinate einer 2x2 Matrix
  public static void det( double matrix[][]){
    double det1 = matrix[0][0]*matrix[1][1];
    double det2 = matrix[0][1]*matrix[1][0];
    double result = det1 - det2;
  
    System.out.println(result);
  }

  // determinate einer 3x3 Matrix
  public static void det2( double matrix[][]){
    double pdet1 = matrix[0][0]*matrix[1][1]*matrix[2][2];
    double pdet2 = matrix[0][1]*matrix[1][2]*matrix[2][0];
    double pdet3 = matrix[0][2]*matrix[1][0]*matrix[2][1];

    double ndet1 = matrix[2][0]*matrix[1][1]*matrix[0][2];
    double ndet2 = matrix[2][1]*matrix[1][2]*matrix[0][0];
    double ndet3 = matrix[2][2]*matrix[1][0]*matrix[0][1];

    double result = pdet1 + pdet2 + pdet3 - ndet1 - ndet2 - ndet3;

    System.out.println(result);
  }


  public static void main(String[] args) {
    double [][] matrix1 = {{1.0, 2.0, 3.0 },
                           {4.0, 5.0, 6.0 },
                           {7.0, 8.0, 9.0 },
                          };
                        
    double [][] matrix2 = {{9.0, 8.0, 7.0 },
                           {6.0, 5.0, 4.0 },
                           {3.0, 2.0, 1.0 },
                          };

    double[][] ergebnis = new double[3][3];
                        
    matrixAddition(matrix1, matrix2);
    System.out.println(" ");
  
    matrixSubtraktion(matrix1, matrix2);
    System.out.println(" ");
  
    det(matrix1);
    System.out.println(" ");
  
    det2(matrix2);
    System.out.println(" ");
  }
  // Ende Methoden
}

Java:
public class Vektorrechnung {

  // Anfang Attribute
  // Ende Attribute



  // Anfang Methoden
  public static double[] vektorAddition( double[]a, double[]b) {
    double[]result = new double[3];
  
    for(int i = 0; i<a.length; i++){
      result[i] = a[i]+ b[i];
    }
    return result;
  }

  public static double[] vektorSubtraktion( double[]a, double[]b) {
    double[]result = new double[3];

    for(int i = 0; i<a.length; i++){
      result[i] = a[i]- b[i];
    }
    return result;
  }

  public static double[] kreuzprodukt(double[]a, double[]b) {
    double[]result = new double[3];
    result[0]= a[1]*b[2] - a[2]*b[1];
    result[1]= a[2]*b[0] - a[0]*b[2];
    result[2]= a[0]*b[1] - a[1]*b[0];
  
    return result;
  }

  public static double skalarprodukt(double[]a, double[]b) {
    double resultSkalar= 0.0d;
    for(int i = 0; i<a.length; i++) {
      resultSkalar = resultSkalar + a[i]*b[i];
    }
    return resultSkalar;
  }

  public static double[] skalarMultiplikation(double[]a, double skalar) {
    double [] result= new double[3];
    for(int i = 0; i<a.length; i++) {
      result[i] = skalar*a[i];
    }
    return result;
  }

  public static double vektorLaenge(double[]a) {
    double result = 0.0d;
    for(int i = 0; i<a.length; i++) {
      result= result+ a[i]*a[i];
    }
    result = Math.sqrt(result);
    return result;
  }

  public static void main(String[] args) {
    double [] vektor1 = {1.0, 7.8, 9.0 };
    double [] vektor2 = {2.3, 6.5, 8.7 };
    double [] ergebnis;
    double result;


    result = vektorLaenge(vektor1);
    System.out.println(result);
  }
  // Ende Methoden
}

Fehler dürfen behalten werden, aber auch gerne an mich weitergereicht werden
 

ElifÖzt

Mitglied
Okay danke für die Antwort :)
Nein kopiert ist der ganz klar nicht, ich hatte aber von jemand anderes Hilfe beim Implementieren. Aber nachdem ich seit mehreren Stunden an mehreren Aufgaben saß, lässt die Konzentration zu wünschen übrig leider.
Danke strußi für deinen Beitrag
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z Matrix mit Vektor multiplizieren Java Basics - Anfänger-Themen 13
O Matrix, Vektor Java Basics - Anfänger-Themen 9
U Ist diese Methode zur Matrix Vektor Multiplikation korrekt ? Java Basics - Anfänger-Themen 5
R Matrix-Vektor-Multiplikation Java Basics - Anfänger-Themen 13
I matrix aufgabe Java Basics - Anfänger-Themen 22
L Zweidimensionaler Array; n x m - Matrix überprüfuen Java Basics - Anfänger-Themen 35
C Matrix mit Array ausgeben Java Basics - Anfänger-Themen 6
idontknow707 Matrix nach z.B. Variable durchsuchen Java Basics - Anfänger-Themen 4
F Adjunkte Matrix erstellen Java Basics - Anfänger-Themen 3
M Matrix Java Basics - Anfänger-Themen 3
F Matrix Multiplikation Java Basics - Anfänger-Themen 3
B Dünn besetzte Matrix Java Basics - Anfänger-Themen 7
Al3xand3r01 Matrix, Nachbarelemente Java Basics - Anfänger-Themen 16
E Rückwärtsmultiplikation einer invertierten matrix Java Basics - Anfänger-Themen 2
U Dreiecks-Matrix mit Array Java Basics - Anfänger-Themen 3
Z Matrix Klasse mit Mehrdimensionalen Array (Addition, Multiplikation, to String) Java Basics - Anfänger-Themen 57
E 2D Array - char durch die Matrix "wandern" lassen Java Basics - Anfänger-Themen 7
M Matrix auf 4 Elemente untersuchen mit offenen Enden Java Basics - Anfänger-Themen 8
B Diskrete Faltung (Matrix) Randfälle Java Basics - Anfänger-Themen 8
M Matrix Elemente vergleichen Java Basics - Anfänger-Themen 11
N Quadratische Matrix inkl Summe Java Basics - Anfänger-Themen 8
J Methoden Moving a n integer matrix Java Basics - Anfänger-Themen 3
D Methoden Matrix Multiplikation Java Basics - Anfänger-Themen 27
H 2D Array, Symmetrische Matrix Java Basics - Anfänger-Themen 12
S Matrix spaltenweise befüllen Java Basics - Anfänger-Themen 1
T Zufällige Matrix in neue Matrix schreiben Java Basics - Anfänger-Themen 6
C Matrix-Werte werden nicht wie erwartet ausgegeben Java Basics - Anfänger-Themen 7
C Matrix erstellen Spaltensumme, Zeilensumme, Diagonale Java Basics - Anfänger-Themen 1
S Methoden Transponierte Matrix Java Basics - Anfänger-Themen 3
N Vererbung Submatrix mit Verweis auf Matrix erstellen Java Basics - Anfänger-Themen 9
J Matrix erstellen Java Java Basics - Anfänger-Themen 7
B Transponiertes Matrix Java Basics - Anfänger-Themen 12
J Überprüfen, ob eine 2D Matrix ein Baum ist Java Basics - Anfänger-Themen 5
C Matrix transponieren - Hilfe Java Basics - Anfänger-Themen 1
D Ausgabe einer Matrix mit System.out.println Java Basics - Anfänger-Themen 6
T Art 4 Felder Matrix Memory Java Basics - Anfänger-Themen 2
L Matrix(Array) minimieren... Java Basics - Anfänger-Themen 9
S eingegebene Matrix anzeigen Java Basics - Anfänger-Themen 4
J Matrix für Schachbrett Java Basics - Anfänger-Themen 6
G tga Datei lesen und in eine matrix umwandeln Java Basics - Anfänger-Themen 1
G Bilddaten in Matrix umwandeln Java Basics - Anfänger-Themen 1
T Eine String Matrix erstellen die eine boolean Funtion verwendet Java Basics - Anfänger-Themen 10
O Matrix Multiplizieren Java Basics - Anfänger-Themen 4
S LWJGL - Matrix vom Matrixstack laden Java Basics - Anfänger-Themen 3
T Matrix auf Symmetrie überprüfen Java Basics - Anfänger-Themen 6
V Matrix Transponieren Java Basics - Anfänger-Themen 3
V Methoden Matrix als 1D Array mit Werten füllen Java Basics - Anfänger-Themen 12
W Zweidimensionale Arrays als Matrix ausgeben Java Basics - Anfänger-Themen 8
O Matrix ordnen Java Basics - Anfänger-Themen 4
M Symmetrische Matrix Java Basics - Anfänger-Themen 2
W Methoden Rang von einer Matrix mit Gauss Java Basics - Anfänger-Themen 0
U Matrix Subtrahieren Java Basics - Anfänger-Themen 12
E Input/Output convert string to two dimensional char and output = matrix Java Basics - Anfänger-Themen 2
A daten vom 1d array in 2d matrix speichern Java Basics - Anfänger-Themen 3
I Matrix überprüfen Java Basics - Anfänger-Themen 8
K Methoden Einlesen einer unbegrenzten Matrix über Konsole Java Basics - Anfänger-Themen 6
O Einlesen einer Matrix von der Console Java Basics - Anfänger-Themen 18
N Matrix/Vektoren Java Basics - Anfänger-Themen 3
N Matrix Java Basics - Anfänger-Themen 14
T Methode, die eine 2 dimensionale Matrix kopiert. Java Basics - Anfänger-Themen 16
J Matrix Java Java Basics - Anfänger-Themen 3
D 2 mehrdimensionale Matrix einlesen Java Basics - Anfänger-Themen 2
A N*N Matrix Determinante berechnen Java Basics - Anfänger-Themen 47
K Quadratische Matrix um 90° drehen Java Basics - Anfänger-Themen 5
C Programm zur Berechnung der Spur einer Matrix Java Basics - Anfänger-Themen 4
B Zeilenumbruch (zweidim. Matrix) Java Basics - Anfänger-Themen 2
O Java Matrix mal Matrix über while Schleife... Java Basics - Anfänger-Themen 10
O Transponieren einer Matrix per While-Schleife Java Basics - Anfänger-Themen 3
M Matrix - Probelm Java Basics - Anfänger-Themen 7
O 2D Matrix befüllen mit geraden Zahlen!? Java Basics - Anfänger-Themen 14
J Java Matrix befüllen Java Basics - Anfänger-Themen 5
M Matrix Matrix Multiplikation Java Basics - Anfänger-Themen 6
F Matrix Java Basics - Anfänger-Themen 11
E Array als Matrix Java Basics - Anfänger-Themen 21
G OOP Parameter Matrix Java Basics - Anfänger-Themen 2
N Matrix Klasse Java Basics - Anfänger-Themen 4
B Maske an eine Matrix anpassen Java Basics - Anfänger-Themen 5
W Matrix übergeben Java Basics - Anfänger-Themen 7
T Matrix transponieren Java Basics - Anfänger-Themen 17
W Eine Methode schreiben, ob eine Matrix eine Diagonalmatrix ist.? Java Basics - Anfänger-Themen 3
M String Datei in Float-Matrix umwandeln Java Basics - Anfänger-Themen 8
D Problem: Werte eine Matrix vergleichen! Java Basics - Anfänger-Themen 5
B Matrix Java Basics - Anfänger-Themen 2
Semox Matrix multiplizieren Java Basics - Anfänger-Themen 4
N Matrix an toString Java Basics - Anfänger-Themen 7
C Diagonale in einem NxN Matrix Java Basics - Anfänger-Themen 6
F Einträgen von Matrix zu sotieren Java Basics - Anfänger-Themen 2
D JUnit auf Matrix anwenden Java Basics - Anfänger-Themen 5
J Spezielle Matrix ausgeben ! Java Basics - Anfänger-Themen 8
S Problem bei Matrix Addition Java Basics - Anfänger-Themen 5
F matrix werte übergeben Java Basics - Anfänger-Themen 5
M Hauptdiagonale Matrix berechnen Java Basics - Anfänger-Themen 6
M Klassenerstellung für Matrix mit Rechenopperationen Java Basics - Anfänger-Themen 42
D Matrix .bat datei erstellen und öffnen Java Basics - Anfänger-Themen 2
J Matrix ausgeben Java Basics - Anfänger-Themen 9
N Matrix Matrix Produkt Java Basics - Anfänger-Themen 7
N prüfe ob etwas in einer Matrix steht... Java Basics - Anfänger-Themen 14
L rechtecke zeichnen anhand von matrix Java Basics - Anfänger-Themen 27
J Matrix aus Datei einlesen mit StreamTokenizer Java Basics - Anfänger-Themen 3
K Transponiere Matrix Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben