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

◆ dgelqf()

void dgelqf ( int  m,
int  n,
int  lda,
double  a[],
double  tau[],
double  work[],
int  lwork,
int *  info 
)

LQ分解

目的
本ルーチンはm×n行列AのLQ分解を計算する.
A = L * Q
引数
[in]m方程式の行数. (m >= 0) (m = 0 の場合, 処理を行わずに戻る)
[in]n方程式の列数. (n >= 0) (n = 0 の場合, 処理を行わずに戻る)
[in]lda二次元配列a[][]の整合寸法. (lda >= max(1, m))
[in,out]a[][]配列 a[la][lda] (la >= n)
[in] m×n 行列 A.
[out] 対角およびその上の要素にm×min(m, n)下台形行列Lが入る(m <= nであれば, Lは下三角行列である). 対角より上の要素は, 配列tau[]と合わせて, 基本鏡映変換の積として直交行列Qを表す (詳細を参照のこと).
[out]tau配列 tau[ltau] (ltau >= min(m, n))
基本鏡映変換のスカラー因子 (詳細を参照のこと).
[out]work[]配列 work[lwork]
作業領域.
info = 0の場合, work[0] にlworkの最適値を返す
[in]lwork配列work[]のサイズ. (lwork >= max(1, m))
パフォーマンスをよくするためには lwork >= m*nb とせよ. ただし, nbは最適ブロックサイズである.
lwork = -1 の場合, 作業領域サイズの問い合わせとみなし, 最適サイズを求める計算だけを行い, work[0]にその値を返す.
[out]info= 0: 正常終了
= -1: 入力パラメータ m の誤り (m < 0)
= -2: 入力パラメータ n の誤り (n < 0)
= -3: 入力パラメータ lda の誤り (lda < max(1, m))
= -7: 入力パラメータ lwork の誤り (lworkが小さすぎる)
詳細
行列Qは基本鏡映変換の積で表される.
Q = H(k) . . . H(2) H(1), ただし k = min(m, n).
各H(i)は次のように表される.
H(i) = I - tau * v * v^T
ただし, tauは実数スカラー, また, vは実数ベクトルで, v(1〜i-1) = 0, v(i) = 1 である. v(i+1〜n)はa[i〜n-1][i-1]に, tauはtau[i-1]に格納される.
出典
LAPACK