Я пытаюсь решить линейную систему уравнений с clapack.
Мой код выглядит следующим образом:
//ATTENTION: matrix in column-major
double A[3*3]={ 2.0, -1.0, 0.0,
0.0, 2.0, -1.0,
0.0, 0.0, 2.0},
b[3]={1.0,2.0,3.0};
integer n=3,info,nrhs=1; char uplo='L';
dpotrf_("L", &n, A, &n, &info);
dpotrs_("L", &n, &nrhs, A, &n, b, &n, &info);
printf("Solution: %10.4f %10.4f %10.4f",b[0], b[1], b[2]);
Как задано в этом вопросе, необходимо сначала факторизовать матрицу. Предполагается, что dpotrf факторизует, dpotrs решает систему, используя факторизованную матрицу.
Однако мой результат
2.5 4.0 3.5
явно неверен, я проверил это здесь с WolframAlpha
Где моя ошибка?