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

◆ dsptrd()

void dsptrd ( char  uplo,
int  n,
double  ap[],
double  d[],
double  e[],
double  tau[],
int *  info 
)

三重対角形への変換 (対称行列) (圧縮形式)

目的
本ルーチンは圧縮形式で格納された実対称行列 A を直交相似変換 Q^T * A * Q = T により実対称三重対角形 T に変換する.
引数
[in]uplo= 'U': A の上三角部分を格納する.
= 'L': A の下三角部分を格納する.
[in]n行列 A の行および列数. (n >= 0) (n = 0 の場合, 処理を行わずに戻る)
[in,out]ap[]配列 ap[lap] (lap >= n(n + 1)/2)
[in] 対称行列 A の上または下三角部分. 1次元配列に列ごとに圧縮されており, A のj列が配列 ap[] に次のように格納される
uplo = 'U': ap[i + j*(j + 1)/2] = Aij. ただし, 0 <= i <= j <= n - 1.
uplo = 'L': ap[(i + j*(2*n - j - 1)/2] = Aij. ただし, 0 <= j < = i <= n - 1.
[out] uplo = 'U' の場合, ap[] の対角要素および上副対角要素は三重対角行列 T の対応する要素で上書きされる. 上副対角要素より上の要素は配列 tau[] とあわせて直交行列 Q (基本鏡映の積)を表す. uplo = 'L' の場合, ap[] の対角要素および下副対角要素は三重対角行列 T の対応する要素で上書きされる. 下副対角要素より下の要素は配列 tau[] とあわせて直交行列 Q (基本鏡映の積)を表す. 詳細は下記参照.
[out]d[]配列 d[ld] (ld >= n)
三重対角行列 T の対角要素: d[i] = a[i][i].
[out]e[]配列 e[le] (le >= n - 1)
三重対角行列 T の副対角要素: uplo = 'U' の場合 e[i] = a[i+1][i], uplo = 'L' の場合 e[i] = a[i][i+1].
[out]tau[]配列 tau[ltau] (ltau >= n - 1)
基本鏡映のスカラー因子 (下記詳細参照).
[out]info= 0: 正常終了.
= -1: 入力パラメータ uplo の誤り. (uplo != 'U' および 'L')
= -2: 入力パラメータ n の誤り. (n < 0)
詳細
uplo = 'U' の場合, 行列 Q は基本鏡映の積で表される.
Q = H(n-1) . . . H(2) H(1).
各 H(i) は次式で表される.
H(i) = I - tau*v*v^T
ただし, tau は実スカラー値. v は実ベクトルである. v(i+1〜n) = 0, v(i) = 1 で, v(1〜i-1) は A(1〜i-1, i+1) を上書きするように ap[] に, tau は tau[i-1] に格納される.

uplo = 'L' の場合, 行列 Q は基本鏡映の積で表される.
Q = H(1) H(2) . . . H(n-1).
各 H(i) は次式で表される.
H(i) = I - tau*v*v^T
ただし, tau は実スカラー値. v は実ベクトルである. v(1〜i) = 0, v(i+1) = 1 で, v(i+2〜n) は A(i+2〜n, i) を上書きするように ap[] に, tau は tau[i-1] に格納される.
出典
LAPACK