|
|
◆ 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) は次式で表される. ただし, 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) は次式で表される. ただし, 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
|