public void LUDecomposition_4x4Matrix_InverseMatrixCalculated() { var d = new LU(); var inverse = d.Inverse(_m); Assert.AreEqual(2.577, Math.Round(inverse[0, 0], 3)); Assert.AreEqual(-2.142, Math.Round(inverse[0, 1], 3)); Assert.AreEqual(-2.144, Math.Round(inverse[0, 2], 3)); Assert.AreEqual(1.708, Math.Round(inverse[0, 3], 3)); Assert.AreEqual(-2.142, Math.Round(inverse[1, 0], 3)); Assert.AreEqual(3.032, Math.Round(inverse[1, 1], 3)); Assert.AreEqual(1.302, Math.Round(inverse[1, 2], 3)); Assert.AreEqual(-2.217, Math.Round(inverse[1, 3], 3)); Assert.AreEqual(-2.144, Math.Round(inverse[2, 0], 3)); Assert.AreEqual(1.302, Math.Round(inverse[2, 1], 3)); Assert.AreEqual(3.038, Math.Round(inverse[2, 2], 3)); Assert.AreEqual(-2.167, Math.Round(inverse[2, 3], 3)); Assert.AreEqual(1.708, Math.Round(inverse[3, 0], 3)); Assert.AreEqual(-2.217, Math.Round(inverse[3, 1], 3)); Assert.AreEqual(-2.167, Math.Round(inverse[3, 2], 3)); Assert.AreEqual(2.674, Math.Round(inverse[3, 3], 3)); }
public void ShouldInert() { var m = new Matrix(new double[, ] { { 4, 7 }, { 2, 6 } }); var m1 = LU.Inverse(m); var expected = new double[, ] { { 0.6, -0.7 }, { -0.2, 0.4 } }; for (var i = 0; i < m.Rows; ++i) { for (var j = 0; j < m.Columns; ++j) { Assert.AreEqual(expected[i, j], m1[i, j], 0.0001); } } }