Esempio n. 1
0
        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);
                }
            }
        }