|
|
◆ Ddisna()
| Sub Ddisna |
( |
Job As |
String, |
|
|
M As |
Long, |
|
|
N As |
Long, |
|
|
D() As |
Double, |
|
|
Sep() As |
Double, |
|
|
Info As |
Long |
|
) |
| |
対称/エルミート行列の固有ベクトルあるいは一般行列の特異ベクトルの条件数
- 目的
- 本ルーチンは実対称または複素エルミート行列の固有ベクトル, あるいは, m×n一般行列の左または右特異ベクトルの条件数の逆数を求める. 条件数の逆数は, 固有値あるいは特異値とそれに最も近い他の値との「間隔」である.
求められたi番目のベクトルの誤差限界を角度(ラジアン)で表すと次のようになる.
Function Dlamch(C As String) As Double 機種パラメータ (倍精度浮動小数演算)
ここで, anorm = 2-norm(A) = max(abs(d[j])) である. sep[i]は, 誤差限界の大きさを制限するために Dlamch("E")*anorm より小さくてはならない.
Ddisnaはまた, 一般化対称定値固有値問題の固有値の誤差限界を計算するために使用してもよい.
- 引数
-
| [in] | Job | 条件数の逆数を計算する問題の種類.
= "E": 対称/エルミート行列の固有ベクトル.
= "L": 一般行列の左特異ベクトル.
= "R": 一般行列の右特異ベクトル. |
| [in] | M | 行列の行数. (M >= 0) (M = 0 の場合, 処理を行わずに戻る) |
| [in] | N | Job = "L", "R": 行列の列数. (N >= 0) (N = 0 の場合, 処理を行わずに戻る)
Job = "E": 無視される. |
| [in] | D() | 配列 D(LD - 1) (LD >= M (Job = "E"), LD >= min(M, N) (Job = "L"または"R"))
Job = "E": 行列の固有値(昇順または降順).
Job = "L"または"R": 行列の特異値(昇順または降順). (特異値 >= 0) |
| [out] | Sep() | 配列 Sep(LSep - 1) (LSep >= M (Job = "E"), LSep >= min(M, N) (Job = "L"または"R"))
Job = "E": 固有ベクトルの条件数の逆数.
Job = "L"または"R": 特異値ベクトルの条件数の逆数. |
| [out] | Info | = 0: 正常終了.
= -1: パラメータ Job の誤り. (Job <> "E", "L"および"R")
= -2: パラメータ M の誤り. (M < 0)
= -3: パラメータ N の誤り. (N < 0)
= -4: パラメータ D() の誤り.
= -5: パラメータ Sep() の誤り. |
- 出典
- LAPACK
|