XLPack 7.0
XLPack 数値計算ライブラリ (C API) リファレンスマニュアル
読み取り中…
検索中…
一致する文字列を見つけられません

◆ 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) は次のような形をしている.
H(i) = I - tau * v * v^T
ここで, 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