PDF version (NAG web site
, 64-bit version, 64-bit version)
NAG Toolbox: nag_lapack_ztrsyl (f08qv)
Purpose
nag_lapack_ztrsyl (f08qv) solves the complex triangular Sylvester matrix equation.
Syntax
[
c,
scal,
info] = f08qv(
trana,
tranb,
isgn,
a,
b,
c, 'm',
m, 'n',
n)
[
c,
scal,
info] = nag_lapack_ztrsyl(
trana,
tranb,
isgn,
a,
b,
c, 'm',
m, 'n',
n)
Description
nag_lapack_ztrsyl (f08qv) solves the complex Sylvester matrix equation
where
or
, and the matrices
and
are upper triangular;
is a scale factor (
) determined by the function to avoid overflow in
;
is
by
and
is
by
while the right-hand side matrix
and the solution matrix
are both
by
. The matrix
is obtained by a straightforward process of back-substitution (see
Golub and Van Loan (1996)).
Note that the equation has a unique solution if and only if , where and are the eigenvalues of and respectively and the sign ( or ) is the same as that used in the equation to be solved.
References
Golub G H and Van Loan C F (1996) Matrix Computations (3rd Edition) Johns Hopkins University Press, Baltimore
Higham N J (1992) Perturbation theory and backward error for Numerical Analysis Report University of Manchester
Parameters
Compulsory Input Parameters
- 1:
– string (length ≥ 1)
-
Specifies the option
.
- .
- .
Constraint:
or .
- 2:
– string (length ≥ 1)
-
Specifies the option
.
- .
- .
Constraint:
or .
- 3:
– int64int32nag_int scalar
-
Indicates the form of the Sylvester equation.
- The equation is of the form .
- The equation is of the form .
Constraint:
or .
- 4:
– complex array
-
The first dimension of the array
a must be at least
.
The second dimension of the array
a must be at least
.
The by upper triangular matrix .
- 5:
– complex array
-
The first dimension of the array
b must be at least
.
The second dimension of the array
b must be at least
.
The by upper triangular matrix .
- 6:
– complex array
-
The first dimension of the array
c must be at least
.
The second dimension of the array
c must be at least
.
The by right-hand side matrix .
Optional Input Parameters
- 1:
– int64int32nag_int scalar
-
Default:
the first dimension of the array
a and the second dimension of the array
a. (An error is raised if these dimensions are not equal.)
, the order of the matrix , and the number of rows in the matrices and .
Constraint:
.
- 2:
– int64int32nag_int scalar
-
Default:
the first dimension of the array
b and the second dimension of the array
b. (An error is raised if these dimensions are not equal.)
, the order of the matrix , and the number of columns in the matrices and .
Constraint:
.
Output Parameters
- 1:
– complex array
-
The first dimension of the array
c will be
.
The second dimension of the array
c will be
.
c stores the solution matrix
.
- 2:
– double scalar
-
The value of the scale factor .
- 3:
– int64int32nag_int scalar
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.
-
If , parameter had an illegal value on entry. The parameters are numbered as follows:
1:
trana, 2:
tranb, 3:
isgn, 4:
m, 5:
n, 6:
a, 7:
lda, 8:
b, 9:
ldb, 10:
c, 11:
ldc, 12:
scal, 13:
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
-
and have common or close eigenvalues, perturbed values of which were used to solve the equation.
Accuracy
Consider the equation . (To apply the remarks to the equation , simply replace by .)
Let
be the computed solution and
the residual matrix:
Then the residual is always small:
However,
is
not necessarily the exact solution of a slightly perturbed equation; in other words, the solution is not backwards stable.
For the forward error, the following bound holds:
but this may be a considerable over estimate. See
Golub and Van Loan (1996) for a definition of
, and
Higham (1992) for further details.
These remarks also apply to the solution of a general Sylvester equation, as described in
Further Comments.
Further Comments
The total number of real floating-point operations is approximately .
To solve the
general complex Sylvester equation
where
and
are general matrices,
and
must first be reduced to Schur form
(by calling
nag_lapack_zgees (f08pn), for example):
where
and
are upper triangular and
and
are unitary. The original equation may then be transformed to:
where
and
.
may be computed by matrix multiplication;
nag_lapack_ztrsyl (f08qv) may be used to solve the transformed equation; and the solution to the original equation can be obtained as
.
The real analogue of this function is
nag_lapack_dtrsyl (f08qh).
Example
This example solves the Sylvester equation
, where
and
Open in the MATLAB editor:
f08qv_example
function f08qv_example
fprintf('f08qv example results\n\n');
a = [-6 - 7i, 0.36 - 0.36i, -0.19 + 0.48i, 0.88 - 0.25i;
0 + 0i, -5 + 2i, -0.03 - 0.72i, -0.23 + 0.13i;
0 + 0i, 0 + 0i, 8 - 1i, 0.94 + 0.53i;
0 + 0i, 0 + 0i, 0 + 0i, 3 - 4i];
b = [ 0.5 - 0.2i, -0.29 - 0.16i, -0.37 + 0.84i, -0.55 + 0.73i;
0 + 0i, -0.4 + 0.9i, 0.06 + 0.22i, -0.43 + 0.17i;
0 + 0i, 0 + 0i, -0.90 - 0.10i, -0.89 - 0.42i;
0 + 0i, 0 + 0i, 0 + 0i, 0.30 - 0.7i];
c = [ 0.63 + 0.35i, 0.45 - 0.56i, 0.08 - 0.14i, -0.17 - 0.23i;
-0.17 + 0.09i, -0.07 - 0.31i, 0.27 - 0.54i, 0.35 + 1.21i;
-0.93 - 0.44i, -0.33 - 0.35i, 0.41 - 0.03i, 0.57 + 0.84i;
0.54 + 0.25i, -0.62 - 0.05i, -0.52 - 0.13i, 0.11 - 0.08i];
trana = 'No transpose';
tranb = 'No transpose';
isgn = int64(1);
[X, scal, info] = f08qv( ...
trana, tranb, isgn, a, b, c);
disp('Solution matrix');
disp(X);
f08qv example results
Solution matrix
-0.0611 + 0.0249i -0.0031 + 0.0798i -0.0062 + 0.0165i 0.0054 - 0.0063i
0.0215 - 0.0003i -0.0155 + 0.0570i -0.0665 + 0.0718i 0.0290 - 0.2636i
-0.0949 - 0.0785i -0.0415 - 0.0298i 0.0357 + 0.0244i 0.0284 + 0.1108i
0.0281 + 0.1052i -0.0970 - 0.1214i -0.0271 - 0.0940i 0.0402 + 0.0048i
PDF version (NAG web site
, 64-bit version, 64-bit version)
© The Numerical Algorithms Group Ltd, Oxford, UK. 2009–2015