Le calcul des vecteurs propres en C # en utilisant avancée Bibliothèque Matrice en C #. NET

StackOverflow https://stackoverflow.com/questions/4400203

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!

Était-ce utile?

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:

  1. Remarquez le mot-clé out à côté des paramètres d et v. Vous devez ajouter le mot-clef à l'appel à Eigen.

  2. Le code prévoit une matrice comme premier argument, alors que vous envoyez un élément. Ainsi, MatrixName[n, n] doit changer pour MatrixName.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top