c++ - Lapackpp 与 Boost BLAS

标签 c++ boost linear-algebra linear-regression lapack++

首先,我是 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/

相关文章:

c++ - 使用引导序列化从成员函数反序列化

c++ - Boost.Preprocessor 是否可以实现二维序列?

c++ - 在集合中寻找一个值

matlab - 高斯消元法求解 A*x = b 线性系统 (MATLAB)

c++ - 是否有等同于 gsl_multifit_wlinear() 的 Eigen C++ 库?

c++ - QuantLib 多线程/并发

C++ - 确保硬盘(驱动器)在程序执行期间不空闲

c++ - 从缓冲区输入的位

c++ - Boost 1.55.0 程序选项问题

python - numpy.linalg.det 的时间复杂度是多少?