2010-12-09 37 views
4

Ok les gars, j'utilise la bibliothèque suivante: http://www.codeproject.com/KB/recipes/AdvancedMatrixLibrary.aspxCalcul de vecteurs propres en C# à l'aide de Advanced Matrix Library en C#. NET

Et je souhaite calculer les vecteurs propres de certaines matrices que j'ai. Je ne sais pas comment formuler le code.

Jusqu'à présent, j'ai essayé:

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); 

Cependant, il dit que la meilleure surcharge match de méthode a quelques arguments non valides. Je sais que la bibliothèque fonctionne mais je ne sais pas comment formuler mon code C#.

Toute aide serait fantastique!

Répondre

6

En regardant la bibliothèque, la signature la méthode Eigen ressemble à ceci:

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

Il y a quelques erreurs:

  1. Notez le mot-clé out en regard des paramètres d et v. Vous devez ajouter le mot-clé out à l'appel de Eigen.

  2. Le code attend une matrice comme premier argument, pendant l'envoi d'un élément. Par conséquent, MatrixName[n, n] doit être remplacé par MatrixName. Vous n'avez pas besoin d'instancier les matrices vectorielles et de valeurs, puisque la méthode Eigen le fait pour vous et renverra les valeurs dans les deux arguments que vous envoyez grâce au mot-clé out. Une chose à noter est que bien que vous recevrez la sortie comme suit:

    • valeurs seront un [n + 1,1] Matrice

    • vecteur sera un [n + 1, n 1] Matrice

Pas comme matrice (n, 0) que vous attendez de votre code initial.

Le code ressemblera à ceci:

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

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

Brillant, je vous remercie! J'ai réglé un certain nombre de choses pour moi. – RHodgett

5

Code Vous devriez ressembler à ceci:

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

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

mot-clé C# out signifie que la méthode Eigen va créer un objet pour vous, alors vous ne devriez pas faire new Matrix(n, 0);