public MatrixValue Function(MatrixValue A, MatrixValue x, MatrixValue b) { var cg = new CGSolver(A); cg.X0 = x; return(cg.Solve(b)); }
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)); }