4

わかりました。次のライブラリを使用しています:http://www.codeproject.com/KB/recipes/AdvancedMatrixLibrary.aspx

そして、私が持っている特定の行列の固有ベクトルを計算したいと思います。コードの作成方法がわかりません。

これまでに私は試みました:

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

ただし、オーバーロードされたメソッドの最適な一致には、いくつかの無効な引数があると書かれています。ライブラリが機能することは知っていますが、c#コードを作成する方法がわかりません。

どんな助けでも素晴らしいでしょう!

4

2 に答える 2

6

ライブラリを見ると、Eigenメソッドのシグネチャは次のようになります。

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

いくつかのエラーがあります:

  1. outdおよびvパラメーターの横にあるキーワードに注意してください。Eigenの呼び出しにoutキーワードを追加する必要があります。

  2. 要素を送信している間、コードは最初の引数としてMatrixを想定しています。したがって、MatrixName[n, n]に変更する必要がありますMatrixName

  3. Eigenメソッドがこれを行い、outキーワードのおかげで送信する2つの引数の値を返すため、ベクトルと値の行列をインスタンス化する必要はありません。同様に注意すべきことの1つは、次のように出力を受け取ることです。

    • 値は[n+1,1]マトリックスになります

    • ベクトルは[n+1、n+1]行列になります

最初のコードから期待するほどMatrix(n、0)ではありません。

コードは次のようになります。

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

Matrix.Eigen(MatrixName, out values, out vector);
于 2010-12-09T16:13:37.257 に答える
5

コードは次のようになります。

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

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

C#outキーワードは、メソッドEigenがオブジェクトを作成することを意味するため、これを行うべきではありませんnew Matrix(n, 0);

于 2010-12-09T16:10:53.030 に答える