我有一些2D线段,它们应该在一个点相交,但由于早期计算中的噪声无法减少,它们并没有相交。
是否有一种算法可以计算所有线段相交的最佳近似值。类似于与所有线段的平均距离最小的点,不一定位于任何线段上的点?
我有一些2D线段,它们应该在一个点相交,但由于早期计算中的噪声无法减少,它们并没有相交。
是否有一种算法可以计算所有线段相交的最佳近似值。类似于与所有线段的平均距离最小的点,不一定位于任何线段上的点?
p_i
为交点,c = 1/n sum(p_i)
。我们来证明 c
是平均距离 d(a)
最小的点集 p_i
和任意点 a
之间的距离:d(a) = 1/n sum( |a-p_i|^2 )
d(a)
中被求平均的是,使用内积符号表示为:|a-p_i|^2 = <a-p_i, a-p_i> = |a|^2 + |p_i|^2 - 2<a,p_i>`
< p > <a,p_i>
的平均值就是使用点积的双线性性质得到的 <a,c>
。因此,
d(a) = |a|^2 - 2<a,c> + 1/n sum( |p_i|^2 )
因此同样地
d(c) = |c|^2 - 2<c,c> + 1/n sum( |p_i|^2 ) = -|c|^2 + 1/n sum( |p_i|^2 )
两者相减
d(a) - d(c) = |a|^2 - 2<a,c> + |c|^2 = |a-c|^2
d(c)
添加到两侧后,任意点a
到平均距离为:d(a) = d(c) + |a-c|^2
由于所有项都是正数,因此当|a-c|^2
为零时最小化,换句话说,当a=c
时。
如果我们有自由选择度量标准,平方距离之和可能会给出一个简单的算法。
我们可以将到第i条线的距离的平方表示为点坐标的函数,我们将得到(A[i]x,x)+(b[i],x)+c[i]
,其中A[i]
是一个3x3矩阵,b[i]
是一个向量,c[i]
是一个数字,(a,b)是标量乘法。
它们的总和将是(A[sum]x,x)+(b[sum],x)+c[sum]
。
这种函数的最小值是x=-inverse(A[sum])b[sum]/2
。