我想解决一个简单的线性方程组使用LAPACK。我使用为带状矩阵进行了优化的dbsvg方法。我已经看到了一个奇怪的行为。当我填的是AT矩阵是这样的: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