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_dgetrs (f07ae)

 Contents

    1  Purpose
    2  Syntax
    7  Accuracy
    9  Example

Purpose

nag_lapack_dgetrs (f07ae) solves a real system of linear equations with multiple right-hand sides,
AX=B   or   ATX=B ,  
where A has been factorized by nag_lapack_dgetrf (f07ad).

Syntax

[b, info] = f07ae(trans, a, ipiv, b, 'n', n, 'nrhs_p', nrhs_p)
[b, info] = nag_lapack_dgetrs(trans, a, ipiv, b, 'n', n, 'nrhs_p', nrhs_p)

Description

nag_lapack_dgetrs (f07ae) is used to solve a real system of linear equations AX=B or ATX=B, the function must be preceded by a call to nag_lapack_dgetrf (f07ad) which computes the LU factorization of A as A=PLU. The solution is computed by forward and backward substitution.
If trans='N', the solution is computed by solving PLY=B and then UX=Y.
If trans='T' or 'C', the solution is computed by solving UTY=B and then LTPTX=Y.

References

Golub G H and Van Loan C F (1996) Matrix Computations (3rd Edition) Johns Hopkins University Press, Baltimore

Parameters

Compulsory Input Parameters

1:     trans – string (length ≥ 1)
Indicates the form of the equations.
trans='N'
AX=B is solved for X.
trans='T' or 'C'
ATX=B is solved for X.
Constraint: trans='N', 'T' or 'C'.
2:     alda: – double array
The first dimension of the array a must be at least max1,n.
The second dimension of the array a must be at least max1,n.
The LU factorization of A, as returned by nag_lapack_dgetrf (f07ad).
3:     ipiv: int64int32nag_int array
The dimension of the array ipiv must be at least max1,n
The pivot indices, as returned by nag_lapack_dgetrf (f07ad).
4:     bldb: – double array
The first dimension of the array b must be at least max1,n.
The second dimension of the array b must be at least max1,nrhs_p.
The n by r right-hand side matrix B.

Optional Input Parameters

1:     n int64int32nag_int scalar
Default: the first dimension of the arrays a, b and the second dimension of the arrays a, ipiv.
n, the order of the matrix A.
Constraint: n0.
2:     nrhs_p int64int32nag_int scalar
Default: the second dimension of the array b.
r, the number of right-hand sides.
Constraint: nrhs_p0.

Output Parameters

1:     bldb: – double array
The first dimension of the array b will be max1,n.
The second dimension of the array b will be max1,nrhs_p.
The n by r solution matrix X.
2:     info int64int32nag_int scalar
info=0 unless the function detects an error (see Error Indicators and Warnings).

Error Indicators and Warnings

   info<0
If info=-i, argument i had an illegal value. An explanatory message is output, and execution of the program is terminated.

Accuracy

For each right-hand side vector b, the computed solution x is the exact solution of a perturbed system of equations A+Ex=b, where
EcnεPLU ,  
cn is a modest linear function of n, and ε is the machine precision.
If x^ is the true solution, then the computed solution x satisfies a forward error bound of the form
x-x^ x cncondA,xε  
where condA,x = A-1 A x / x condA = A-1 A κ A .
Note that condA,x can be much smaller than condA, and condAT can be much larger (or smaller) than condA.
Forward and backward error bounds can be computed by calling nag_lapack_dgerfs (f07ah), and an estimate for κA can be obtained by calling nag_lapack_dgecon (f07ag) with norm_p='I'.

Further Comments

The total number of floating-point operations is approximately 2n2r.
This function may be followed by a call to nag_lapack_dgerfs (f07ah) to refine the solution and return an error estimate.
The complex analogue of this function is nag_lapack_zgetrs (f07as).

Example

This example solves the system of equations AX=B, where
A= 1.80 2.88 2.05 -0.89 5.25 -2.95 -0.95 -3.80 1.58 -2.69 -2.90 -1.04 -1.11 -0.66 -0.59 0.80   and   B= 9.52 18.47 24.35 2.25 0.77 -13.28 -6.22 -6.21 .  
Here A is nonsymmetric and must first be factorized by nag_lapack_dgetrf (f07ad).
function f07ae_example


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

trans = 'N';
a = [1.8, 2.88, 2.05, -0.89;
     5.25, -2.95, -0.95, -3.8;
     1.58, -2.69, -2.9, -1.04;
     -1.11, -0.66, -0.59, 0.8];
b = [9.52, 18.47;
     24.35, 2.25;
     0.77, -13.28;
     -6.22, -6.21];

% Factorize A
[LU, ipiv, info] = f07ad(a);

% Compute Solution
[x, info] = f07ae(trans, LU, ipiv, b);

[ifail] = x04ca( ...
                 'General', ' ', x, 'Solution(s)');


f07ae example results

 Solution(s)
             1          2
 1      1.0000     3.0000
 2     -1.0000     2.0000
 3      3.0000     4.0000
 4     -5.0000     1.0000

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