最近、C++での行列計算用の新しいライブラリ、LAPACKがインストールされました。私はこの分野の初心者であり、dgeqrf
関数を使ってQR分解のアプリケーションをテストしたかったのです。LAPACKによるC++でのQR分解
#include <iostream>
#include <lapacke.h>
using namespace std;
int main()
{
double a[4] = {0, 2, 2, -1};
int m=2;
int n=2;
int info = 0;
int lda = m;
int lwork = n;
double *work;
double *tau;
dgeqrfp_(&m, &n, a, &lda, tau, work, &lwork, &info);
}
エラーなしで構築しましたが、実行しようとするとうまくいきませんでした。私が問題だかわからないが、私はdgeqrf
機能の私の定義が間違っていると思う
D:\c++ code\lllll\main.cpp|15|warning: 'tau' is used uninitialized in this function [-Wuninitialized]|
D:\c++ code\lllll\main.cpp|15|warning: 'work' is used uninitialized in this function [-Wuninitialized]|
:私はこれらの警告メッセージを得ました。
また、dgeqrf
は、void
の機能です。私はその結果(Q行列)を別の行列に保存し、それを私の計算に使用する必要があります。
誰もそれについて考えていますか?
'tau'をと' work'パラメータが事前に割り当てられて配列することになっています。詳細については(特に配列の必要な長さについて)、ドキュメントを参照してください。 –
@BaummitAugenしかし、ドキュメントやインターネットの「dgesqr」関数の単純なC++の例で、パラメータをどのように決定できるかについての情報は見つかりませんでした。 – Ham82
申し訳ありません、申し分なく、私は偽薬を探して、私が見つけなければ答えを書くでしょう。私には分かりません。 –