2010-12-09 16 views
4

Ok Leute, ich benutze die folgende Bibliothek: http://www.codeproject.com/KB/recipes/AdvancedMatrixLibrary.aspxBerechnen von Eigenvektoren in C# mithilfe der erweiterten Matrixbibliothek in C#. NET

Und ich möchte die Eigenvektoren bestimmter Matrizen berechnen, die ich habe. Ich weiß nicht, wie ich den Code formulieren soll.

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 überladene Methode Spiel einige ungültige Argumente hat. Ich weiß, dass die Bibliothek funktioniert, aber ich weiß nur nicht, wie ich meinen C# -Code formulieren soll.

Jede Hilfe wäre fantastisch!

Antwort

6

Mit Blick auf die Bibliothek, die nicht tun, die Unterzeichnung die Eigen-Methode sieht wie folgt aus:

public static void Eigen(Matrix Mat, out Matrix d,out Matrix v) 

Es gibt ein paar Fehler:

  1. Beachten Sie das Schlüsselwort out neben den Parametern d und v. Sie müssen das out-Schlüsselwort zum Aufruf von Eigen hinzufügen.

  2. Der Code erwartet eine Matrix als erstes Argument, während Sie ein Element senden. Daher muss MatrixName[n, n] zu MatrixName geändert werden.

  3. Sie müssen die Vektor- und Werte-Matrizen nicht instanziieren, da die Eigen-Methode dies für Sie übernimmt und die Werte der beiden Argumente, die Sie senden, dank des out-Schlüsselworts zurückgibt. Eine Sache, wie 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 erwarten.

Der Code wird wie folgt aussehen:

Matrix MatrixName = new Matrix(n, n); 
Matrix vector; 
Matrix values; 

Matrix.Eigen(MatrixName, out values, out vector); 
+0

Brilliant, danke! Habe eine Menge Sachen für mich erledigt. – RHodgett

5

Code Sie sollten 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 sollten Sie diese new Matrix(n, 0);