public void InverseTest1()
{
double[,] value = // positive-definite
{
{ 2, -1, 0 },
{ -1, 2, -1 },
{ 0, -1, 2 }
};
var chol = new CholeskyDecomposition(value, robust: false);
Assert.IsTrue(chol.IsPositiveDefinite);
var L = chol.LeftTriangularFactor;
float[][] expected =
{
new float[] { 0.750f, 0.500f, 0.250f },
new float[] { 0.500f, 1.000f, 0.500f },
new float[] { 0.250f, 0.500f, 0.750f },
};
double[,] actual = chol.Inverse();
Assert.IsTrue(actual.IsEqual(expected, 1e-6));
double[,] inv = chol.Solve(Matrix.Identity(3));
Assert.IsTrue(inv.IsEqual(expected, 1e-6));
}