public void AlgorithmDiag()
        {
            _matrix = new double[3, 3] {
                { 2, 0, 0 },
                { 0, 2, 0 },
                { 1, 0, 2 }
            };

            IVector resultActual = new Vector(new double[] { 1, 1, 1 });

            DenseMatrix denseMatrix = DenseMatrixGen.DiagonalMatrix(3);// new DenseMatrix(_matrix);
            Vector      x0          = new Vector(new double[] { 0, 0, 0 });
            IVector     b           = denseMatrix.Multiply(resultActual);

            var result = loggingSolver.Solve(denseMatrix, x0, b);

            foreach (var elem in result)
            {
                _testOutputHelper.WriteLine(elem.ToString());
            }

            for (int i = 0; i < resultActual.Size; i++)
            {
                Assert.Equal(result[i], resultActual[i], 8);
            }
        }
Exemple #2
0
        public void SingularMatrix()
        {
            IVector resultActual = new Vector(new double[] { 1, 1, 1 });

            DenseMatrix denseMatrix = DenseMatrixGen.SingularMatrix(3);
            Vector      x0          = new Vector(new double[] { 0, 0, 0 });
            IVector     b           = denseMatrix.Multiply(resultActual);

            var result = loggingSolver.Solve(denseMatrix, x0, b);

            foreach (var elem in result)
            {
                _testOutputHelper.WriteLine(elem.ToString());
            }

            Assert.NotEmpty(result);
        }
Exemple #3
0
        public void FactorizeDiagMatrix(FactorizersEnum factorizers)
        {
            //_matrix = new double[3, 3] { { 3, 0, 2 }, // симметричная
            //                             { 0, 5, 0 },
            //                             { 2, 0, 3 } };
            IVector resultActual = new Vector(new double[] { 1, 1, 1, 1, 1 });

            DenseMatrix denseMatrix = DenseMatrixGen.DiagonalMatrix(5);//   new DenseMatrix(_matrix);
            Vector      x0          = new Vector(new double[] { 0, 0, 0, 0, 0 });
            IVector     b           = denseMatrix.Multiply(resultActual);

            var result = loggingSolver.Solve(denseMatrix, x0, b, Factorizer: FactorizersFactory.SpawnFactorization(factorizers, denseMatrix.ConvertToCoordinationalMatrix()));

            for (int i = 0; i < 5; i++)
            {
                _testOutputHelper.WriteLine(
                    denseMatrix[i, 0].ToString() + " " +
                    denseMatrix[i, 1].ToString() + " " +
                    denseMatrix[i, 2].ToString() + " " +
                    denseMatrix[i, 3].ToString() + " " +
                    denseMatrix[i, 4].ToString());
            }


            _testOutputHelper.WriteLine("");

            foreach (var elem in result)
            {
                _testOutputHelper.WriteLine(elem.ToString());
            }

            for (int i = 0; i < resultActual.Size; i++)
            {
                Assert.Equal(result[i], resultActual[i], 8);
            }
        }