【发布时间】:2011-06-02 20:43:08
【问题描述】:
我想求解线性方程组:
Ax = b
A 是 n x m 矩阵(不是正方形),b 和 x 都是 n x 1 向量。在已知 A 和 b 的情况下,n 大约为 50-100,m 约为 2(换句话说,A 可以是最大值 [100x2])。
我知道x的解决方案:$x = \inv(A^T A) A^T b$
我找到了几种解决方法:uBLAS (Boost)、Lapack、Eigen 等,但我不知道使用这些包的“x”的 CPU 计算时间有多快。我也不知道这在数值上是否快速为什么要解决'x'
对我来说重要的是,由于我是新手,所以 CPU 计算时间将尽可能短,并且有良好的文档。
解出正规方程Ax = b 后,我想使用回归和可能稍后应用卡尔曼滤波器来改进我的近似值。
我的问题是哪个 C++ 库更健壮、更快速地满足我上面描述的需求?
【问题讨论】:
-
如何将 n x m 矩阵乘以 n 维列向量?大概 x 实际上是 m 维的。
-
另外,您是否有一些规定最低限度符合流行语的要求?
-
@Eagle 我不认为 Boost uBLAS 库实现了这一点,但如果我错了,请纠正我。 uBLAS 似乎为您提供了向量、矩阵和基本运算(乘法、加法),但没有像 LU、QR、SVD 或矩阵求逆,更不用说 OLS 实现了。然而,它可能是一个很好的库来实现这样的算法。同样,如果我错了,或者您是否找到了一个好的 Boost uBLAS OLS 实现,请告诉我...
-
我错了,lu.hpp中有LU分解。除了包含的三角形solver,它还可以让您做一些事情
标签: c++ boost linear-regression eigen lapack++