Eag*_*gle 7 c++ boost linear-regression lapack++ eigen
我想解决线性方程组:
Ax = b
Run Code Online (Sandbox Code Playgroud)
A是n x m
矩阵(不是正方形),b和x都是n x 1
矢量.在已知A和b的情况下,n约为50-100,m约为2(换句话说,A可以是最大值[100×2]).
我知道解决方案x
:$x = \inv(A^T A) A^T b$
我找到了几种方法来解决它:uBLAS(Boost),Lapack,Eigen等等但我不知道使用这些包的'x'的CPU计算时间有多快.我也不知道这个数字是否快速为什么解决'x'
对我来说重要的是,由于我是新手,CPU计算时间尽可能短,文档也很好.
在求解正规方程后,Ax = b
我想使用回归来改进我的近似,并且可能稍后应用卡尔曼滤波器.
我的问题是哪个C++库是robuster,并且我在上面描述的需求更快?
除非您使用优化的BLAS绑定,否则uBlas不会进行优化.
以下针对多线程和SIMD进行了优化:
顺便说一下,我不确切地知道你在做什么,但作为一项规则,正规方程式不是进行线性回归的正确方法.除非您的基质条件良好,否则应首选QR或SVD.
这是一个最小二乘解,因为你有比方程更多的未知数.如果m确实等于2,那就告诉我一个简单的线性最小二乘对你来说就足够了.公式可以以封闭的形式写出来.你不需要图书馆.
如果m是单个数字,我仍然会说你可以用A(转置)*A*X = A(转置)*b轻松解决这个问题.用于求解系数的简单LU分解就足够了.它应该是一个比你想要的更直接的问题.