Die Berechnung Eigenvektoren in C # Erweiterte Matrix-Bibliothek in C #. NETZ
-
25-09-2019 - |
Frage
Ok Jungs, ich bin mit der folgenden Bibliothek: http: //www.codeproject. com / KB / Rezepte / AdvancedMatrixLibrary.aspx
Und ich wünsche die Eigenvektoren bestimmter Matrizen berechnen ich habe. Ich weiß nicht, wie Sie den Code zu formulieren.
Bisher habe ich versucht:
Matrix MatrixName = new Matrix(n, n);
Matrix vector = new Matrix(n, 0);
Matrix values = new Matrix(n, 0);
Matrix.Eigen(MatrixName[n, n], values, vector);
Allerdings heißt es, dass die beste Methode überladenen Spiel einige ungültige Argumente hat. Ich kenne die Bibliothek funktioniert, aber ich weiß einfach nicht, wie mein c # -Code zu formulieren.
Jede Hilfe wäre fantastisch!
Lösung
Mit Blick auf die Bibliothek, die Unterzeichnung der Eigen-Methode sieht wie folgt aus:
public static void Eigen(Matrix Mat, out Matrix d,out Matrix v)
Es gibt ein paar Fehler:
-
Beachten Sie die
out
Stichwort neben den d und v Parameter. Sie müssen das Schlüsselwort out auf den Aufruf zu Eigen hinzuzufügen. -
Der Code erwartet eine Matrix als erstes Argument, während Sie ein Element senden. Somit muss
MatrixName[n, n]
zuMatrixName
ändern. -
Sie brauchen nicht den Vektor zu instanziiert und Werte Matrices, da die Eigen-Methode dies für Sie erledigt und die Werte in den beiden Argumente kehren Sie dank der aus Schlüsselwort senden. Eine Sache, als auch zu beachten ist, dass Sie die Ausgabe erhalten werden, wie folgt:
-
Werte werden eine [n + 1,1] Matrix
-
Vektor wird eine [n + 1, n + 1] Matrix
-
Nicht als Matrix (n, 0), wie Sie von Ihrem ursprünglichen Code erwartet.
Der Code wird wie folgt aussehen:
Matrix MatrixName = new Matrix(n, n);
Matrix vector;
Matrix values;
Matrix.Eigen(MatrixName, out values, out vector);
Andere Tipps
Sie Code sollte wie folgt aussehen:
Matrix MatrixName = new Matrix(n, n);
Matrix vector;
Matrix values;
Matrix.Eigen(MatrixName, out values, out vector);
C # out
Schlüsselwort bedeutet, dass Verfahren Eigen
Objekt für Sie erstellen, so dass Sie nicht diesen new Matrix(n, 0);
tun sollten