0
私はLAPACKのDPOTRS関数について、C内から呼び出されたときに助けを求めたいと思います。 (実際には固有値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;
}
これは間違った結果を返します。正しい結果が1.000、-0.500
はしかし、私は0.469、-0.188
を受け取ることになる。しかし、それはうまくいったかのようにその上に、情報は、0を返します!
そして、皆さん、それは私の心を揺さぶるものです。
ありがとうございます!
これは間違いありません、ありがとうございます。 – user1233977
しかし、私は失礼である理由はないことを強調したいと思います。 このマニュアルでは、不明瞭な英語が使用されています。私と技術大学の4人の教授が読んだところでは、正定の対称行列Aを使い、DPOTRFで計算したコレスキー分解を使ってシステムを解くということです。 それでも、ありがとうございます。あなたは私の質問に答えました。 – user1233977
@ user1233977:回答者が失礼だとは思わない。カルト、多分、しかし、失礼ではありません。 –