LSLTR

Solves a real tridiagonal system of linear equations.

Required Arguments

C — Vector of length N containing the subdiagonal of the tridiagonal matrix in C(2) through C(N). (Input/Output)
On output C is destroyed.

D — Vector of length N containing the diagonal of the tridiagonal matrix. (Input/Output)
On output D is destroyed.

E — Vector of length N containing the superdiagonal of the tridiagonal matrix in E(1) through E(N 1). (Input/Output)
On output E is destroyed.

B — Vector of length N containing the right-hand side of the linear system on entry and the solution vector on return. (Input/Output)

Optional Arguments

N — Order of the tridiagonal matrix. (Input)
Default: N = size (C,1).

FORTRAN 90 Interface

Generic: CALL LSLTR (C, D, E, B [])

Specific: The specific interface names are S_LSLTR and D_LSLTR.

FORTRAN 77 Interface

Single: CALL LSLTR (N, C, D, E, B)

Double: The double precision name is DLSLTR.

Description

Routine LSLTR factors and solves the real tridiagonal linear system Ax = b. LSLTR is intended just for tridiagonal systems. The coefficient matrix does not have to be symmetric. The algorithm is Gaussian elimination with partial pivoting for numerical stability. See Dongarra (1979), LINPACK subprograms SGTSL/DGTSL, for details. When computing on vector or parallel computers the cyclic reduction algorithm, LSLCR, should be considered as an alternative method to solve the system.

Comments

Informational error

 

Type

Code

Description

4

2

An element along the diagonal became exactly zero during execution.

Example

A system of n = 4 linear equations is solved.

 

USE LSLTR_INT

USE WRRRL_INT

! Declaration of variables

INTEGER N

PARAMETER (N=4)

!

REAL B(N), C(N), D(N), E(N)

CHARACTER CLABEL(1)*6, FMT*8, RLABEL(1)*4

!

DATA FMT/’(E13.6)’/

DATA CLABEL/’NUMBER’/

DATA RLABEL/’NONE’/

! C(*), D(*), E(*), and B(*)

! contain the subdiagonal, diagonal,

! superdiagonal and right hand side.

DATA C/0.0, 0.0, -4.0, 9.0/, D/6.0, 4.0, -4.0, -9.0/

DATA E/-3.0, 7.0, -8.0, 0.0/, B/48.0, -81.0, -12.0, -144.0/

!

!

CALL LSLTR (C, D, E, B)

! Output the solution.

CALL WRRRL (’Solution:’, B, RLABEL, CLABEL, 1, N, 1, FMT=FMT)

END

Output

 

Solution:

1 2 3 4

0.400000E+01 -0.800000E+01 - 0.700000E+01 0.900000E+01