I wonder what is a fair way to solve (maybe approximately) a linear equation system Ax = b
, at this time. The A
may be very large scale and sparse. I might want to use an iterative solution approach (e.g. CG, MINRES etc.), which is allegedly more appropriate than the direct (factorization) methods.
I noticed LinearSolve.jl
, but I don’t think his documentation teaches people well.
I am not aware of how to use that package properly after reading.
e.g. Solving Linear Systems in Julia · LinearSolve.jl
What does
p, t
mean?And I think he should stress the usage of
matrix-free
operator, since this is the novelty of this package. Otherwise I can use A\b
directly.This is to say, I think there should be a proper example, e.g. generate a 100-by-100 sparse
A
, and showcase how to prepare the input arg A
—whether it should be a SparseMatrixCSC type, or a Function
that takes x
as an argument and returns an image vector. And how to prepare the b
vector—should it be a SparseVector or something.
Another example, the introduction here Accelerating your Linear Solves · LinearSolve.jl
A Krylov subspace method with proper preconditioning will be better than direct solvers when the matrices get large enough. You could always precondition a sparse matrix with iLU as an easy choice, though the tolerance would need to be tuned in a problem-specific way.
What does “iLU” mean? This terms comes without other information. I guess there should be a link or something associated.
And there seems to be multiple solver packages, I don’t know which one should I choose. e.g. I want to use MINRES, there is IterativeSolversJL_MINRES
and KrylovJL_MINRES
. Can someone tell me the status quo?
Thanks, I’d appreciate.