Lapackpp vs Boost BLAS

Eag*_*gle 4 c++ boost linear-algebra linear-regression lapack++

首先,我是 C++ 新手。

我正在为我的硕士论文编写一个程序,其中一部分假设以递归方式解决回归问题。

我想解决:

Ax = y
Run Code Online (Sandbox Code Playgroud)

就我而言,计算速度不可忽视,这就是我想知道 Boost::BLAS 是否使用

x = (A^T A)^{-1}A^Ty
Run Code Online (Sandbox Code Playgroud)

需要比 Lapackpp 更少的计算时间(我使用的是 gentoo)。

PS 我能够在 Lapackpp 项目站点找到类文档,但找不到示例。有人可以给我提供一些例子,以防 Lapack 比 Boost::BLAS 更快吗

谢谢

Phi*_*ler 5

从数值分析的角度来看,您永远不想编写这样的代码

  • 显式反转矩阵,或者
  • A^T A形成回归的正规方程矩阵 ( )

与直接解决同一问题的替代方案相比,这两种方法都需要更多工作,但准确性较低(并且可能不太稳定)。

每当你看到一些数学显示矩阵求逆时,这应该被理解为“求解线性方程组”,或者对矩阵进行因式分解并使用因式分解来求解该系统。BLAS 和 Lapack 都有执行此操作的例程。

同样,对于回归,请调用计算回归的库函数,或自行阅读如何执行此操作。正规方程法是教科书上错误的做法。