nag_sparse_sym_precon_ichol_solve (f11jbc) solves a system of linear equations involving the incomplete Cholesky preconditioning matrix generated by
nag_sparse_sym_chol_fac (f11jac).
nag_sparse_sym_precon_ichol_solve (f11jbc) solves a system of linear equations
involving the preconditioning matrix
$M=PLD{L}^{\mathrm{T}}{P}^{\mathrm{T}}$, corresponding to an incomplete Cholesky decomposition of a sparse symmetric matrix stored in symmetric coordinate storage (SCS) format (see
Section 2.1.2 in the f11 Chapter Introduction), as generated by
nag_sparse_sym_chol_fac (f11jac).
In the above decomposition
$L$ is a lower triangular sparse matrix with unit diagonal,
$D$ is a diagonal matrix and
$P$ is a permutation matrix.
$L$ and
$D$ are supplied to
nag_sparse_sym_precon_ichol_solve (f11jbc) through the matrix
which is a lower triangular
n by
n sparse matrix, stored in SCS format, as returned by
nag_sparse_sym_chol_fac (f11jac). The permutation matrix
$P$ is returned from
nag_sparse_sym_chol_fac (f11jac) via the array
ipiv.
It is envisaged that a common use of
nag_sparse_sym_precon_ichol_solve (f11jbc) will be to carry out the preconditioning step required in the application of
nag_sparse_sym_basic_solver (f11gec) to sparse symmetric linear systems.
nag_sparse_sym_precon_ichol_solve (f11jbc) is used for this purpose by the Black Box function
nag_sparse_sym_chol_sol (f11jcc).
nag_sparse_sym_precon_ichol_solve (f11jbc) may also be used in combination with
nag_sparse_sym_chol_fac (f11jac) to solve a sparse symmetric positive definite system of linear equations directly (see
Section 9.4 in
nag_sparse_sym_chol_fac (f11jac)). This use of
nag_sparse_sym_precon_ichol_solve (f11jbc) is demonstrated in
Section 10.
None.
The computed solution
$x$ is the exact solution of a perturbed system of equations
$\left(M+\delta M\right)x=y$, where
$c\left(n\right)$ is a modest linear function of
$n$, and
$\epsilon $ is the
machine precision.
The time taken for a call to
nag_sparse_sym_precon_ichol_solve (f11jbc) is proportional to the value of
nnzc returned from
nag_sparse_sym_chol_fac (f11jac).
It is expected that a common use of
nag_sparse_sym_precon_ichol_solve (f11jbc) will be to carry out the preconditioning step required in the application of
nag_sparse_sym_basic_solver (f11gec) to sparse symmetric linear systems. In this situation
nag_sparse_sym_precon_ichol_solve (f11jbc) is likely to be called many times with the same matrix
$M$. In the interests of both reliability and efficiency, you are recommended to set
${\mathbf{check}}=\mathrm{Nag\_SparseSym\_Check}$ for the first of such calls, and to set
${\mathbf{check}}=\mathrm{Nag\_SparseSym\_NoCheck}$ for all subsequent calls.
This example reads in a symmetric positive definite sparse matrix
$A$ and a vector
$y$. It then calls
nag_sparse_sym_chol_fac (f11jac), with
${\mathbf{lfill}}=-1$ and
${\mathbf{dtol}}=0.0$, to compute the
complete Cholesky decomposition of
$A$:
Then it calls
nag_sparse_sym_precon_ichol_solve (f11jbc) to solve the system
It then repeats the exercise for the same matrix permuted with the bandwidth-reducing Reverse Cuthill–McKee permutation, calculated with
nag_sparse_sym_rcm (f11yec).