【发布时间】:2015-02-02 12:11:32
【问题描述】:
一开始我想为我的英语道歉。现在,让我们来解决我的问题。
我尝试编写一个简单的代码来找到线性方程组的解:
斧头 = b
其中 A 是 nxn 方阵。在这个程序中,我使用 Lapack 库(我必须使用没有旋转的 LU 分解)。
我发现了几个例子,例如。 G。: Understanding LAPACK calls in C++ with a simple example 在这里我们可以看到如何使用函数:dgetrf_ 和 dgetrs_。但即使我将此代码(来自最佳答案)复制到我的程序中,它有时也会返回正确的结果(例如 A 和 b 与最佳答案中的相同),有时会返回错误的结果(例如 A = {1, -3, 1, -1}, b = {3, 5},正确答案是:{6, 1} 并且函数返回 {-4, 7})。对于更大的矩阵,它会返回错误的结果。谁能说说为什么?
LAPACK 例程假定输入矩阵不包含 IEEE 754 特殊值,例如 INF 或 NaN。使用这些特殊值可能会导致 LAPACK 返回意外结果或变得不稳定。
我猜 INF 的意思是“无穷大”,而 NaN 的意思是“非数字”,对吧?
第二个问题是,即使上面的例子也能正常工作,它使用 LU 分解和部分旋转。我需要 Lapack 库中的函数,这些函数在没有旋转的情况下进行 LU 分解。我对此功能进行了研究,但没有找到任何东西。有没有人知道这个(这些)函数(函数)是(或可能是)什么?我对这个问题的解决方案失去了希望。
【问题讨论】:
标签: c++ lapack equation-solving