コード例 #1
0
        public static IFactorization SpawnFactorization(FactorizersEnum factorizer, CoordinationalMatrix M)
        {
            IFactorization factorization;

            switch (factorizer)

            {
            case FactorizersEnum.IncompleteCholesky:
                return(factorization = new IncompleteCholesky(M));

            case FactorizersEnum.IncompleteLU:
                return(factorization = new IncompleteLU(M));

            case FactorizersEnum.IncompleteLUsq:
                return(factorization = new IncompleteLUsq(M));

            case FactorizersEnum.DiagonalFactorization:
                return(factorization = new DioganalFactorization(M));

            case FactorizersEnum.SimpleFactorization:
                return(factorization = new SimpleFactorization(M));

            case FactorizersEnum.WithoutFactorization:
                return(factorization = null);

            default: return(null);
            }
        }
コード例 #2
0
ファイル: Diagonal.cs プロジェクト: alandre/SLAE-solver
        public void FactorizationSolve()
        {
            DioganalFactorization diag = new DioganalFactorization(FA);
            var result = diag.LSolve(new Vector(new double[] { 2, 3, 4 }));

            double[] resultActual = new double[]
            {
                2.0 / Math.Sqrt(10),
                3.0 / Math.Sqrt(10),
                4.0 / Math.Sqrt(10)
            };

            for (int i = 0; i < result.Size; i++)
            {
                Assert.Equal(result[i], resultActual[i], 8);
            }
        }
コード例 #3
0
ファイル: Diagonal.cs プロジェクト: alandre/SLAE-solver
        public void FactorizationDiag()
        {
            DioganalFactorization diag = new DioganalFactorization(FA);
            var result = diag.LMult(new Vector(new double[] { 1, 1, 1 }));

            double[] resultActual = new double[]
            {
                Math.Sqrt(10),
                Math.Sqrt(10),
                Math.Sqrt(10)
            };

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