我正在尝试使用lapacke dgesv解决一个简单的线性方程。实际解是x = 1,y = 2,z = 3。但是我通过使用lapacke获得了不同的解决方案。任何帮助将不胜感激。
#include <lapacke.h>
#include <stdio.h>
#define NDIM 3
int main() {
int N, NRHS, LDA, LDB;
int IPIV[NDIM], INFO;
N=NDIM; NRHS=1; LDA=NDIM; LDB=NDIM;
double *A,*B;
int i;
A = (double*) calloc(NDIM*NDIM,sizeof(double));
B = (double*) calloc(NDIM*NRHS,sizeof(double));
A[0]=1;
A[1]=1;
A[2]=1;
A[3]=2;
A[4]=1;
A[5]=0;
A[6]=3;
A[7]=1;
A[8]=2;
B[0]=6;
B[1]=4;
B[2]=11;
INFO=LAPACKE_dgesv(LAPACK_ROW_MAJOR, N, NRHS, A, LDA, IPIV,B,LDB);
printf("%d\n",INFO);
for(i=0;i<N;i++){
printf("%f\n",B[i]);
}
}
编辑: LDB应该设为NRHS,而不是NDIM。