F08 Chapter Contents
F08 Chapter Introduction
NAG Library Manual

# NAG Library Routine DocumentF08QHF (DTRSYL)

Note:  before using this routine, please read the Users' Note for your implementation to check the interpretation of bold italicised terms and other implementation-dependent details.

## 1  Purpose

F08QHF (DTRSYL) solves the real quasi-triangular Sylvester matrix equation.

## 2  Specification

 SUBROUTINE F08QHF ( TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB, C, LDC, SCALE, INFO)
 INTEGER ISGN, M, N, LDA, LDB, LDC, INFO REAL (KIND=nag_wp) A(LDA,*), B(LDB,*), C(LDC,*), SCALE CHARACTER(1) TRANA, TRANB
The routine may be called by its LAPACK name dtrsyl.

## 3  Description

F08QHF (DTRSYL) solves the real Sylvester matrix equation
 $opAX ± XopB = αC ,$
where $\mathrm{op}\left(A\right)=A$ or ${A}^{\mathrm{T}}$, and the matrices $A$ and $B$ are upper quasi-triangular matrices in canonical Schur form (as returned by F08PEF (DHSEQR)); $\alpha$ is a scale factor ($\text{}\le 1$) determined by the routine to avoid overflow in $X$; $A$ is $m$ by $m$ and $B$ is $n$ by $n$ while the right-hand side matrix $C$ and the solution matrix $X$ are both $m$ by $n$. The matrix $X$ 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 ${\alpha }_{i}±{\beta }_{j}\ne 0$, where $\left\{{\alpha }_{i}\right\}$ and $\left\{{\beta }_{j}\right\}$ are the eigenvalues of $A$ and $B$ respectively and the sign ($+$ or $-$) is the same as that used in the equation to be solved.

## 4  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 $AX-XB=C$ Numerical Analysis Report University of Manchester

## 5  Parameters

1:     TRANA – CHARACTER(1)Input
On entry: specifies the option $\mathrm{op}\left(A\right)$.
${\mathbf{TRANA}}=\text{'N'}$
$\mathrm{op}\left(A\right)=A$.
${\mathbf{TRANA}}=\text{'T'}$ or $\text{'C'}$
$\mathrm{op}\left(A\right)={A}^{\mathrm{T}}$.
Constraint: ${\mathbf{TRANA}}=\text{'N'}$, $\text{'T'}$ or $\text{'C'}$.
2:     TRANB – CHARACTER(1)Input
On entry: specifies the option $\mathrm{op}\left(B\right)$.
${\mathbf{TRANB}}=\text{'N'}$
$\mathrm{op}\left(B\right)=B$.
${\mathbf{TRANB}}=\text{'T'}$ or $\text{'C'}$
$\mathrm{op}\left(B\right)={B}^{\mathrm{T}}$.
Constraint: ${\mathbf{TRANB}}=\text{'N'}$, $\text{'T'}$ or $\text{'C'}$.
3:     ISGN – INTEGERInput
On entry: indicates the form of the Sylvester equation.
${\mathbf{ISGN}}=+1$
The equation is of the form $\mathrm{op}\left(A\right)X+X\mathrm{op}\left(B\right)=\alpha C$.
${\mathbf{ISGN}}=-1$
The equation is of the form $\mathrm{op}\left(A\right)X-X\mathrm{op}\left(B\right)=\alpha C$.
Constraint: ${\mathbf{ISGN}}=+1$ or $-1$.
4:     M – INTEGERInput
On entry: $m$, the order of the matrix $A$, and the number of rows in the matrices $X$ and $C$.
Constraint: ${\mathbf{M}}\ge 0$.
5:     N – INTEGERInput
On entry: $n$, the order of the matrix $B$, and the number of columns in the matrices $X$ and $C$.
Constraint: ${\mathbf{N}}\ge 0$.
6:     A(LDA,$*$) – REAL (KIND=nag_wp) arrayInput
Note: the second dimension of the array A must be at least $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{M}}\right)$.
On entry: the $m$ by $m$ upper quasi-triangular matrix $A$ in canonical Schur form, as returned by F08PEF (DHSEQR).
7:     LDA – INTEGERInput
On entry: the first dimension of the array A as declared in the (sub)program from which F08QHF (DTRSYL) is called.
Constraint: ${\mathbf{LDA}}\ge \mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{M}}\right)$.
8:     B(LDB,$*$) – REAL (KIND=nag_wp) arrayInput
Note: the second dimension of the array B must be at least $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{N}}\right)$.
On entry: the $n$ by $n$ upper quasi-triangular matrix $B$ in canonical Schur form, as returned by F08PEF (DHSEQR).
9:     LDB – INTEGERInput
On entry: the first dimension of the array B as declared in the (sub)program from which F08QHF (DTRSYL) is called.
Constraint: ${\mathbf{LDB}}\ge \mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{N}}\right)$.
10:   C(LDC,$*$) – REAL (KIND=nag_wp) arrayInput/Output
Note: the second dimension of the array C must be at least $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{N}}\right)$.
On entry: the $m$ by $n$ right-hand side matrix $C$.
On exit: C is overwritten by the solution matrix $X$.
11:   LDC – INTEGERInput
On entry: the first dimension of the array C as declared in the (sub)program from which F08QHF (DTRSYL) is called.
Constraint: ${\mathbf{LDC}}\ge \mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{M}}\right)$.
12:   SCALE – REAL (KIND=nag_wp)Output
On exit: the value of the scale factor $\alpha$.
13:   INFO – INTEGEROutput
On exit: ${\mathbf{INFO}}=0$ unless the routine detects an error (see Section 6).

## 6  Error Indicators and Warnings

${\mathbf{INFO}}<0$
If ${\mathbf{INFO}}=-i$, argument $i$ had an illegal value. An explanatory message is output, and execution of the program is terminated.
${\mathbf{INFO}}=1$
$A$ and $B$ have common or close eigenvalues, perturbed values of which were used to solve the equation.

## 7  Accuracy

Consider the equation $AX-XB=C$. (To apply the remarks to the equation $AX+XB=C$, simply replace $B$ by $-B$.)
Let $\stackrel{~}{X}$ be the computed solution and $R$ the residual matrix:
 $R = C - AX~ - X~B .$
Then the residual is always small:
 $RF = Oε AF + BF X~F .$
However, $\stackrel{~}{X}$ 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:
 $X~ - X F ≤ RF sep A,B$
but this may be a considerable over estimate. See Golub and Van Loan (1996) for a definition of $\mathit{sep}\left(A,B\right)$, and Higham (1992) for further details.
These remarks also apply to the solution of a general Sylvester equation, as described in Section 8.

The total number of floating point operations is approximately $mn\left(m+n\right)$.
To solve the general real Sylvester equation
 $AX ± XB = C$
where $A$ and $B$ are general nonsymmetric matrices, $A$ and $B$ must first be reduced to Schur form (by calling F08PAF (DGEES), for example):
 $A = Q1 A~ Q1T and B = Q2 B~ Q2T$
where $\stackrel{~}{A}$ and $\stackrel{~}{B}$ are upper quasi-triangular and ${Q}_{1}$ and ${Q}_{2}$ are orthogonal. The original equation may then be transformed to:
 $A~ X~ ± X~ B~ = C~$
where $\stackrel{~}{X}={Q}_{1}^{\mathrm{T}}X{Q}_{2}$ and $\stackrel{~}{C}={Q}_{1}^{\mathrm{T}}C{Q}_{2}$. $\stackrel{~}{C}$ may be computed by matrix multiplication; F08QHF (DTRSYL) may be used to solve the transformed equation; and the solution to the original equation can be obtained as $X={Q}_{1}\stackrel{~}{X}{Q}_{2}^{\mathrm{T}}$.
The complex analogue of this routine is F08QVF (ZTRSYL).

## 9  Example

This example solves the Sylvester equation $AX+XB=C$, where
 $A = 0.10 0.50 0.68 -0.21 -0.50 0.10 -0.24 0.67 0.00 0.00 0.19 -0.35 0.00 0.00 0.00 -0.72 ,$
 $B = -0.99 -0.17 0.39 0.58 0.00 0.48 -0.84 -0.15 0.00 0.00 0.75 0.25 0.00 0.00 -0.25 0.75$
and
 $C = 0.63 -0.56 0.08 -0.23 -0.45 -0.31 0.27 1.21 0.20 -0.35 0.41 0.84 0.49 -0.05 -0.52 -0.08 .$

### 9.1  Program Text

Program Text (f08qhfe.f90)

### 9.2  Program Data

Program Data (f08qhfe.d)

### 9.3  Program Results

Program Results (f08qhfe.r)