Lapacke的dgesv函数在解决AX = b时给出错误答案

时间:2019-02-23 07:05:46

标签: c lapack lapacke

我正在尝试使用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。

0 个答案:

没有答案