1

I have a matrix object and want to find the eigenvector that corresponds to an eigenvalue of 1. How would I do that? I'm currently solving it with a good ole' for loop, but am wondering whether there are more elegant ways to do it

using MathNet.Numerics.LinearAlgebra;
using MathNet.Numerics.LinearAlgebra.Factorization;

public static Vector<double> FindRelevantEigenvector(Matrix<double> matrix)
{
    Evd<double> eigen = matrix.Evd();
    var eigenValues = eigen.EigenValues;
    var relevantIndex = FindEigenValueOfOneIndex(eigenValues);
    if (relevantIndex == eigenValue.Count) return null;
    var eigenVectors = eigen.EigenVectors;
    return eigenVectors.Row(relevantIndex);
}

private static int FindEigenValueOfOneIndex(Vector<Complex> eigenValues)
{
    for (int index = 0; index < eigenValues.Count; index++)
    {
        if (eigenValues[index] == 1) return index;
    }
    return eigenValues.Count;
}
emilaz
  • 1,722
  • 1
  • 15
  • 31

0 Answers0