|
NAG[f07hvc] NAG[nag_zpbrfs] - Refined solution with error bounds of complex Hermitian positive-definite band system of linear equations, multiple right-hand sides
|
|
Calling Sequence
f07hvc(uplo, kd, nrhs, ab, afb, b, x, ferr, berr, 'n'=n, 'fail'=fail)
nag_zpbrfs(. . .)
Parameters
|
uplo - String;
|
|
|
On entry: indicates whether the upper or lower triangular part of is stored and how has been factorized.
|
|
Constraint: "Nag_Upper" or "Nag_Lower". .
|
|
|
kd - integer;
|
|
|
On entry: , the number of superdiagonals or subdiagonals of the matrix .
|
|
Constraint: . .
|
|
|
nrhs - integer;
|
|
|
On entry: , the number of right-hand sides.
|
|
Constraint: . .
|
|
|
ab - Matrix(1..dim1, 1..dim2, datatype=complex[8], order=order);
|
|
|
Note: this array may be supplied in Fortran_order or C_order , as specified by order. All array parameters must use a consistent order.
|
|
|
afb - Matrix(1..dim1, 1..dim2, datatype=complex[8], order=order);
|
|
|
Note: this array may be supplied in Fortran_order or C_order , as specified by order. All array parameters must use a consistent order.
|
|
|
b - Matrix(1..dim1, 1..dim2, datatype=complex[8], order=order);
|
|
|
Note: this array may be supplied in Fortran_order or C_order , as specified by order. All array parameters must use a consistent order.
|
|
|
x - Matrix(1..dim1, 1..dim2, datatype=complex[8], order=order);
|
|
|
Note: this array may be supplied in Fortran_order or C_order , as specified by order. All array parameters must use a consistent order.
|
|
On exit: the improved solution matrix .
|
|
|
ferr - Vector(1..dim, datatype=float[8]);
|
|
|
Note: the dimension, dim, of the array ferr must be at least .
|
|
|
berr - Vector(1..dim, datatype=float[8]);
|
|
|
Note: the dimension, dim, of the array berr must be at least .
|
|
|
'n'=n - integer; (optional)
|
|
|
Default value: the second dimension of the array ab.
|
|
On entry: , the order of the matrix .
|
|
Constraint: . .
|
|
|
'fail'=fail - table; (optional)
|
|
|
The NAG error argument, see the documentation for NagError.
|
|
|
|
Description
|
|
|
Purpose
|
|
nag_zpbrfs (f07hvc) returns error bounds for the solution of a complex Hermitian positive-definite band system of linear equations with multiple right-hand sides, . It improves the solution by iterative refinement, in order to reduce the backward error as much as possible.
|
|
Error Indicators and Warnings
|
|
"NE_ALLOC_FAIL"
Dynamic memory allocation failed.
"NE_BAD_PARAM"
On entry, argument had an illegal value.
"NE_INT"
On entry, . Constraint: .
On entry, . Constraint: .
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 consult NAG for assistance.
|
|
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.
|
|
Further Comments
|
|
For each right-hand side, computation of the backward error involves a minimum of real floating-point operations. Each step of iterative refinement involves an additional real operations. This assumes . 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 ; the number is usually 5 and never more than 11. Each solution involves approximately real operations.
The real analogue of this function is f07hhc (nag_dpbrfs).
|
|
|
Examples
|
|
>
|
uplo := "Nag_Lower":
n := 4:
kd := 1:
nrhs := 2:
ab := Matrix([[0 +0*I , 9.390000000000001 +0*I , 1.08 +1.73*I , 1.69 +0*I ], [-0.04 -0.29*I , 2.65 +0*I , -0.33 -2.24*I , 2.17 +0*I ]], datatype=complex[8], order='C_order'):
afb := Matrix([[0 +0*I , 3.064310689208912 +0*I , 0.3524446799090123 +0.5645641631875845*I , 1.116713953189507 +0*I ], [-0.03581937870996762 -0.2596904956472652*I , 1.606635558731136 +0*I , -0.2053981677466558 -1.394217865916694*I , 0.428915067402645 +0*I ]], datatype=complex[8], order='C_order'):
b := Matrix([[-12.42 +68.42*I , 54.3 -56.56*I ], [-9.93 +0.88*I , 18.32 +4.76*I ], [-27.3 -0.01*I , -4.4 +9.970000000000001*I ], [5.31 +23.63*I , 9.43 +1.41*I ]], datatype=complex[8], order='C_order'):
x := Matrix([[-0.9999999999999992 +8.000000000000002*I , 5 -6.000000000000003*I ], [2.000000000000001 -3.000000000000006*I , 1.999999999999998 +3.000000000000004*I ], [-3.999999999999982 -5.000000000000002*I , -8.000000000000011 +4.000000000000001*I ], [7.000000000000005 +6.000000000000018*I , -1.000000000000003 -7.000000000000011*I ]], datatype=complex[8], order='C_order'):
ferr := Vector(2, datatype=float[8]):
berr := Vector(2, datatype=float[8]):
NAG:-f07hvc(uplo, kd, nrhs, ab, afb, b, x, ferr, berr, 'n' = n):
|
|
|