Lapack在c ++中的dgeqrf

时间:2016-12-03 13:22:10

标签: c++ codeblocks lapack

我的项目是在C ++中为非常大的矩阵(例如500 * 500)的QR分解中找到Q.我最近开始使用Lapack软件包及其特殊功能" dgeqrf"。我从一个简单的矩阵开始,如下面的代码:blocks:

 #include <iostream>
 #include <lapacke.h>

using namespace std;

int main()
{
    double a[6][2] = {{0,2},{2,-1},{2,-1},{0,1.5},{2,-1},{2,-1}};
    int m=6;
    int n=2;
    int info = 0;
    int lda = m;
    int lwork = n;
    double *work;
    double *tau;
    dgeqrf_(&m, &n, a, &lda, tau, work, &lwork, &info);

}

运行代码后,我在&#34; dgeqrf&#34;中看到了这个错误。行:

error: cannot convert 'double (*)[2]' to 'double*' for argument '3' to 'void dgeqrf_(int*, int*, double*, int*, double*, double*, int*, int*)'

谁可以帮我解决这个错误?我在参数定义中有错误吗? 另外,在运行之后,我如何使用Q矩阵?我可以定义一个新的matix double q[][]=dgeqrf(....)并在我的项目中使用它吗? 对不起,如果我的问题非常基本,但我无法找到解决方案。

1 个答案:

答案 0 :(得分:2)

double a[12] = {0, 2, 2,  0, 2, 2,  // row1
                2,-1,-1,1.5,-1,-1}; // row2