|
|
◆ dgehrd()
| void dgehrd |
( |
int |
n, |
|
|
int |
ilo, |
|
|
int |
ihi, |
|
|
int |
lda, |
|
|
double |
a[], |
|
|
double |
tau[], |
|
|
double |
work[], |
|
|
int |
lwork, |
|
|
int * |
info |
|
) |
| |
一般行列の上ヘッセンベルグ形への変換
- 目的
- 本ルーチンは一般実行列 A を直交相似変換 Q^T * A * Q = H により上ヘッセンベルグ形 H に変換する.
- 引数
-
| [in] | n | 行列 A の行および列数. (n >= 0) (n = 0 の場合, 処理を行わずに戻る) |
| [in] | ilo | |
| [in] | ihi | 行および列 1〜ilo-1 および ihi+1〜n において A はすでに上三角形であるとみなす. ilo および ihi は通常 dgebal の呼び出しによって設定される. そうでなければ, これらはそれぞれ 1 および n に設定しなければならない. 「詳細」を参照せよ. (1 <= ilo <= ihi <= n (n > 0 の場合). ilo = 1 かつ ihi = 0 (n = 0 の場合)) |
| [in] | lda | 二次元配列 a[][] の整合寸法. (lda >= max(1, n)) |
| [in,out] | a[][] | 配列 a[la][lda] (la >= n)
[in] 変換される n x n 一般行列.
[out] a[][] の上三角部分および副対角部分は上ヘッセンベルグ行列 H により上書きされる. また, 副対角部分より下の要素は配列 tau[] と共に基本鏡映の積である直交行列 Q を表す. 「詳細」を参照せよ. |
| [out] | tau[] | 配列 tau[ltau] (ltau >= n - 1) 基本鏡映のスカラー係数(「詳細」を参照せよ). tau[] の要素 1〜ilo-1 および ihi〜n-1 はゼロに設定される. |
| [out] | work[] | 配列 work[lwork]
作業領域.
info = 0 の場合, work[0] に lwork の最適値を返す. |
| [in] | lwork | 配列work[]のサイズ. (lwork >= max(1, n))
一般に, パフォーマンスをよくするためには lwork を大きくしなければならない.
lwork = -1 の場合, 作業領域サイズの問い合わせとみなし, 最適サイズを求める計算だけを行い, work[0] にその値を返す. |
| [out] | info | = 0: 正常終了
= -1: 入力パラメータ n の誤り (n < 0)
= -2: 入力パラメータ ilo の誤り (ilo < 1 または ilo > n)
= -3: 入力パラメータ ihi の誤り (ihi < min(ilo, n) または ihi > n)
= -4: 入力パラメータ lda の誤り (lda < max(1, n))
= -8: 入力パラメータ lwork の誤り (lwork が小さすぎる)
|
- 詳細
- 行列 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 の DGEHRD サブルーチンをわずかに修正したものである. (DLAHR2 を参照せよ.)
- 出典
- LAPACK
|