NAG Library Routine Document
F07BHF (DGBRFS)
1 Purpose
F07BHF (DGBRFS) returns error bounds for the solution of a real band system of linear equations with multiple right-hand sides, or . It improves the solution by iterative refinement, in order to reduce the backward error as much as possible.
2 Specification
SUBROUTINE F07BHF ( |
TRANS, N, KL, KU, NRHS, AB, LDAB, AFB, LDAFB, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO) |
INTEGER |
N, KL, KU, NRHS, LDAB, LDAFB, IPIV(*), LDB, LDX, IWORK(N), INFO |
REAL (KIND=nag_wp) |
AB(LDAB,*), AFB(LDAFB,*), B(LDB,*), X(LDX,*), FERR(NRHS), BERR(NRHS), WORK(3*N) |
CHARACTER(1) |
TRANS |
|
The routine may be called by its
LAPACK
name dgbrfs.
3 Description
F07BHF (DGBRFS) returns the backward errors and estimated bounds on the forward errors for the solution of a real band system of linear equations with multiple right-hand sides or . The routine handles each right-hand side vector (stored as a column of the matrix ) independently, so we describe the function of F07BHF (DGBRFS) in terms of a single right-hand side and solution .
Given a computed solution
, the routine computes the
component-wise backward error
. This is the size of the smallest relative perturbation in each element of
and
such that
is the exact solution of a perturbed system
Then the routine estimates a bound for the
component-wise forward error in the computed solution, defined by:
where
is the true solution.
For details of the method, see the
F07 Chapter Introduction.
4 References
Golub G H and Van Loan C F (1996) Matrix Computations (3rd Edition) Johns Hopkins University Press, Baltimore
5 Parameters
- 1: TRANS – CHARACTER(1)Input
On entry: indicates the form of the linear equations for which
is the computed solution.
- The linear equations are of the form .
- or
- The linear equations are of the form .
Constraint:
, or .
- 2: N – INTEGERInput
On entry: , the order of the matrix .
Constraint:
.
- 3: KL – INTEGERInput
On entry: , the number of subdiagonals within the band of the matrix .
Constraint:
.
- 4: KU – INTEGERInput
On entry: , the number of superdiagonals within the band of the matrix .
Constraint:
.
- 5: NRHS – INTEGERInput
On entry: , the number of right-hand sides.
Constraint:
.
- 6: AB(LDAB,) – REAL (KIND=nag_wp) arrayInput
Note: the second dimension of the array
AB
must be at least
.
On entry: the original
by
band matrix
as supplied to
F07BDF (DGBTRF).
The matrix is stored in rows
to
, more precisely, the element
must be stored in
See
Section 8 in F07BAF (DGBSV) for further details.
- 7: LDAB – INTEGERInput
On entry: the first dimension of the array
AB as declared in the (sub)program from which F07BHF (DGBRFS) is called.
Constraint:
.
- 8: AFB(LDAFB,) – REAL (KIND=nag_wp) arrayInput
Note: the second dimension of the array
AFB
must be at least
.
On entry: the
factorization of
, as returned by
F07BDF (DGBTRF).
- 9: LDAFB – INTEGERInput
On entry: the first dimension of the array
AFB as declared in the (sub)program from which F07BHF (DGBRFS) is called.
Constraint:
.
- 10: IPIV() – INTEGER arrayInput
-
Note: the dimension of the array
IPIV
must be at least
.
On entry: the pivot indices, as returned by
F07BDF (DGBTRF).
- 11: B(LDB,) – REAL (KIND=nag_wp) arrayInput
-
Note: the second dimension of the array
B
must be at least
.
On entry: the by right-hand side matrix .
- 12: LDB – INTEGERInput
On entry: the first dimension of the array
B as declared in the (sub)program from which F07BHF (DGBRFS) is called.
Constraint:
.
- 13: X(LDX,) – REAL (KIND=nag_wp) arrayInput/Output
-
Note: the second dimension of the array
X
must be at least
.
On entry: the
by
solution matrix
, as returned by
F07BEF (DGBTRS).
On exit: the improved solution matrix .
- 14: LDX – INTEGERInput
On entry: the first dimension of the array
X as declared in the (sub)program from which F07BHF (DGBRFS) is called.
Constraint:
.
- 15: FERR(NRHS) – REAL (KIND=nag_wp) arrayOutput
On exit: contains an estimated error bound for the th solution vector, that is, the th column of , for .
- 16: BERR(NRHS) – REAL (KIND=nag_wp) arrayOutput
On exit: contains the component-wise backward error bound for the th solution vector, that is, the th column of , for .
- 17: WORK() – REAL (KIND=nag_wp) arrayWorkspace
- 18: IWORK(N) – INTEGER arrayWorkspace
- 19: INFO – INTEGEROutput
On exit:
unless the routine detects an error (see
Section 6).
6 Error Indicators and Warnings
Errors or warnings detected by the routine:
If , the th parameter had an illegal value. An explanatory message is output, and execution of the program is terminated.
7 Accuracy
The bounds returned in
FERR are not rigorous, because they are estimated, not computed exactly; but in practice they almost always overestimate the actual error.
For each right-hand side, computation of the backward error involves a minimum of floating point operations. Each step of iterative refinement involves an additional operations. This assumes and . At most five steps of iterative refinement are performed, but usually only one or two steps are required.
Estimating the forward error involves solving a number of systems of linear equations of the form or ; the number is usually or and never more than . Each solution involves approximately operations.
The complex analogue of this routine is
F07BVF (ZGBRFS).
9 Example
This example solves the system of equations
using iterative refinement and to compute the forward and backward error bounds, where
Here
is nonsymmetric and is treated as a band matrix, which must first be factorized by
F07BDF (DGBTRF).
9.1 Program Text
Program Text (f07bhfe.f90)
9.2 Program Data
Program Data (f07bhfe.d)
9.3 Program Results
Program Results (f07bhfe.r)