Ejemplo n.º 1
0
        public void LUDecomposition_CalculateLUMatrices_ReturnsAsExpected()
        {
            var luDecomposition = new LUDecomposition();
            var matrix          = new Matrix(2, 2, new double[, ] {
                { 4, 3 }, { 6, 3 }
            });

            var expectedL = new Matrix(2, 2, new double[, ] {
                { 1, 0 }, { 1.5, 1 }
            });
            var expectedU = new Matrix(2, 2, new double[, ] {
                { 4, 3 }, { 0, -1.5 }
            });

            var(l, u) = luDecomposition.Decompose(matrix);

            Assert.AreEqual(expectedL, l);
            Assert.AreEqual(expectedU, u);
        }
Ejemplo n.º 2
0
        public void When_Decompose_Matrix_With_LU()
        {
            Matrix matrix = new double[][]
            {
                new double[] { 6, 8, 2 },
                new double[] { -6, 7, -4 },
                new double[] { 2, -4, 3 }
            };
            var decompose = LUDecomposition.Decompose(matrix);
            var result    = (decompose.L * decompose.U).Evaluate();

            Assert.Equal(6, result.GetValue(0, 0).GetNumber());
            Assert.Equal(8, result.GetValue(0, 1).GetNumber());
            Assert.Equal(2, result.GetValue(0, 2).GetNumber());
            Assert.Equal(-6, result.GetValue(1, 0).GetNumber());
            Assert.Equal(7, result.GetValue(1, 1).GetNumber());
            Assert.Equal(-4, result.GetValue(1, 2).GetNumber());
            Assert.Equal(2, result.GetValue(2, 0).GetNumber());
            Assert.Equal(-4, System.Math.Round(result.GetValue(2, 1).GetNumber()));
            Assert.Equal(3, result.GetValue(2, 2).GetNumber());
        }