如何获得该直线方程?

eastsun 2005-01-14 07:42:48

平面上有n个点( n >= 3 ), 求一条直线,使得这n个点到该直线的距离的平方和最小,不能对每个斜率用遍历方法(那样太慢了)。

请教计算几何方面的高手。

(如果给定斜率,算法我倒是知道的)。
...全文
217 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻开心 2005-09-02
  • 打赏
  • 举报
回复
http://www.cstc.net.cn/docs/docs.php?id=179
xiaocai0001 2005-09-02
  • 打赏
  • 举报
回复
这明显是最小二乘法做线性拟合嘛~~~~
ac1998 2005-09-02
  • 打赏
  • 举报
回复
test.
mathe 2005-01-17
  • 打赏
  • 举报
回复
解这个方程也很简单。
记x2b=(x1^2+x2^2+...+xn^2)/n
y2b=(y1^2+y2^2+...+yn^2)/n
xyb=(x1y1+x2y2+...+xnyn)/n
xb=(x1+x2+...+xn)/n
yb=(y1+y2+...+yn)/n
那么上面方程就是
(x2b+L)*a+xyb*b+xb*c=0
xyb*a+(y2b+L)*b+yb*c=0
xb*a+yb*b+c=0
上面齐次方程有非0解(a,b,c)
所以要求上面矩阵的行列式为0
| (x2b+L) xyb xb|
| xyb (y2b+L) yb| = 0
| xb yb 1|
这是一个关于L的二次方程,求出L,
然后带入上面方程,解出任意一个(a,b,c),那么就是一条直线方程
其中一个L对应的是平方和最小的解,另外一个是平方和最大的解,自己检验一下就可以
知道那个是合法的解。

To kongl123(kongl123) :
在给定a^2+b^2=1时,点到直线的距离就是|a*xk+b*yk+c|
mathe 2005-01-17
  • 打赏
  • 举报
回复
caohoujie的方法不对的,带约束(a^2+b^2=1)的情况下求极值不能简单的求导,要用我
上面给出的方法。
caohoujie 2005-01-17
  • 打赏
  • 举报
回复
楼上的看清楚,距离的平方和
kongl123 2005-01-17
  • 打赏
  • 举报
回复
:)恩,没错!我证明过了
subsubzero 2005-01-15
  • 打赏
  • 举报
回复
up.second
kongl123 2005-01-15
  • 打赏
  • 举报
回复
楼上的“a*xk+b*yk+c”是不是指 点(Xk,Yk)到直线 ax+by+c = 0的距离?是的话我觉得有问题。就举个简单的例子:(0,0)到x+y+2 = 0的距离,这个公式不对(由公式为2,实为sqrt(2))。

我说个解法:
设第i点为(Xi,Yi),求的直线为Y = tgθX - c.则直线交x轴为( c/tgθ )将坐标向X正方向平稳c/tgθ。第i点为(Xi - c/tgθ,Yi)(X'i,Yi);方程为Y = tgθ(X-c/tgθ)-c:Y'=tgθX'- c。以平稳后的原点O'和X'正方向建立极坐标系。设第i点为(φ,R)其中R^2 = (X'i)^2+(Yi)^2。将极坐标系中的图形顺时针转θ度,则直线方程为θ = 0;第i点为(φ-θ,R)。将此时的极坐标系转为直角坐标系。距离为:|sin(φ-θ)R| = |sinφcosθR-cosφsinθR| = |cosθX'i-sinθYi|=|(Yi+c)cosθ-sinθXi|;r^2 = (Yi+c)^2 cosθ^2 + sinθ^2 Xi^2 - (YiXi+cXi)sin(2θ)/2 距离平方和为:
f(n)=(S(Yi^2)+2S(Yi)c + nc^2)cosθ^2+S(Xi^2)sinθ^2-S(YiXi)sin(2θ)/2+S(cXi)sin(2θ)/2。
df/dθ = 0,df/dc = 0时f(n)最小(或最大)。
metaphor 2005-01-15
  • 打赏
  • 举报
回复
最小二乘法
caohoujie 2005-01-15
  • 打赏
  • 举报
回复
假设给定直线为ax+by+c=0,其中a^2+b^2=1
第k个点坐标为(Xk,Yk)
Let f(a,b,c)=Sum((a*Xk+b*Yk+c)^2)
Let df/da=0 --1
Let df/db=0 --2
Let df/dc=0 --3
a^2+b^2=1 --4
解以上四式得a,b,c
mathe 2005-01-15
  • 打赏
  • 举报
回复
假设给定直线为ax+by+c=0,其中a^2+b^2=1
第k个点坐标为(xk,yk)
那么,就是要求给定a^2+b^2=1,求a,b,c使得
Sum((a*xk+b*yk+c)^2)最小
Let f(a,b,c)=Sum((a*xk+b*yk+c)^2)+L(a^2+b^2-1)
Let df/da=df/db=df/dc=0,
结合a^2+b^2=1
解出a,b,c,L就可以了。
eastsun 2005-01-14
  • 打赏
  • 举报
回复

up. first.

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧