public void SolveTest2()
{
double[,] value = // not positive-definite
{
{ 6, -1, 2, 6 },
{ -1, 3, -3, -2 },
{ 2, -3, 2, 0 },
{ 6, -2, 0, 0 },
};
var chol = new CholeskyDecomposition(value, true);
double[,] L = chol.LeftTriangularFactor;
double[,] B = Matrix.Identity(4);
double[,] expected =
{
{ 0.4000, 1.2000, 1.4000, -0.5000 },
{ 1.2000, 3.6000, 4.2000, -2.0000 },
{ 1.4000, 4.2000, 5.4000, -2.5000 },
{ -0.5000, -2.0000, -2.5000, 1.0000 },
};
double[,] actual = chol.Solve(B);
Assert.IsTrue(Matrix.IsEqual(expected, actual, 1e-10));
Assert.IsTrue(Matrix.IsEqual(chol.Reverse(), value, 1e-6));
}