IMSL_SP_BDSOL

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

The IMSL_SP_BDSOL function solves a general band system of linear equations Ax = b. By using keywords, any of several related computations can be performed.

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_BDSOL(b, nlca, nuca[, a] [, BLK_FACTOR=value] [, CONDITION=variable] [, /DOUBLE] [, FACTOR=array] [, PIVOT=array] [, TRANSPOSE=value] )

Return Value

A one-dimensional array containing the solution of the linear system Ax = b.

Arguments

b

One-dimensional matrix containing the right-hand side.

nlca

Number of lower codiagonals in a.

nuca

Number of upper codiagonals in a.

a

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

Keywords

BLK_FACTOR

The blocking factor. This keyword must be set no larger than 32. Default: BLK_FACTOR = 1.

CONDITION

Named variable into which an estimate of the L1 condition number is stored. This keyword cannot be used with PIVOT and FACTOR.

DOUBLE

If present and nonzero, double precision is used.

FACTOR

An array of size (2*nlca + nuca + 1) x N_ELEMENTS(b) containing the LU factorization of A with column pivoting, as returned from IMSL_SP_BDFAC. The keywords PIVOT and FACTOR must be used together. The keywords FACTOR and CONDITION cannot be used together.

PIVOT

One-dimensional array containing the pivot sequence. The keywords PIVOT and FACTOR must be used together. The keywords PIVOT and CONDITION cannot be used together.

TRANSPOSE

If present and nonzero, ATx = b is solved.

Discussion

The IMSL_SP_BDSOL function solves a system of linear algebraic equations with a real or complex band matrix A. It first computes the LU factorization of A with based on the blocked LU factorization algorithm given in Du Croz, et al, (1990). Level-3 BLAS invocations were replaced by in-line loops. The blocking factor BLK_FACTOR has the default value of 1, but can be reset to any positive value not exceeding 32.

The solution of the linear system is then found by solving two simpler systems, y = L–1b and x = U–1y. When the solution to the linear system or the inverse of the matrix is sought, an estimate of 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_BDSOL function fails if U, the upper triangular part of the factorization, has a zero diagonal element.

Example

Consider the 1000 x 1000 banded matrix below:

IMSL_SP_BDSOL-30.jpg

This example computes the solution to Ax = b, where b is a random vector.

n_rows = 1000L 
nlca = 1L 
nuca = 1L 
a = DBLARR(n_rows*(nlca+nuca+1)) 
a(1:n_rows-1) = 4 
a(n_rows:2*n_rows-1) = -1 
a(2*n_rows:*) = 4 
; Fill A with the values of the bands. 
seed = 123L 
b = RANDOMU(seed, n_rows) 
; Compute a random right-hand side. 
x = IMSL_SP_BDSOL(b, nlca, nuca, a) 
; Compute the solution using IMSL_SP_BDSOL above,  
; and output residual. 
PM, TOTAL(ABS(IMSL_SP_MVMUL(n_rows, n_rows, nlca, nuca, a, x)-b)) 
   1.2367884e-13 

Version History

6.4

Introduced

See Also

IMSL_SP_BDFAC