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
, 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
is a lower triangular sparse matrix with unit diagonal,
is a diagonal matrix and
is a permutation matrix.
and
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
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
is the exact solution of a perturbed system of equations
, where
is a modest linear function of
, and
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
. In the interests of both reliability and efficiency, you are recommended to set
for the first of such calls, and to set
for all subsequent calls.
This example reads in a symmetric positive definite sparse matrix
and a vector
. It then calls
nag_sparse_sym_chol_fac (f11jac), with
and
, to compute the
complete Cholesky decomposition of
:
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).