给出一条线并给出一堆点.我必须找到一个在线点,与给定点的距离总和最小.我找不到任何要在c中实现的算法.请提前帮助,谢谢.
不失一般性,线是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*是平均横坐标.