nag_zgesv (f07anc) computes the solution to a complex system of linear equations
where
is an
by
matrix and
and
are
by
matrices.
nag_zgesv (f07anc) uses the
decomposition with partial pivoting and row interchanges to factor
as
where
is a permutation matrix,
is unit lower triangular, and
is upper triangular. The factored form of
is then used to solve the system of equations
.
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
- 1:
order – Nag_OrderTypeInput
-
On entry: the
order argument specifies the two-dimensional storage scheme being used, i.e., row-major ordering or column-major ordering. C language defined storage is specified by
. See
Section 3.2.1.3 in the Essential Introduction for a more detailed explanation of the use of this argument.
Constraint:
or Nag_ColMajor.
- 2:
n – IntegerInput
-
On entry:
, the number of linear equations, i.e., the order of the matrix .
Constraint:
.
- 3:
nrhs – IntegerInput
-
On entry:
, the number of right-hand sides, i.e., the number of columns of the matrix .
Constraint:
.
- 4:
a[] – ComplexInput/Output
-
Note: the dimension,
dim, of the array
a
must be at least
.
The
th element of the matrix
is stored in
- when ;
- when .
On entry: the
by matrix .
On exit: the factors and from the factorization ; the unit diagonal elements of are not stored.
- 5:
pda – IntegerInput
-
On entry: the stride separating row or column elements (depending on the value of
order) in the array
a.
Constraint:
.
- 6:
ipiv[n] – IntegerOutput
On exit: if no constraints are violated, the pivot indices that define the permutation matrix ; at the th step row of the matrix was interchanged with row . indicates a row interchange was not required.
- 7:
b[] – ComplexInput/Output
-
Note: the dimension,
dim, of the array
b
must be at least
- when
;
- when
.
The
th element of the matrix
is stored in
- when ;
- when .
On entry: the by right-hand side matrix .
On exit: if NE_NOERROR, the by solution matrix .
- 8:
pdb – IntegerInput
-
On entry: the stride separating row or column elements (depending on the value of
order) in the array
b.
Constraints:
- if ,
;
- if , .
- 9:
fail – NagError *Input/Output
-
The NAG error argument (see
Section 3.6 in the Essential Introduction).
- NE_ALLOC_FAIL
Dynamic memory allocation failed.
- NE_BAD_PARAM
On entry, argument had an illegal value.
- NE_INT
On entry, .
Constraint: .
On entry, .
Constraint: .
On entry, .
Constraint: .
On entry, .
Constraint: .
- NE_INT_2
On entry, and .
Constraint: .
On entry, and .
Constraint: .
On entry, and .
Constraint: .
- NE_INTERNAL_ERROR
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact
NAG for assistance.
- NE_SINGULAR
is exactly zero. The factorization has been completed, but the factor is exactly singular, so the solution could not be computed.
The computed solution for a single right-hand side,
, satisfies the equation of the form
where
and
is the
machine precision. An approximate error bound for the computed solution is given by
where
, the condition number of
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_zgesv (f07anc),
nag_zgecon (f07auc) can be used to estimate the condition number of
and
nag_zgerfs (f07avc) can be used to obtain approximate error bounds. Alternatives to nag_zgesv (f07anc), which return condition and error estimates directly are
nag_complex_gen_lin_solve (f04cac) and
nag_zgesvx (f07apc).
The real analogue of this function is
nag_dgesv (f07aac).
This example solves the equations
where
is the general matrix