Ошибка сегментации при использовании dpbtrf - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь использовать подпрограмму 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);

}

1 Ответ

0 голосов
/ 09 ноября 2018

Похоже, у вас нет подходящих размеров для AB. Согласно документации, размер (LDAB, N), а не (KD, N).

...