XLPack 6.1
Excel ワークシート関数 数値計算ライブラリ・リファレンスマニュアル
読み取り中…
検索中…
一致する文字列を見つけられません

◆ WDgelss()

Function WDgelss ( 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))

目的
WDgelssは線形最小二乗問題の最小ノルム解をAの特異値分解(SVD)を使って求める.
|| A * X - B || を最小化する.
AはM×N行列で, ランク落ちしていてもよい.

いくつかの右辺ベクトル b および解ベクトル x を1回の呼び出しで扱うことができる. これらのベクトルは, M×Nrhs右辺行列BおよびN×Nrhs解行列Xの列として格納される.

Aの有効ランク数は, 最大の特異値のRCond倍よりも小さな特異値を0として扱うことによ り決定される.
戻り値
M >= N, Sing = "N" の場合 (N+2 × Nrhs (Cov = "N"), N+2 × Nrhs+1 (Cov = "D"), N+2 × Nrhs+N (Cov = "C"))
列1〜Nrhs列Nrhs+1 (Cov = "D" の場合)列Nrhs+1〜Nrhs+N (Cov = "C" の場合)
行1〜N最小二乗解ベクトル x分散(分散共分散行列の対角要素)分散共分散行列
行N+1ランク数 (列1)00
行N+2リターンコード (列1)00
M >= N, Sing = "S" の場合 (N+2 × Nrhs+1 (Cov = "N"), N+2 × Nrhs+2 (Cov = "D"), N+2 × Nrhs+N+2 (Cov = "C"))
列1〜Nrhs列Nrhs+1列Nrhs+2 (Cov = "D" の場合)列Nrhs+2〜Nrhs+N+1 (Cov = "C" の場合)
行1〜N最小二乗解ベクトル x行列Aの特異値 (降順)分散(分散共分散行列の対角要素)分散共分散行列
行N+1ランク数 (列1)000
行N+2リターンコード (列1)000
M < Nの場合 (N+2 × Nrhs (Sing = "N"), N+2 × Nrhs+1 (Sing = "S"))
列1〜Nrhs列Nrhs+1 (Sing = "S" の場合)
行1〜N最小ノルム解ベクトル x行列Aの特異値 (降順)
行N+1ランク数 (列1)0
行N+2リターンコード (列1)0

リターンコード
= 0: 正常終了.
= i > 0: SVDの計算アルゴリズムが収束しなかった. 中間結果の二重対角形の副対角要素のうちi個が0に収束しなかった.
引数
[in]M行列 A の行数. (M >= 1)
[in]N行列 A の列数. (N >= 1)
[in]A(M×N) M×N係数行列 A. (ランク落ちしていてもよい)
[in]B(M×Nrhs) 右辺行列 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 の最小二乗解を求める. また, 分散を求める. ただし,
( -1.06 0.48 -0.04 )
A = ( -1.19 0.73 -0.24 )
( 1.97 -0.89 0.56 )
( 0.68 -0.53 0.08 )
( 0.3884 )
B = ( 0.1120 )
( -0.3644 )
( -0.0002 )
とする.

WDgelss