C에서 호출 될 때 LAPACK의 DPOTRS 함수에 대한 도움을 얻고 싶습니다. 예를 들어, 작업 할 매트릭스가 긍정적이라는 것을 알고 있습니다. (실제적으로 Eigenvalues 3, 1과 함께)GNU/Linux의 C에서 LAPACK에서 DPOTRS 호출하기
지금 당장 제 기능이 올바르게 작동하지 않습니다. 잘못된 결과를 반환합니다.
double A[] = {2.0, 1.0, 1.0, 2.0};
double b[] = {1.5, 0.0};
printf("%5.3f %5.3f\n", b[0], b[1]);
info = dpotrs('U',2,1,A,2,b,2);
printf("%d\n", info);
printf("%5.3f %5.3f\n", b[0], b[1]);
이것은 코드입니다. dpotrs 수동으로이 코드를 사용하여 가져 :
static long dpotrs(char UPLO, long N, long NRHS, double* A, long LDA, double* B, long LDB)
{
extern void dpotrs_(char* UPLOp, long* Np, long* NRHSp, double* A, long* LDAp, double* B, long* LDBp, long* infop);
long info;
dpotrs_(&UPLO, &N, &NRHS, A, &LDA, B, &LDB, &info);
return info;
}
그것은 잘못된 결과를 반환! 그것은 잘 갔다 것처럼 정확한 결과는
하지만 위에 -0.188이 정보는 0을 반환합니다, 그러나, 나는 0.469를받을 1.000 -0.500
이 될 것입니다!
여러분, 그리고 신사 숙녀 여러분, 제 마음을 불끈 깁니다.
미리 감사드립니다.
정확합니다. 감사합니다. – user1233977
그러나 무례한 이유가 없다는 점을 강조하고 싶습니다. 설명서에 영어가 명확하지 않습니다. 저와 4 명의 교수가 기술 대학에서 읽는 방법은 양의 대칭 행렬 A를 사용하고 DPOTRF에서 계산 한 콜레 스키 인수 분해를 사용하여 시스템을 해석하는 것입니다. 그래도 고맙습니다. 너는 내 질문에 대답했다. – user1233977
@ user1233977 : 답변자가 무례하다고 생각하지 않습니다. 커트, 아마도,하지만 무례하지 않습니다. –