|
|
◆ Ztrsyl()
| Sub Ztrsyl |
( |
Transa As |
String, |
|
|
Transb As |
String, |
|
|
Isign As |
Long, |
|
|
M As |
Long, |
|
|
N As |
Long, |
|
|
A() As |
Complex, |
|
|
B() As |
Complex, |
|
|
C() As |
Complex, |
|
|
Scal As |
Double, |
|
|
Info As |
Long |
|
) |
| |
シルベスター方程式の解 (複素行列)
- 目的
- 本ルーチンは次のシルベスター方程式を解く.
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] | A() | 配列 A(LA1 - 1, LA2 - 1) (LA1 >= M, LA2 >= M)
上三角行列 A. |
| [in] | B() | 配列 B(LB1 - 1, LB2 - 1) (LB1 >= N, LB2 >= N)
上三角行列 B. |
| [in,out] | C() | 配列 C(LC1 - 1, LC2 - 1) (LC1 >= M, LC2 >= N)
[in] M x N 右辺行列 C.
[out] 解行列 X で上書きされる. |
| [out] | Scal | スケール因子 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: パラメータ A() の誤り.
= -7: パラメータ B() の誤り.
= -8: パラメータ C() の誤り.
= 1: A と B が同じまたは非常に近い固有値を持ち, 方程式を解くために摂動を加えた値が使われた(A と B は変更されない). |
- 出典
- LAPACK
|