|
|
◆ WZgelss2()
| Function WZgelss2 |
( |
M As |
Long, |
|
|
N As |
Long, |
|
|
A As |
Variant, |
|
|
B As |
Variant, |
|
|
Optional Nrhs As |
Long = 1, |
|
|
Optional RCond As |
Double = 0, |
|
|
Optional Cov As |
String = "N", |
|
|
Optional Sing As |
String = "N" |
|
) |
| |
優決定または劣決定系連立一次方程式 Ax = b の解 (特異値分解 (SVD)) (複素行列) (実数部/虚数部分離形式)
- 目的
- WZgelss2は複素線形最小二乗問題の最小ノルム解を, Aの特異値分解(SVD)を使って求める. AはM×N行列でランク落ちしていてもよい.
いくつかの右辺ベクトル b および解ベクトル x を1回の呼び出しで扱うことができる. これらのベクトルは, M×Nrhs右辺行列BおよびN×Nrhs解行列Xの列として格納される.
Aの有効ランク数は, 最大の特異値のRCond倍よりも小さな特異値を0として扱うことにより決められる.
複素数を表現するために実数部と虚数部を隣り合ったセルに格納する(左が実数部, 右が虚数部). 得られた解も実数部と虚数部が隣り合った別々のセルに出力される.
- 戻り値
- M >= N, Sing = "N" の場合 (N+1 × 2Nrhs (Cov = "N"), N+1 × 2Nrhs+1 (Cov = "D"), N+1 × 2Nrhs+2N (Cov = "C"))
| 列1〜2Nrhs | 列2Nrhs+1 (Cov = "D" の場合) | 列2Nrhs+1〜2Nrhs+2N (Cov = "C" の場合) |
| 行1〜N | 最小二乗解ベクトル x | 分散(分散共分散行列の対角要素) | 分散共分散行列 |
| 行N+1 | ランク数 (列1), リターンコード (列2) | 0 | 0 |
M >= N, Sing = "S" の場合 (N+1 × 2Nrhs+1 (Cov = "N"), N+1 × 2Nrhs+2 (Cov = "D"), N+1 × 2Nrhs+2N+2 (Cov = "C"))
| 列1〜2Nrhs | 列2Nrhs+1 | 列2Nrhs+2 (Cov = "D" の場合) | 列2Nrhs+2〜2Nrhs+2N+1 (Cov = "C" の場合) |
| 行1〜N | 最小二乗解ベクトル x | 行列Aの特異値 (降順) | 分散(分散共分散行列の対角要素) | 分散共分散行列 |
| 行N+1 | ランク数 (列1), リターンコード (列2) | 0 | 0 | 0 |
M < Nの場合 (N+1 × 2Nrhs (Sing = "N"), N+1 × 2Nrhs+1 (Sing = "S"))
| 列1〜2Nrhs | 列2Nrhs+1 (Sing = "S" の場合) |
| 行1〜N | 最小ノルム解ベクトル x | 行列Aの特異値 (降順) |
| 行N+1 | ランク数 (列1), リターンコード (列2) | 0 |
リターンコード
= 0: 正常終了
= i > 0: SVDの計算アルゴリズムが収束しなかった. 中間結果の二重対角形の副対角要素のうちi個が0に収束しなかった.
- 引数
-
| [in] | M | 行列 A の行数. (M >= 1) |
| [in] | N | 行列 A の列数. (N >= 1) |
| [in] | A | (M×2N) M×N係数行列 A. (ランク落ちしていてもよい) |
| [in] | B | (M×2Nrhs) 右辺行列 B. |
| [in] | Nrhs | (省略可)
右辺行列Bの列数. (Nrhs >= 1) (省略時 = 1) |
| [in] | RCond | (省略可)
有効ランク数を決めるためのパラメータ. 最大特異値×RCondより大きい特異値の数を有効ランク数とする.
(省略時 = マシンイプシロン) |
| [in] | Cov | (省略可)
= "N": 分散共分散行列を計算しない.
= "D": 分散(分散共分散行列の対角要素)を計算する. (M >= Nの場合)
= "C": 分散共分散行列を計算する. (M >= Nの場合)
(省略時 = "N") |
| [in] | Sing | (省略可)
= "N": 特異値を返さない.
= "S": 特異値を返す.
(省略時 = "N") |
- 出典
- LAPACK
- 使用例
- 優決定系連立1次方程式 Ax = B の最小二乗解を求める. また, 分散を求める. ただし,
( -0.82+0.83i 0.18-0.94i -0.18-0.12i )
A = ( -0.76-0.24i 0.57-0.16i -0.08-0.27i )
( 1.90+0.26i -0.98+0.54i 0.21+0.28i )
( 0.50-0.30i -0.31+0.37i 0.22+0.19i )
( 1.7126-0.6648i )
B = ( 0.8697+0.7604i )
( -2.1048-1.6171i )
( -0.9297+0.1252i )
とする.
|