IMSL_SP_BDPDFAC

Syntax | Return Value | Arguments | Keywords | Discussion | Example | Version History | See Also

The IMSL_SP_BDPDFAC function computes the RTR Cholesky factorization of symmetric positive definite matrix, A, in band symmetric storage mode.

Note
This routine requires an IDL Advanced Math and Stats license. For more information, contact your ITT Visual Information Solutions sales or technical support representative.

Syntax

Result = IMSL_SP_BDPDFAC(a, n, ncoda [, CONDITION=variable]
[, /DOUBLE])

Return Value

An array of size (ncoda + 1) x n containing the RTR factorization of A in band symmetric storage mode.

Arguments

a

Array of size (ncoda + 1) x n containing the n x n banded coefficient matrix in band symmetric storage mode A(i,j). See Band Storage Format for a description of band symmetric storage mode.

n

Number rows in a.

ncoda

Number of upper codiagonals in a.

Keywords

CONDITION

Specifies a named variable into which an estimate of the L1 condition number is stored.

DOUBLE

If present and nonzero, double precision is used.

Discussion

The IMSL_SP_BDPDFAC function computes the RTR Cholesky factorization of A. R is an upper triangular band matrix.

The L1 condition number of A is computed using Higham's modifications to Hager's method, as given in Higham (1988). If the estimated condition number is greater than 1/ε (where ε is the machine precision), a warning message is issued. This indicates that very small changes in A may produce large changes in the solution x.

The IMSL_SP_BDPDFAC function fails if any submatrix of R is not positive definite or if R has a zero diagonal element. These errors occur only if A is very close to a singular matrix or to a matrix which is not positive definite.

The IMSL_SP_BDPDFAC function is partially based on the LINPACK subroutines CPBFA and SPBSL; see Dongarra et al. (1979).

Example

Solve a system of linear equations Ax = b, using both IMSL_SP_BDPDFAC and IMSL_SP_BDPDSOL, where:

IMSL_SP_BDPDFAC-36.jpg

IMSL_SP_BDPDFAC-37.jpg

n = 4L 
ncoda = 2L 
a = DBLARR((ncoda+1)*n) 
a(0:n-1) = [0, 0, -1, 1] 
a(n:2L*n-1) = [0, 0, 2, -1] 
a(2L*n:*) = [2, 4, 7, 3] 
; Define A in band symmetric storage mode. 
b = [6, -11, -11, 19] 
factor = IMSL_SP_BDPDFAC(a, n, ncoda) 
; Use IMSL_SP_BDPDFAC to compute the factorization. 
x = IMSL_SP_BDPDSOL(b, ncoda, Factor=factor) 
; Compute the solution 
PM, x 
   4.0000000 
   -6.0000000 
   2.0000000 
   9.0000000 

Version History

6.4

Introduced

See Also

IMSL_SP_BDFAC

IMSL_SP_BDPDSOL