查看: 1506|回复: 5

[已经解决] 求这段程序的最小返回值

[复制链接]
梦石
0
星屑
50
在线时间
58 小时
注册时间
2011-8-21
回帖
25
发表于 2012-1-14 11:36:56 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 受pia专用ID 于 2012-1-14 11:50 编辑

编程学得还好,数学太差,求解。在 x1,y1,sx1,sy1,x2,y2,sx2,sy2 不变的条件下,求t为何值时,下列程序返回值最小?(用包含x1,y1,sx1,sy1,x2,y2,sx2,sy2 的程序表示)。
  1. def distance(x1, y1, sx1, sy1, x2, y2, sx2, sy2, t)
  2.   return Math.sqrt((x1 + t*sx1 - (x2 + t*sx2))**2 + (y1 + t*sy1 - (y2 + t*sy2))**2)
  3. end
复制代码

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
回帖
2982

贵宾

发表于 2012-1-14 11:50:32 | 显示全部楼层
本帖最后由 feizhaodan 于 2012-1-14 12:00 编辑

因该什么都行吧。。。毕竟两个都有平方。。。
好吧无视这个初3小孩吧没看好要求OTL
回复

使用道具 举报

梦石
0
星屑
70
在线时间
987 小时
注册时间
2011-8-17
回帖
865
发表于 2012-1-14 15:27:19 | 显示全部楼层
当t=-(2*x2*sx2+2*y2*sy2+sy1+sx1)/(2*(sx2**2+sy2**2))时,返回值最小为
(2*x2*sx2+2*y2*sy2+sy1+sx1)**2/(4*(sx2**2+sy2**2))+x2**2+y2**2+x+y

很多年么算这么长的式子了……
回复

使用道具 举报

梦石
0
星屑
50
在线时间
58 小时
注册时间
2011-8-21
回帖
25
 楼主| 发表于 2012-1-14 19:50:59 | 显示全部楼层
peterburg 发表于 2012-1-14 15:27
当t=-(2*x2*sx2+2*y2*sy2+sy1+sx1)/(2*(sx2**2+sy2**2))时,返回值最小为
(2*x2*sx2+2*y2*sy2+sy1+sx1)**2/ ...

采纳你吧。不过我很想知道过程。
回复

使用道具 举报

梦石
0
星屑
70
在线时间
987 小时
注册时间
2011-8-17
回帖
865
发表于 2012-1-14 22:21:48 | 显示全部楼层
受pia专用ID 发表于 2012-1-14 19:50
采纳你吧。不过我很想知道过程。

原始展开成多项式,形式为f(t)=a*t**2+b*t+c,在此式中,a=sx2**2+sy2**2,故函数图象开口向上因此当t=-b/(2a)时,函数取得最小值,代入计算即可。
回复

使用道具 举报

酱油的

梦石
0
星屑
1840
在线时间
2161 小时
注册时间
2007-12-22
回帖
3216

贵宾

发表于 2012-1-15 09:45:07 | 显示全部楼层
目測LS算錯。

答案應該是:
       x1*(sx2 - sx1) + x2*(sx1 - sx2) + y1*(sy2 - sy1) + y2*(sy1 - sy2)
t =------------------------------------------------------------------------------------------
        (sx1 -  sx2)**2 + (sy1 - sy2)**2

求導算出來的
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部