Функция dgesv Лапаке, дающая неправильный ответ при решении AX = b - PullRequest
0 голосов
/ 23 февраля 2019

Я пытаюсь решить простое линейное уравнение, используя 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.

...