[英]Segmentation fault when using dpbtrf
我尝试在 C++ 中使用 LAPACK 例程dpbtrf
( Documentaton ),但总是出现分段错误。 我不确定如何传递矩阵LAPACKE_dpbtrf
并尝试从我发现的几个示例中复制它但没有成功。 如何使下面的代码工作?
我想计算矩阵的 cholesky 分解
1 -0.9 0 0 0
-0.9 1.81 -0.9 0 0
0 -0.9 1.81 -0.9 0
0 0 -0.9 1.81 -0.9
0 0 0 -0.9 1.81
这是我尝试过的:
#include<iostream>
#include<lapacke.h>
int main() {
lapack_int info;
lapack_int N = 5;
lapack_int KD = 1;
lapack_int LDAB = KD + 1;
double AB[N * KD] = {
1, 1.81, 1.81, 1.81, 1.81,
-0.9, -0.9, -0.9, -0.9, -0.9
};
info = LAPACKE_dpbtrf( LAPACK_COL_MAJOR, 'L', N, KD, AB, LDAB);
for(int i=0;i<N * KD; i++)
{
std::cout << AB[i] << std::endl;
}
return(info);
}
似乎您没有AB
的适当尺寸。 根据文档,大小是 (LDAB,N),而不是 (KD,N)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.