首先,我是 C++ 新手。
我正在为我的硕士论文编写一个程序,其中的一部分应该以递归的方式解决回归问题。
我想解决:
Ax = y
在我的例子中,计算速度是不可忽视的,这就是我想知道 Boost::BLAS 是否使用
x = (A^T A)^{-1}A^Ty
比 Lapackpp 需要更少的计算时间(我使用的是 gentoo)。
附言 我能够在 Lapackpp 项目站点找到类文档,但没有找到示例。如果 Lapack 比 Boost::BLAS 更快,有人能给我提供一些例子吗
谢谢
最佳答案
从数值分析的角度来看,您永远不想编写这样的代码
- 显式反转矩阵,或者
- 形成回归的正规方程矩阵 (
A^T A
)
与直接解决相同问题的替代方法相比,这两种方法都需要更多工作,但准确性较低(并且可能不太稳定)。
每当您看到一些数学显示矩阵求逆时,都应该理解为“求解线性方程组”,或者对矩阵进行因式分解并使用因式分解来求解系统。 BLAS 和 Lapack 都有执行此操作的例程。
同样,对于回归,调用计算回归的库函数,或者阅读如何自己做。正规方程式方法是教科书上的错误方法。
关于c++ - Lapackpp 与 Boost BLAS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4575482/