Я пытаюсь использовать подпрограмму LAPACK dpbtrf
( Documentaton ) в c ++, но всегда получаю ошибку сегментации. Я не уверен, как передать матрицу LAPACKE_dpbtrf
, и попытался воспроизвести ее из нескольких примеров, которые я нашел, но безуспешно. Как заставить код ниже работать?
Я хочу вычислить холецкую декомпозицию матрицы
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);
}