hide long namesshow long names
hide short namesshow short names
Integer type:  int32  int64  nag_int  show int32  show int32  show int64  show int64  show nag_int  show nag_int

PDF version (NAG web site, 64-bit version, 64-bit version)
Chapter Contents
Chapter Introduction
NAG Toolbox

NAG Toolbox: nag_lapack_dgttrf (f07cd)

 Contents

    1  Purpose
    2  Syntax
    7  Accuracy
    9  Example

Purpose

nag_lapack_dgttrf (f07cd) computes the LU  factorization of a real n  by n  tridiagonal matrix A .

Syntax

[dl, d, du, du2, ipiv, info] = f07cd(dl, d, du, 'n', n)
[dl, d, du, du2, ipiv, info] = nag_lapack_dgttrf(dl, d, du, 'n', n)

Description

nag_lapack_dgttrf (f07cd) uses Gaussian elimination with partial pivoting and row interchanges to factorize the matrix A  as
A=PLU ,  
where P  is a permutation matrix, L  is unit lower triangular with at most one nonzero subdiagonal element in each column, and U  is an upper triangular band matrix, with two superdiagonals.

References

Anderson E, Bai Z, Bischof C, Blackford S, Demmel J, Dongarra J J, Du Croz J J, Greenbaum A, Hammarling S, McKenney A and Sorensen D (1999) LAPACK Users' Guide (3rd Edition) SIAM, Philadelphia http://www.netlib.org/lapack/lug

Parameters

Compulsory Input Parameters

1:     dl: – double array
The dimension of the array dl must be at least max1,n-1
Must contain the n-1 subdiagonal elements of the matrix A.
2:     d: – double array
The dimension of the array d must be at least max1,n
Must contain the n diagonal elements of the matrix A.
3:     du: – double array
The dimension of the array du must be at least max1,n-1
Must contain the n-1 superdiagonal elements of the matrix A.

Optional Input Parameters

1:     n int64int32nag_int scalar
Default: the dimension of the array d.
n, the order of the matrix A.
Constraint: n0.

Output Parameters

1:     dl: – double array
The dimension of the array dl will be max1,n-1
Stores the n-1 multipliers that define the matrix L of the LU factorization of A.
2:     d: – double array
The dimension of the array d will be max1,n
Stores the n diagonal elements of the upper triangular matrix U from the LU factorization of A.
3:     du: – double array
The dimension of the array du will be max1,n-1
Stores the n-1 elements of the first superdiagonal of U.
4:     du2n-2 – double array
Contains the n-2 elements of the second superdiagonal of U.
5:     ipivn int64int32nag_int array
Contains the n pivot indices that define the permutation matrix P. At the ith step, row i of the matrix was interchanged with row ipivi. ipivi will always be either i or i+1, ipivi=i indicating that a row interchange was not performed.
6:     info int64int32nag_int scalar
info=0 unless the function detects an error (see Error Indicators and Warnings).

Error Indicators and Warnings

Cases prefixed with W are classified as warnings and do not generate an error of type NAG:error_n. See nag_issue_warnings.

   info<0
If info=-i, argument i had an illegal value. An explanatory message is output, and execution of the program is terminated.
W  info>0
Element _ of the diagonal is exactly zero. The factorization has been completed, but the factor U is exactly singular, and division by zero will occur if it is used to solve a system of equations.

Accuracy

The computed factorization satisfies an equation of the form
A+E=PLU ,  
where
E=OεA  
and ε  is the machine precision.
Following the use of this function, nag_lapack_dgttrs (f07ce) can be used to solve systems of equations AX=B  or ATX=B , and nag_lapack_dgtcon (f07cg) can be used to estimate the condition number of A .

Further Comments

The total number of floating-point operations required to factorize the matrix A  is proportional to n .
The complex analogue of this function is nag_lapack_zgttrf (f07cr).

Example

This example factorizes the tridiagonal matrix A  given by
A = 3.0 2.1 0.0 0.0 0.0 3.4 2.3 -1.0 0.0 0.0 0.0 3.6 -5.0 1.9 0.0 0.0 0.0 7.0 -0.9 8.0 0.0 0.0 0.0 -6.0 7.1 .  
function f07cd_example


fprintf('f07cd example results\n\n');

% Tridiagonal matrix A stored as diagonals:
du = [        2.1    -1.0      1.9     8.0];
d  = [3.0     2.3    -5.0     -0.9     7.1];
dl = [3.4     3.6     7.0     -6.0        ];
n  = numel(d);

% Factorize A.
[dlf, df, duf, du2f, ipiv, info] = ...
  f07cd(dl, d, du);

disp('Details of factorization');
fprintf('\n');
disp(' Second super-diagonal of U');
fprintf('%9.4f', du2f);
fprintf('\n\n');
disp(' First super-diagonal of U');
fprintf('%9.4f', duf);
fprintf('\n\n');
disp(' Main diagonal of U');
fprintf('%9.4f', df);
fprintf('\n\n');
disp(' Multipliers');
fprintf('%9.4f', dlf);
fprintf('\n\n');
disp(' Vector of interchanges');
fprintf('%9d', ipiv);
fprintf('\n');


f07cd example results

Details of factorization

 Second super-diagonal of U
  -1.0000   1.9000   8.0000

 First super-diagonal of U
   2.3000  -5.0000  -0.9000   7.1000

 Main diagonal of U
   3.4000   3.6000   7.0000  -6.0000  -1.0154

 Multipliers
   0.8824   0.0196   0.1401  -0.0148

 Vector of interchanges
        2        3        4        5        5

PDF version (NAG web site, 64-bit version, 64-bit version)
Chapter Contents
Chapter Introduction
NAG Toolbox

© The Numerical Algorithms Group Ltd, Oxford, UK. 2009–2015