Я пытаюсь решить систему простых линейных уравнений, используя LAPACK. Я использую метод dbsvg, который оптимизирован для ленточных матриц. Я наблюдал за странным поведением. Когда я заполнение матрицы на этом пути:LAPACK + C, странное поведение
for(i=0; i<DIM;i++) AB[0][i] = -1;
for(i=0; i<DIM;i++) AB[1][i] = 2;
for(i=0; i<DIM;i++) AB[2][i] = -1;
for(i=0; i<3; i++)
for(j=0;j<DIM;j++) {
AT[i*DIM+j]=AB[i][j];
}
И называют:
dgbsv_(&N, &KL, &KU, &NRHS, AT, &LDAB, myIpiv, x, &LDB, &INFO);
Он отлично работает. Однако, когда я это делаю так:
for(i=0; i<DIM;i++) AT[i] = -1;
for(i=0; i<DIM;i++) AT[DIM+i] = 2;
for(i=0; i<DIM;i++) AT[2*DIM+i] = -1;
Это результат с вектором, заполненным NaN. Вот объявления:
double AB[3][DIM], AT[3*DIM];
double x[DIM];
int myIpiv[DIM];
int N=DIM, KL=1, KU=1, NRHS=1, LDAB=DIM, LDB=DIM, INFO;
Любые идеи?
Они одинаковы, однако вызов dgbsv_ дает разные результаты для них. – milosz