public void SolveTest4()
{
// Test with more rows than columns
{
double[,] matrix =
{
{ 1, 2 },
{ 3, 4 },
{ 5, 6 },
};
double[,] rightSide =
{
{ 7 },
{ 8 },
{ 9 },
};
Assert.IsTrue(matrix.GetLength(0) > matrix.GetLength(1));
double[,] expected =
{
{ -6 },
{ 6.5 }
};
double[,] actual = Matrix.Solve(matrix, rightSide);
Assert.IsTrue(expected.IsEqual(actual, 1e-10));
}
// test with more columns than rows
{
double[,] matrix =
{
{ 1, 2, 3 },
{ 4, 5, 6 },
};
double[,] rightSide =
{
{ 7 },
{ 8 }
};
Assert.IsTrue(matrix.GetLength(0) < matrix.GetLength(1));
double[,] expected =
{
{ -55 / 18.0 },
{ 1 / 9.0 },
{ 59 / 18.0 },
};
double[,] actual = Matrix.Solve(matrix, rightSide);
Assert.IsTrue(expected.IsEqual(actual, 1e-10));
}
}