如何在一条线上找到最佳位置点?

Piy*_*yay -6 c geometry

给出一条线并给出一堆点.我必须找到一个在线点,与给定点的距离总和最小.我找不到任何要在c中实现的算法.请提前帮助,谢谢.

Yve*_*ust 5

不失一般性,线是X轴(否则旋转整个几何体).然后你想最小化

Sum ?[(X - Xk)² + Yk²]
Run Code Online (Sandbox Code Playgroud)

您可以通过取消一阶导数来完成

Sum (X - Xk)/?[(X - Xk)² + Yk²] = 0
Run Code Online (Sandbox Code Playgroud)

不幸的是,这是一个需要数值方法的非线性方程.

作为起始近似,您可以使用平方距离之和的最小值,

Sum [(X - Xk)² + Yk²]
Run Code Online (Sandbox Code Playgroud)

通过解决

Sum (X - Xk) = 0
Run Code Online (Sandbox Code Playgroud)

这只是给点(X*, 0)这里X*是平均横坐标.

  • 只要没有给定的点在线,使用Newton-Raphson就可以了.然而,如果某些点在线上,那么目标是不可区分的(在这些点上)并且事情并不那么好. (2认同)