用4个未知数求解大型方程组

时间:2019-04-16 15:19:52

标签: python numpy linear-algebra

我有一个数据集,其中包括约1800个融合雷达触点的距离和方位以及与这些触点的实际距离和方位,我需要开发一个校正方程以使感知值与实际值尽可能接近值。

可视化时错误似乎有趋势,所以在我看来应该有一个简单的方程来校正它。

这是〜1800等式的形式:

actual_distance =感知距离+ X(perceved_bearing)+ Y(speed_over_ground)+ Z(course_over_ground)+ A(heading)

求解X,Y,Z和A的最佳方法是什么?

此外,我不认为所有这些因素都是必要的,因此我完全愿意省略其中一个或两个因素。

从我了解的线性小代数中,我尝试过这种运气不好的事情:

Ax = b-> x = b / A通过numpy.linalg.solve(A,b)

其中A是4 x〜1800矩阵,b是1 x〜1800矩阵

这是在正确的轨道上吗?

要清楚一点,我期望为一个方程生成coefficeints,该方程将校正到接触的感知距离,从而使其尽可能接近实际的接触距离。

如果有更好的方法,我也完全愿意放弃此方法。

谢谢您的帮助。

2 个答案:

答案 0 :(得分:1)

解决此类方程组的最佳方法是使用:不完整的Cholesky共轭梯度技术(ICCG)。可以在Matlab,C ++的数值配方,Nag Fortran或许多其他语言中实现。它非常有效。基本上,您正在反转一个大型的带状矩阵。 Golub的书对此进行了详细介绍。

这样看起来很有用:

https://docs.scipy.org/doc/numpy-1.14.1/reference/generated/numpy.linalg.cholesky.html

答案 1 :(得分:1)

当方程式多于未知数时,您可能没有确切的解。在这种情况下,您可以使用矩阵A的Moore-Penrose伪逆。乘以b将获得最小平方距离的解。在numpy中,您可以使用https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.lstsq.html#numpy.linalg.lstsq

相关问题