The discrete Neumann Problem is singular: . It is solvable iff , that is, . Then the solution is unique up to adding a constant. Ways to handle this:
- Project the data. Remove the mean of the current pattern, (or the -weighted version). Without this, the system is inconsistent, and a regularised solver silently returns the solution to a different problem.
- Krylov on the singular system (see Projected Conjugate Gradient). CG and MINRES converge on consistent singular symmetric systems if started in . Projecting the iterates and the preconditioner output onto keeps round-off from drifting into the kernel. MINRES handles semidefinite and nearly singular cases more robustly.
- Pinning. Fix one DOF, , by replacing its row and column as for a Dirichlet condition. This gives an SPD matrix and is simple, but the grounding is attached to an arbitrary node. The solution is re-grounded afterwards. With a sparse direct solver this is the Projected Cholesky Factorization.
- Mean-value constraint. Add a Lagrange multiplier for (or ), which gives a saddle-point system of size .
- Shift . Makes the matrix SPD, but it solves a slightly different problem. The relative perturbation of the solution is of order , where is the smallest nonzero eigenvalue of . It is therefore used with very small , together with the projection in 1.
After solving, ground the solution, for example by subtracting its boundary mean or making its boundary nodal values sum to zero, so voltages are comparable to measurements that are themselves mean-free (see Grounding of the Potential).
In ModularEIT.jl: projected_cholesky, pbcg.
References
- P. Bochev, R. B. Lehoucq (2005). On the Finite Element Solution of the Pure Neumann Problem. SIAM Review 47(1), 50–66. doi:10.1137/S0036144503426074
- C. C. Paige, M. A. Saunders (1975). Solution of Sparse Indefinite Systems of Linear Equations. SIAM J. Numer. Anal. 12(4), 617–629. doi:10.1137/0712047