Beispiel #1
0
        public MatrixValue Function(MatrixValue A, MatrixValue x, MatrixValue b)
        {
            var cg = new CGSolver(A);

            cg.X0 = x;
            return(cg.Solve(b));
        }
Beispiel #2
0
        public MatrixValue Function(MatrixValue M, MatrixValue phi)
        {
            if (M.IsSymmetric)
            {
                var cg = new CGSolver(M);
                return(cg.Solve(phi));
            }
            else if (M.DimensionX == M.DimensionY && M.DimensionY > 64)             // Is there a way to "guess" a good number for this?
            {
                var gmres = new GMRESkSolver(M);
                gmres.Restart = 30;
                return(gmres.Solve(phi));
            }

            return(M.Inverse() * phi);
        }
        public static Double[,] Cg(Double[,] A, Double[,] b)
        {
            var cg = new CGSolver(A);

            return(cg.Solve(b));
        }