Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用dpbtrf时出现分段错误 我尝试在C++中使用LAPACK程序 dPBTrf(),但总是会出现分段错误。我不知道如何传递矩阵LAPACKE\u dpbtrf,并试图从我发现的几个例子中复制它,但没有成功。如何使下面的代码工作_C++_Lapack_Scientific Computing_Lapacke - Fatal编程技术网

使用dpbtrf时出现分段错误 我尝试在C++中使用LAPACK程序 dPBTrf(),但总是会出现分段错误。我不知道如何传递矩阵LAPACKE\u dpbtrf,并试图从我发现的几个例子中复制它,但没有成功。如何使下面的代码工作

使用dpbtrf时出现分段错误 我尝试在C++中使用LAPACK程序 dPBTrf(),但总是会出现分段错误。我不知道如何传递矩阵LAPACKE\u dpbtrf,并试图从我发现的几个例子中复制它,但没有成功。如何使下面的代码工作,c++,lapack,scientific-computing,lapacke,C++,Lapack,Scientific Computing,Lapacke,我想计算矩阵的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; lapac

我想计算矩阵的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);

}
#包括
#包括
int main(){
lapack_int信息;
lapack_int N=5;
lapack_int KD=1;
lapack_int LDAB=KD+1;
双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);

(int i=0;i 看起来好像没有正确的维度,用于<代码> AB <代码>。根据文档,大小是(LDAB,n),不是(KD,N)。< /P>代码>双Ab[n*kd] < /Cord>警告:ISO C++禁止可变长度数组。不要依赖编译器扩展,而是使用指针(用“新”)代替。<代码>双AB [N*KD];
--不要这样做。这样做:
std::vector AB(N*KD)这可能不解决你的问题,但是至少你的代码现在是C++兼容的。@ PulcMcKeZie<代码> LaPaCKEY-DPBTrf想要一个<代码>双*<代码>参见@ RiPI2——一个向量有一个成员函数,它提供了<代码>双*<代码>。谢谢你指出这个错误。但是,我仍然没有得到想要的结果。你的意思是,它仍然崩溃?如果它不像行/列问题那样明显,那么你可能想发布一个新问题。也许你是对的。但是由于编译错误已经消失,我可以尝试自己找到解决方案。