|
|
◆ dggglm()
| void dggglm |
( |
int |
n, |
|
|
int |
m, |
|
|
int |
p, |
|
|
int |
lda, |
|
|
double |
a[], |
|
|
int |
ldb, |
|
|
double |
b[], |
|
|
double |
d[], |
|
|
double |
x[], |
|
|
double |
y[], |
|
|
double |
work[], |
|
|
int |
lwork, |
|
|
int * |
info |
|
) |
| |
一般Gauss-Markov線形モデル(GLM)問題
- 目的
- 本ルーチンは一般Gauss-Markov線形モデル(GLM)問題を解く.
d = A*x + B*y の制約条件のもとで || y ||_2 を最小化するxを求める.
ここで, Aはn×m行列, Bはn×p行列, dは与えられたnベクトルである. ただし, m <= n <= m+p とする. また, 次式が成り立つものとする. rank(A) = m かつ rank(A B) = n
これらの条件により, 制約付き方程式は常に正しく, 一意の解xおよび最小2ノルム解yを持つ. 解は, 次式で与えられる行列対(A, B)の一般化QR分解を用いて得られる. 特に行列Bが正方で非特異ならば, GLM問題は次の重み付き線形最小二乗問題に等しい. || inv(B)*(d - A*x) ||_2 を最小化するxを求める.
- 引数
-
| [in] | n | 行列 A および B の行数. (n >= 0) (n = 0 の場合, 処理を行わずに戻る) |
| [in] | m | 行列 A の列数. (0 <= m <= n) |
| [in] | p | 行列 B の列数. (p >= n - m) |
| [in] | lda | 二次元配列a[][]の整合寸法. (lda >= max(1, n)) |
| [in,out] | a[][] | 配列 a[la][lda] (la >= m)
[in] n×m行列 A.
[out] 配列a[][]の上三角要部分にm×m上三角行列Rが入る. |
| [in] | ldb | 二次元配列b[][]の整合寸法. (ldb >= max(1, n)) |
| [in,out] | b[][] | 配列 b[lb][ldb] (lb >= p)
[in] n×p行列 B.
[out] n <= p: 配列の一部b[p-n〜p-1][0〜n-1]の上三角部分にn×n上三角行列Tが入る.
n > p: (n-p)番目の対角およびその上三角要素にn×p上台形行列Tが入る. |
| [in,out] | d[] | 配列 d[ld] (ld >= n)
[in] d[]にGLM方程式の左辺ベクトルを入れる.
[out] d[]は壊される. |
| [out] | x[] | 配列 x[lx] (lx >= m) |
| [out] | y[] | 配列 y[ly] (ly >= p)
x[]およびy[]はGLM問題の解を返す. |
| [out] | work[] | 配列 work[lwork]
作業領域.
info = 0の場合, work[0] にlworkの最適値を返す. |
| [in] | lwork | 配列 work[]のサイズ. (lwork >= max(1, n+m+p))
最適パフォーマンスのためには lwork >= max(1, m+min(n, p)+max(n, p)*nb) とせよ. ただし, nbは最適ブロックサイズの上限である.
lwork = -1 の場合, 作業領域サイズの問い合わせとみなし, 最適サイズを求める計算だけを行い, work[0]にその値を返す. |
| [out] | info | = 0: 正常終了
= -1: 入力パラメータ n の誤り (n < 0)
= -2: 入力パラメータ m の誤り (m < 0 または m > n)
= -3: 入力パラメータ p の誤り (p < 0 または p < n - m)
= -4: 入力パラメータ lda の誤り (lda < max(1, n))
= -6: 入力パラメータ ldb の誤り (ldb < max(1, n))
= -12: 入力パラメータ lwork の誤り (lworkが小さすぎる)
= 1: (A, B)対の一般化QR分解のAに関連する上三角行列Rが特異で, rank(A) < mである. 最小二乗解を求めることができなかった.
= 2: (A, B)対の一般化QR分解のBに関する上台形行列Tの底辺側n-m×n-m部分が特異で, rank(A B) < nである. 最小二乗解を求めることができなかった. |
- 出典
- LAPACK
|