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