|
|
◆ ztrsyl()
| void ztrsyl |
( |
char |
transa, |
|
|
char |
transb, |
|
|
int |
isgn, |
|
|
int |
m, |
|
|
int |
n, |
|
|
int |
lda, |
|
|
doublecomplex |
a[], |
|
|
int |
ldb, |
|
|
doublecomplex |
b[], |
|
|
int |
ldc, |
|
|
doublecomplex |
c[], |
|
|
double * |
scale, |
|
|
int * |
info |
|
) |
| |
シルベスター方程式の解 (複素行列)
- 目的
- 本ルーチンは次の複素シルベスター方程式を解く.
op(A)*X + X*op(B) = scale*C または
op(A)*X - X*op(B) = scale*C
ただし, op(A) = A または A^H で, A と B は両方とも上三角行列である. A は m x m, B は n x n, 右辺行列 C および 解行列 X は m x n 行列である. scale は出力スケール因子で, X のオーバーフローを避けるために scale <= 1 と設定される.
- 引数
-
| [in] | transa | op(A) を指定する.
= 'N': op(A) = A (転置なし)
= 'C': op(A) = A^H (共役転置) |
| [in] | transb | op(B) を指定する.
= 'N': op(B) = B (転置なし)
= 'C': op(B) = B^H (共役転置) |
| [in] | isgn | 方程式の符号を指定する.
= +1: op(A)*X + X*op(B) = scale*C を解く.
= -1: op(A)*X - X*op(B) = scale*C を解く. |
| [in] | m | 行列 A の行および列数. また, 行列 X および C の行数. (m >= 0) (m = 0 の場合, 処理を行わずに戻る) |
| [in] | n | 行列 B の行および列数. また, 行列 X および C の列数. (n >= 0) (n = 0 の場合, 処理を行わずに戻る) |
| [in] | lda | 二次元配列 a[][] の整合寸法. (lda >= max(1, m)) |
| [in] | a[][] | Array a[la][lda] (la >= m)
上三角行列 A. |
| [in] | ldb | 二次元配列 b[][] の整合寸法. (ldb >= max(1, n)) |
| [in] | b[][] | Array b[lb][ldb] (lb >= n)
上三角行列 B. |
| [in] | ldc | 二次元配列 c[][] の整合寸法. (ldc >= max(1, m)) |
| [in,out] | c[][] | 配列 c[lc][ldc] (lc >= n)
[in] m x n 右辺行列 C.
[out] 解行列 X で上書きされる. |
| [out] | scale | スケール因子 scale. 本ルーチンは X のオーバーフローを避けるために scale <= 1 と設定する. |
| [out] | info | = 0: 正常終了
= -1: 入力パラメータ transa の誤り (transa != 'N' および 'C')
= -2: 入力パラメータ transb の誤り (transb != 'N' および 'C')
= -3: 入力パラメータ isgn の誤り (isign != 1 および -1)
= -4: 入力パラメータ m の誤り (m < 0)
= -5: 入力パラメータ n の誤り (n < 0)
= -6: 入力パラメータ lda の誤り (lda < max(1, m))
= -7: 入力パラメータ ldb の誤り (ldb < max(1, n))
= -10: 入力パラメータ ldc の誤り (ldc < max(1, m))
= 1: A と B が同じまたは非常に近い固有値を持ち, 方程式を解くために摂動を加えた値が使われた(A と B は変更されない). |
- 出典
- LAPACK
|