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

◆ dgetsls()

void dgetsls ( char  trans,
int  m,
int  n,
int  nrhs,
int  lda,
double  a[],
int  ldb,
double  b[],
double  work[],
int  lwork,
int *  info 
)

優決定または劣決定系連立一次方程式 Ax = b の解 (フルランク) (Tall skinny QR または Short wide LQ分解)

目的
本ルーチンは m x n 実行列 A からなる優決定または劣決定系連立1次方程式を A の Tall skinny QR または Short wide LQ分解を用いて解く. A はフルランクであること.

下記オプションが提供される:

  1. trans = 'N' かつ m >= n の場合: 優決定系の最小二乗解を求める. すなわち, 次の最小二乗問題を解く.
    || B - A*X || を最小化する.
  2. trans = 'N' かつ m < n の場合: 劣決定系 A * X = B の最小ノルム解を求める.
  3. trans = 'T' かつ m >= n の場合: 劣決定系 A^T * X = B の最小ノルム解を求める.
  4. trans = 'T' かつ m < n の場合: 優決定系の最小二乗解を求める. すなわち, 次の最小二乗問題を解く.
    || B - A^T*X || を最小化する.

いくつかの右辺ベクトル b および解ベクトル x を1回の呼び出しで扱うことができる. これらのベクトルは, m x nrhs 右辺行列 B および n x nrhs 解行列 X の列として格納される.
引数
[in]trans= 'N': 連立一次方程式は A からなる.
= 'T': 連立一次方程式は A^T からなる.
[in]m行列 A の行数. (m >= 0) (m = 0 の場合, b[][] にゼロベクトルを返す)
[in]n行列 A の列数. (n >= 0) (n = 0 の場合, b[][] にゼロベクトルを返す)
[in]nrhs右辺の数, すなわち, 行列 B および X の列数. (nrhs >= 0) (nrhs = 0 の場合, 処理を行わずに戻る)
[in]lda二次元配列 a[][] の整合寸法. (lda >= max(1, m))
[in,out]a[][]配列 a[la][lda] (la >= n)
[in] m x n 行列 A.
[out] a[][] は dgeqr または dgelq が返す QR または LQ分解結果により上書きされる.
[in]ldb二次元配列 b[][] の整合寸法. (ldb >= max(1, m, n))
[in,out]b[][]配列 b[lb][ldb] (lb >= nrhs)
[in] 右辺ベクトルが列ごとに格納された行列 B. B は, m x nrhs 行列(trans = 'N' の場合), または, n x nrhs 行列(trans = 'T' の場合)である.
[out] info = 0 の場合, b[][] は列ごとに格納された解ベクトルにより上書きされる:
  trans = 'N' かつ m >= n: b[][] の行 0〜n-1 に最小二乗解ベクトルが入る.
  trans = 'N' かつ m < n: b[][] の行 0〜n-1 に最小ノルム解ベクトルが入る.
  trans = 'T' かつ m >= n: b[][] の行 0〜m-1 に最小ノルム解ベクトルが入る.
  trans = 'T' かつ m < n: b[][] の行 0〜m-1 に最小二乗解ベクトルが入る.
[out]work[]配列 work[lwork]
作業領域.
終了時, info = 0 であれば, work[0] に lwork の最適値(問い合わせの場合, 最小値または最適値のどちらか)を返す.
[in]lwork配列 work[]のサイズ.
lwork = -1 または -2 の場合, 作業領域サイズの問い合わせとみなす.
lwork = -1 の場合, 最適パフォーマンスのための work[] の最適サイズを計算しその値を work[0] に返す.
lwork = -2 の場合, work[] の最小サイズを計算しその値を work[0] に返す.
[out]info= 0: 正常終了
= -1: 入力パラメータ trans の誤り (trans != 'T' および 'N')
= -2: 入力パラメータ m の誤り (m < 0)
= -3: 入力パラメータ n の誤り (n < 0)
= -4: 入力パラメータ nrhs の誤り (nrhs < 0)
= -5: 入力パラメータ lda の誤り (lda < max(1, m))
= -7: 入力パラメータ ldb の誤り (ldb < max(1, m, n))
= -10: 入力パラメータ lwork の誤り (lwork が小さすぎる)
= i > 0: A の分解結果の三角行列の i 番目の対角要素が 0 になった. 従って, A はフルランクではない. 最小二乗解は求めることができなかった.
出典
LAPACK