|
|
◆ Zgehrd()
| Sub Zgehrd |
( |
N As |
Long, |
|
|
Ilo As |
Long, |
|
|
Ihi As |
Long, |
|
|
A() As |
Complex, |
|
|
Tau() As |
Complex, |
|
|
Info As |
Long |
|
) |
| |
一般行列の上ヘッセンベルグ形への変換 (複素行列)
- 目的
- 本ルーチンは一般複素行列 A をユニタリ相似変換 Q^H * A * Q = H により上ヘッセンベルグ形 H に変換する.
- 引数
-
| [in] | N | 行列 A の行および列数. (N >= 0) (N = 0 の場合, 処理を行わずに戻る) |
| [in] | Ilo | |
| [in] | Ihi | 行および列 1〜Ilo-1 および Ihi+1〜N において A はすでに上三角形であるとみなす. Ilo および Ihi は通常 Zgebal の呼び出しによって設定される. そうでなければ, これらはそれぞれ 1 および N に設定しなければならない. 「詳細」を参照せよ. (1 <= Ilo <= Ihi <= N (N > 0 の場合). Ilo = 1 かつ Ihi = 0 (N = 0 の場合)) |
| [in,out] | A() | 配列 A(LA1 - 1, LA2 - 1) (LA1 >= N, LA2 >= N)
[in] 変換される N x N 一般行列.
[out] A() の上三角部分および副対角部分は上ヘッセンベルグ行列 H により上書きされる. また, 副対角部分より下の要素は配列 Tau() と共に基本鏡映の積であるユニタリ行列 Q を表す. 「詳細」を参照せよ. |
| [out] | Tau() | 配列 Tau(LTau - 1) (LTau >= N - 1)
基本鏡映のスカラー係数(「詳細」を参照せよ). Tau() の要素 1〜Ilo-1 および Ihi〜N-1 はゼロに設定される. |
| [out] | Info | = 0: 正常終了.
= -1: パラメータ N の誤り. (N < 0)
= -2: パラメータ Ilo の誤り. (Ilo < 1 または Ilo > N)
= -3: パラメータ Ihi の誤り. (Ihi < min(Ilo, N) または Ihi > N)
= -4: パラメータ A() の誤り.
= -5: パラメータ Tau() の誤り. |
- 詳細
- 行列 Q は Ihi-Ilo 個の基本鏡映の積で表される.
Q = H(Ilo) H(Ilo+1) . . . H(Ihi-1).
それぞれの H(i) は次のような形をしている. ここで, tau は複素スカラーである. v は複素ベクトルで, v(1〜i) = 0, v(i+1) = 1 および v(Ihi+1〜N) = 0 であり, v(i+2〜Ihi) は A(i+2〜Ihi, i) に格納される. また, tau は Tau(i - 1) に格納される.
例 (N = 7, Ilo = 2, Ihi = 6) における A の内容は次のように表される. 入力 出力
( a a a a a a a ) ( a a h h h h a )
( a a a a a a ) ( a h h h h a )
( a a a a a a ) ( h h h h h h )
( a a a a a a ) ( v2 h h h h h )
( a a a a a a ) ( v2 v3 h h h h )
( a a a a a a ) ( v2 v3 v4 h h h )
( a ) ( a )
ここで, a は元の行列 A の要素, h は上ヘッセンベルグ行列 H に更新された要素, vi は H(i) を定義するベクトルの要素を表す.
本プログラムは Quintana-Orti and Van de Geijn (2006) により提案された改良を入れ LAPACK-3.0 の ZGEHRD サブルーチンをわずかに修正したものである. (ZLAHR2 を参照せよ.)
- 出典
- LAPACK
- 使用例
- Zhseqr, Ztrevc3, Zhsein の使用例を参照せよ.
|