J'essaie de résoudre un système d'équations linéaires simple en utilisant LAPACK. J'utilise la méthode dbsvg qui est optimisée pour les matrices en bandes. J'ai observé un comportement vraiment étrange. Quand je remplis la matrice AT ainsi:LAPACK + C, comportement bizarre
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];
}
Et appelez:
dgbsv_(&N, &KL, &KU, &NRHS, AT, &LDAB, myIpiv, x, &LDB, &INFO);
Il fonctionne parfaitement. Cependant, quand je le fais de cette façon:
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;
Il en résulte un vecteur rempli de NaN. Voici les déclarations:
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;
Des idées?
Ils sont identiques, mais l'appel dgbsv_ donne des résultats différents pour eux. – milosz