/// <summary> /// Calculates the eigenvalues and eigenvectors of the symmetric matrix. /// </summary> /// <returns>The eigenvalues and eigenvectors of the matrix.</returns> public (Vector eigenvalues, Matrix eigenvectors) CalcEigensystem() { Preconditions.CheckSquare(this); double[] fullMatrix = Conversions.PackedUpperColMajorToFullSymmColMajor(data, Order); var eigensystem = SymmetricEigensystemFull.Create(Order, fullMatrix, true); return(eigensystem.EigenvaluesReal, eigensystem.EigenvectorsRight); }
private static void TestEigenvaluesOnly(LinearAlgebraProviderChoice providers) { TestSettings.RunMultiproviderTest(providers, delegate() { var A = Matrix.CreateFromArray(SymmPosDef10by10.Matrix); var eigenvaluesExpected = Vector.CreateFromArray(SymmPosDef10by10.Eigenvalues); var eigenvectorsExpected = Matrix.CreateFromArray(SymmPosDef10by10.Eigenvectors); var eigensystem = SymmetricEigensystemFull.Create(A.NumRows, A.RawData, false); // Check comparer.AssertEqual(eigenvaluesExpected, eigensystem.EigenvaluesReal); Assert.True(eigensystem.EigenvectorsRight == null); Assert.True(eigensystem.EigenvaluesImaginary == null); Assert.True(eigensystem.EigenvectorsLeft == null); }); }