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); } }
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); } }
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); } }