我的项目是在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(....)
并在我的项目中使用它吗?
对不起,如果我的问题非常基本,但我无法找到解决方案。
答案 0 :(得分:2)
double a[12] = {0, 2, 2, 0, 2, 2, // row1
2,-1,-1,1.5,-1,-1}; // row2