public void EigenvalueDecompositionConstructorTest2()
{
// Asymmetric test
double[,] A =
{
{ 5, 2, 1 },
{ 1, 4, 1 },
{ -1, 2, 3 }
};
var target = new EigenvalueDecomposition(A);
var D = target.DiagonalMatrix;
var Q = target.Eigenvectors;
double[,] expectedD =
{
{ 6, 0, 0 },
{ 0, 4, 0 },
{ 0, 0, 2 }
};
// Decomposition identity
var actualA = Matrix.Multiply(Matrix.Multiply(Q, D), Q.Inverse());
Assert.IsTrue(Matrix.IsEqual(expectedD, D, 1e-5));
Assert.IsTrue(Matrix.IsEqual(A, actualA, 1e-5));
Assert.IsTrue(Matrix.IsEqual(A, target.Reverse(), 1e-5));
}
}