저는 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];
}
그리고 전화 : 나는 AT 행렬이 방법을 채울 때
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