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.
- Check that a, irow, icol, ipiv and istr have not been corrupted between calls to nag_sparse_sym_chol_fac (f11jac) and nag_sparse_sym_precon_ichol_solve (f11jbc).
- NE_ALLOC_FAIL
-
Dynamic memory allocation failed.
See
Section 2.3.1.2 in How to Use the NAG Library and its Documentation for further information.
- NE_BAD_PARAM
-
On entry, argument had an illegal value.
- NE_INT
-
On entry, .
Constraint: .
- NE_INTERNAL_ERROR
-
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact
NAG for assistance.
See
Section 2.7.6 in How to Use the NAG Library and its Documentation for further information.
- NE_INVALID_ROWCOL_PIVOT
-
On entry, , , .
Constraint: and .
On entry, is a repeated value: .
- NE_INVALID_SCS
-
On entry, , and .
Constraint: and .
On entry, , and .
Constraint: and .
- NE_INVALID_SCS_PRECOND
-
On entry,
istr appears to be invalid.
On entry,
is inconsistent with
irow:
.
- NE_NO_LICENCE
-
Your licence key may have expired or may not have been installed correctly.
See
Section 2.7.5 in How to Use the NAG Library and its Documentation for further information.
- NE_NOT_STRICTLY_INCREASING
-
On entry, is out of order: .
On entry, the location () is a duplicate: .
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).