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

我希望你不要指望别人做你的工作。由于您几乎回答了您的问题,因此我认为发布它没有意义。此外,在使用本网站之前花一些时间阅读本网站的常见问题解答部分可能是一件好事。您可能会在那里找到一些有用的信息。

至于问题的答案:

很可能确实是 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 回答