1

ac プログラムで Lapack lib の F77_NAME(dgeqrf) 関数を使用して qr 分解を計算したいと考えています。

行列 3x3 の場合:

12.000000 -51.000000 4.000000
6.000000 167.000000 -68.000000
-4.000000 24.000000 -41.000000

出力 3x3 (R 行列と Q の構築に使用されるいくつかのベクトルの組み合わせ)(線形形式) を取得します。

-52.545219, -0.790144, 0.061972, 165.895209, -70.906839, -0.520684, 27.328842, -31.566433, -23.015097

次に、Lapack の F77_NAME(dorgqr) を使用して Q 行列を抽出し、出力 3x3 (線形形式) を取得します。

-0.228375, 0.970593, -0.076125, -0.618929, -0.084383, 0.780901, 0.751513, 0.225454, 0.619999

これはウィキペディアから取った例で、私の Q はウィキペディア Q とは異なるようです: http://en.wikipedia.org/wiki/QR_decomposition#Example_2

Fortran と C の配列表現の違いが原因でしょうか? 初期行列の転置は問題を解決しますか?

4

1 に答える 1

1

他の人があなたの仕事をすることを期待しないでください。あなたはほとんどあなたの質問に答えたので、投稿する意味がわかりません。また、このサイトを使用する前に、このサイトの FAQ セクションを読むのに時間をかけるのは良いことかもしれません. そこで役立つ情報が見つかるかもしれません。

質問への答えとして:

おそらく、C と Fortran の配列表現の違いが問題の原因です。これを参照してください:

http://en.wikipedia.org/wiki/Row-major_order

Fortran と C コードの混合に関する一般的な情報については、次の情報が役立つ場合があります。

http://www.yolinux.com/TUTORIALS/LinuxTutorialMixingFortranAndC.html

于 2011-04-17T22:20:54.700 に答える