|
◆ 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 はフルランクであること.
下記オプションが提供される:
- trans = 'N' かつ m >= n の場合: 優決定系の最小二乗解を求める. すなわち, 次の最小二乗問題を解く.
- trans = 'N' かつ m < n の場合: 劣決定系 A * X = B の最小ノルム解を求める.
- trans = 'T' かつ m >= n の場合: 劣決定系 A^T * X = B の最小ノルム解を求める.
- trans = 'T' かつ m < n の場合: 優決定系の最小二乗解を求める. すなわち, 次の最小二乗問題を解く.
いくつかの右辺ベクトル 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
|