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_zgesv (f07an)

Purpose

nag_lapack_zgesv (f07an) computes the solution to a complex system of linear equations
AX = B ,
AX=B ,
where AA is an nn by nn matrix and XX and BB are nn by rr matrices.

Syntax

[a, ipiv, b, info] = f07an(a, b, 'n', n, 'nrhs_p', nrhs_p)
[a, ipiv, b, info] = nag_lapack_zgesv(a, b, 'n', n, 'nrhs_p', nrhs_p)

Description

nag_lapack_zgesv (f07an) uses the LULU decomposition with partial pivoting and row interchanges to factor AA as
A = PLU ,
A=PLU ,
where PP is a permutation matrix, LL is unit lower triangular, and UU is upper triangular. The factored form of AA is then used to solve the system of equations AX = BAX=B.

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
Golub G H and Van Loan C F (1996) Matrix Computations (3rd Edition) Johns Hopkins University Press, Baltimore

Parameters

Compulsory Input Parameters

1:     a(lda, : :) – complex array
The first dimension of the array a must be at least max (1,n)max(1,n)
The second dimension of the array must be at least max (1,n)max(1,n)
The nn by nn coefficient matrix AA.
2:     b(ldb, : :) – complex array
The first dimension of the array b must be at least max (1,n)max(1,n)
The second dimension of the array must be at least max (1,nrhs)max(1,nrhs)
The nn by rr right-hand side matrix BB.

Optional Input Parameters

1:     n – int64int32nag_int scalar
Default: The first dimension of the array b.
nn, the number of linear equations, i.e., the order of the matrix AA.
Constraint: n0n0.
2:     nrhs_p – int64int32nag_int scalar
Default: The second dimension of the array b.
rr, the number of right-hand sides, i.e., the number of columns of the matrix BB.
Constraint: nrhs0nrhs0.

Input Parameters Omitted from the MATLAB Interface

lda ldb

Output Parameters

1:     a(lda, : :) – complex array
The first dimension of the array a will be max (1,n)max(1,n)
The second dimension of the array will be max (1,n)max(1,n)
ldamax (1,n)ldamax(1,n).
The factors LL and UU from the factorization A = PLUA=PLU; the unit diagonal elements of LL are not stored.
2:     ipiv(n) – int64int32nag_int array
If no constraints are violated, the pivot indices that define the permutation matrix PP; at the iith step row ii of the matrix was interchanged with row ipiv(i)ipivi. ipiv(i) = iipivi=i indicates a row interchange was not required.
3:     b(ldb, : :) – complex array
The first dimension of the array b will be max (1,n)max(1,n)
The second dimension of the array will be max (1,nrhs)max(1,nrhs)
ldbmax (1,n)ldbmax(1,n).
If INFO = 0INFO=0, the nn by rr solution matrix XX.
4:     info – int64int32nag_int scalar
info = 0info=0 unless the function detects an error (see Section [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 = iinfo=-i
If info = iinfo=-i, parameter ii had an illegal value on entry. The parameters are numbered as follows:
1: n, 2: nrhs_p, 3: a, 4: lda, 5: ipiv, 6: b, 7: ldb, 8: info.
It is possible that info refers to a parameter that is omitted from the MATLAB interface. This usually indicates that an error in one of the other input parameters has caused an incorrect value to be inferred.
W INFO > 0INFO>0
If info = iinfo=i, uiiuii is exactly zero. The factorization has been completed, but the factor UU is exactly singular, so the solution could not be computed.

Accuracy

The computed solution for a single right-hand side, x^ , satisfies the equation of the form
(A + E) = b ,
(A+E) x^=b ,
where
E1 = O(ε) A1
E1 = O(ε) A1
and ε ε  is the machine precision. An approximate error bound for the computed solution is given by
(x1)/(x1) κ(A) (E1)/(A1)
x^ - x 1 x 1 κ(A) E 1 A 1
where κ(A) = A11 A1 κ(A) = A-1 1 A 1 , the condition number of A A  with respect to the solution of the linear equations. See Section 4.4 of Anderson et al. (1999) for further details.
Following the use of nag_lapack_zgesv (f07an), nag_lapack_zgecon (f07au) can be used to estimate the condition number of A A  and nag_lapack_zgerfs (f07av) can be used to obtain approximate error bounds. Alternatives to nag_lapack_zgesv (f07an), which return condition and error estimates directly are nag_linsys_complex_square_solve (f04ca) and nag_lapack_zgesvx (f07ap).

Further Comments

The total number of floating point operations is approximately (8/3) n3 + 8n2 r 83 n3 + 8n2 r , where r r  is the number of right-hand sides.
The real analogue of this function is nag_lapack_dgesv (f07aa).

Example

function nag_lapack_zgesv_example
a = [ -1.34 + 2.55i,  0.28 + 3.17i,  -6.39 - 2.2i,  0.72 - 0.92i;
      -0.17 - 1.41i,  3.31 - 0.15i,  -0.15 + 1.34i,  1.29 + 1.38i;
      -3.29 - 2.39i,  -1.91 + 4.42i,  -0.14 - 1.35i,  1.72 + 1.35i;
      2.41 + 0.39i,  -0.56 + 1.47i, ...
     -0.83 - 0.69i,  -1.96 + 0.67i];
b = [ 26.26 + 51.78i;
      6.43 - 8.68i;
      -5.75 + 25.31i;
      1.16 + 2.57i];
[aOut, ipiv, bOut, info] = nag_lapack_zgesv(a, b)
 

aOut =

  -3.2900 - 2.3900i  -1.9100 + 4.4200i  -0.1400 - 1.3500i   1.7200 + 1.3500i
   0.2376 + 0.2560i   4.8952 - 0.7114i  -0.4623 + 1.6966i   1.2269 + 0.6190i
  -0.1020 - 0.7010i  -0.6691 + 0.3689i  -5.1414 - 1.1300i   0.9983 + 0.3850i
  -0.5359 + 0.2707i  -0.2040 + 0.8601i   0.0082 + 0.1211i   0.1482 - 0.1252i


ipiv =

                    3
                    2
                    3
                    4


bOut =

   1.0000 + 1.0000i
   2.0000 - 3.0000i
  -4.0000 - 5.0000i
   0.0000 + 6.0000i


info =

                    0


function f07an_example
a = [ -1.34 + 2.55i,  0.28 + 3.17i,  -6.39 - 2.2i,  0.72 - 0.92i;
      -0.17 - 1.41i,  3.31 - 0.15i,  -0.15 + 1.34i,  1.29 + 1.38i;
      -3.29 - 2.39i,  -1.91 + 4.42i,  -0.14 - 1.35i,  1.72 + 1.35i;
      2.41 + 0.39i,  -0.56 + 1.47i, ...
     -0.83 - 0.69i,  -1.96 + 0.67i];
b = [ 26.26 + 51.78i;
      6.43 - 8.68i;
      -5.75 + 25.31i;
      1.16 + 2.57i];
[aOut, ipiv, bOut, info] = f07an(a, b)
 

aOut =

  -3.2900 - 2.3900i  -1.9100 + 4.4200i  -0.1400 - 1.3500i   1.7200 + 1.3500i
   0.2376 + 0.2560i   4.8952 - 0.7114i  -0.4623 + 1.6966i   1.2269 + 0.6190i
  -0.1020 - 0.7010i  -0.6691 + 0.3689i  -5.1414 - 1.1300i   0.9983 + 0.3850i
  -0.5359 + 0.2707i  -0.2040 + 0.8601i   0.0082 + 0.1211i   0.1482 - 0.1252i


ipiv =

                    3
                    2
                    3
                    4


bOut =

   1.0000 + 1.0000i
   2.0000 - 3.0000i
  -4.0000 - 5.0000i
   0.0000 + 6.0000i


info =

                    0



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–2013