拉帕克';c+中的dgeqrf+; 我的项目是在C++中,在非常大的矩阵(例如500×500)中找到QR分解的Q。我最近开始使用Lapack包及其特殊功能“dgeqrf”。我从一个简单的矩阵开始,代码如下:块: #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); }

拉帕克';c+中的dgeqrf+; 我的项目是在C++中,在非常大的矩阵(例如500×500)中找到QR分解的Q。我最近开始使用Lapack包及其特殊功能“dgeqrf”。我从一个简单的矩阵开始,代码如下:块: #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); },c++,codeblocks,lapack,C++,Codeblocks,Lapack,谁能帮我解决这个错误?我的参数定义有错误吗? 还有,在运行之后,我如何使用Q矩阵?我可以定义一个新的matixdouble q[][]=dgeqrf(..)并在我的项目中使用它吗? 如果我的问题很基本,我很抱歉,但我找不到解决方案 似乎dgeqrf_u期望a是一个扁平阵列,这将导致Stackoverflow@yankee2905的答案修复了您报告的错误。你不想接受他的回答,因为这暴露了你的下一个问题。一次只问一个问题。如果你只是想在项目完成之前解决你的问题,恐怕这是个错误的地方。下一个问题是您没

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

似乎dgeqrf_u期望
a
是一个扁平阵列,这将导致Stackoverflow@yankee2905的答案修复了您报告的错误。你不想接受他的回答,因为这暴露了你的下一个问题。一次只问一个问题。如果你只是想在项目完成之前解决你的问题,恐怕这是个错误的地方。下一个问题是您没有链接定义了
dgeqrf\uqrf
的库。你的下一个问题是@MikeKinghan谢谢你的回答。我以前在推荐链接中做过这个程序。此外,我尝试了“Armadillo”库,我可以在那里做一些简单的计算,但由于这个错误,我无法在那里进行QR分解:“对_gfortran_compare_string的未定义引用”。我在DEV C++中也有这个问题。问题似乎在于安装步骤。我做到了。但它还不起作用。现在代码::Blocks显示了新的错误:“未定义对'dgeqrf'的引用”。它把我弄糊涂了。
double a[12] = {0, 2, 2,  0, 2, 2,  // row1
                2,-1,-1,1.5,-1,-1}; // row2
double a[12] = {0, 2, 2,  0, 2, 2,  // row1
                2,-1,-1,1.5,-1,-1}; // row2