猿问

求解具有 4 个未知数的大型方程组

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

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

这是 ~1800 方程的形式:

实际距离 = 感知距离 + X(感知轴承)+ Y(速度超地)+ Z(航道超地)+ A(航向)

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

另外,我不相信所有这些因素都是必要的,所以我完全愿意省略一两个因素。

从我理解的小线性代数来看,我尝试过这样的事情,但没有运气:

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

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

这是在正确的轨道上吗?

需要明确的是,我期望为一个方程生成系数,该方程将校正感知到的接触距离,使其尽可能接近实际接触距离。

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

提前感谢您的帮助。


有只小跳蛙
浏览 254回答 2
2回答

红糖糍粑

求解此类方程组的最佳方法是使用:不完全 Cholesky 共轭梯度技术 (ICCG)。这可以在 Matlab、C++ 中的数值配方、Nag Fortran 或许多其他语言中实现。它非常有效。基本上你正在反转一个大的带状矩阵。Golub 的书详细描述了它。看起来这很有用:https://docs.scipy.org/doc/numpy-1.14.1/reference/generated/numpy.linalg.cholesky.html

明月笑刀无情

当您的方程多于未知数时,您可能没有精确的解。在这种情况下,您可以做的是使用矩阵 A 的 Moore-Penrose 伪逆。 A 乘以 b 将为您提供最小二乘距离解。在 numpy 中,您可以使用https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.lstsq.html#numpy.linalg.lstsq
随时随地看视频慕课网APP

相关分类

Python
我要回答