Papers
Chan, Tony, and Henk A. Van der Vorst. “Approximate and Incomplete Factorizations.”
Benzi, M., G. H. Golub, and J. Liesen. “Numerical Solution of Saddle Point Problems.” Acta Numerica 14 (2005): 1-137.
MATLAB® Documentation
MATLAB® Technical Documentation
Documentation for MathWorks Products, R2006a
MATLAB® Mathematics Documentation
Other Thoughts
Is there a simple way to count the fill-in in elimination?
Run chol (or lu) and use “nnz” (number of non-zeros)
% Generate discrete Laplacian operator
A=delsq(numgrid(‘S’,100));
% Cholesky factorize
R=chol(A);
nnz(R)
ans = 941289
% As above, but permute rows & columns by approximate minimum degree
p=symamd(A);
R=chol(A(p,p));
nnz(R)
ans = 184917
Does min degree just take nodes a row at a time (if it breaks ties correctly)? If that is N^3 - and would sparse backslash do it?
Yes it does, it is a “greedy algorithm.” The approximate one might be a little different, but in principle it does the same thing. Sparse backslash does this automatically. If symmetric, then it uses “symmmd” (symmetric minimum degree), then “chol.” If non-symmetric, “colamd” (column approximate minimum degree), then umfpack.
This is about as fast as possible except for Fast Poisson Solvers?
Well, it is probably as fast as possible for Gaussian elimination. But iterative solvers do better, I think CG with Incomplete Cholesky should be N^(2.5). Then of course fast solvers, FFT-based and multigrid.
Develop a code for Incomplete LU and try it on the 2D matrix for increasing N. You can make it a general code or specialize it to these particular matrices (and decide which entries to keep in the approximate factors L and U). Try on A2D u = random right side. You could use eig to find the spectral radius of the preconditioned matrix B. That matrix is I - inv(P)A2D where P ≈ LU. Of course if P = A2D then B = 0 and convergence in 1 step.