2

MathNet Numerics の Evd<> クラスを使用して行列の固有ベクトルを取得しましたが、型であることが判明し、それVector<Complex>を にキャストできませんでしたVector<double>。これは私の操作に必要なものです。

これは私が固有ベクトルを取得した方法です:

DenseMatrix processedData = someData;
Evd<> eigen = processedData.evd();
Vector<Complex> eigenvector = (Vector<Complex>)eigen.EigenValues;

' ' としてキャストしようとしたときVector<double>、プログラムはそれを受け入れませんでした。で行列の固有ベクトルを取得する方法はありVector<double>ますか?

4

2 に答える 2

2

同じクラス のEigenVectorsプロパティだけではありませんか?

public abstract class Evd<T> : ISolver<T>
where T : struct, IEquatable<T>, IFormattable
{
    /// <summary>
    /// Gets or sets the eigen values (λ) of matrix in ascending value.
    /// </summary>
    public Vector<Complex> EigenValues { get; private set; }

    /// <summary>
    /// Gets or sets eigenvectors.
    /// </summary>
    public Matrix<T> EigenVectors { get; private set; }
}

ドキュメントはこちら: http://numerics.mathdotnet.com/api/MathNet.Numerics.LinearAlgebra.Factorization/Evd%601.htm#EigenVectors

実数の NxN 行列には、最大 N 個 (一意である必要はありません) の実固有値と対応する固有ベクトルが含まれるため、両方を配列で返す必要があります。複雑なNxN 行列には、対応する固有ベクトルを持つ正確に N (一意である必要はありません) の固有値があります。

于 2014-07-12T04:25:20.740 に答える