使用C#中的高级矩阵库计算C#中的EigenVectors.净

RHo*_*ett 4 .net matrix eigenvector c#-4.0

好的,我使用以下库: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);
Run Code Online (Sandbox Code Playgroud)

但是它说最好的重载方法匹配有一些无效的参数.我知道图书馆有效,但我不知道如何制定我的c#代码.

任何帮助都会很棒!

Wal*_*shi 6

看看图书馆,Eigen方法的签名如下:

public static void Eigen(Matrix Mat, out Matrix d,out Matrix v)
Run Code Online (Sandbox Code Playgroud)

有一些错误:

  1. 注意outd和v参数旁边的关键字.您需要将out关键字添加到对Eigen的调用中.

  2. 当您发送元素时,代码需要Matrix作为第一个参数.因此,MatrixName[n, n]需要改变MatrixName.

  3. 您不需要实例化向量和值Matrices,因为Eigen方法为您执行此操作,并且将返回您发送的两个参数中的值,这要归功于out关键字.还有一点需要注意的是,您将收到如下输出:

    • 值将是[n + 1,1]矩阵

    • 向量将是[n + 1,n + 1]矩阵

不像您对初始代码所期望的那样使用矩阵(n,0).

代码如下所示:

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

Matrix.Eigen(MatrixName, out values, out vector);
Run Code Online (Sandbox Code Playgroud)


alp*_*use 5

您的代码应如下所示:

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

Matrix.Eigen(MatrixName, out values, out vector);
Run Code Online (Sandbox Code Playgroud)

C#out关键字意味着该方法Eigen将为您创建对象,因此您不应该这样做new Matrix(n, 0);