Le calcul des vecteurs propres en C # en utilisant avancée Bibliothèque Matrice en C #. NET
-
25-09-2019 - |
Question
Ok les gars, j'utilise la bibliothèque suivante: http: //www.codeproject. com / KB / recettes / AdvancedMatrixLibrary.aspx
Et je veux 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 les travaux de la bibliothèque, mais je ne sais pas comment formuler mon code c #.
Toute aide serait fantastique!
La solution
En regardant la bibliothèque, la signature de la méthode Eigen ressemble à ceci:
public static void Eigen(Matrix Mat, out Matrix d,out Matrix v)
Il y a quelques erreurs:
-
Remarquez le mot-clé
out
à côté des paramètres d et v. Vous devez ajouter le mot-clef à l'appel à Eigen. -
Le code prévoit une matrice comme premier argument, alors que vous envoyez un élément. Ainsi,
MatrixName[n, n]
doit changer pourMatrixName
. -
Vous n'avez pas besoin d'instancier le vecteur et les valeurs Matrices, puisque la méthode Eigen fait pour vous et renverra les valeurs dans les deux arguments que vous envoyez grâce au mot-clef. Une chose à noter est que bien que vous recevrez la sortie comme suit:
-
valeurs seront une [n + 1,1] matrice
-
vecteur sera un [n + 1, n + 1] Matrice
-
Non 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);
Autres conseils
code devrait 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 le faire new Matrix(n, 0);