Project1

标题: 求这段程序的最小返回值 [打印本页]

作者: 受pia专用ID    时间: 2012-1-14 11:36
标题: 求这段程序的最小返回值
本帖最后由 受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
复制代码
dsu_plus_rewardpost_czw
作者: feizhaodan    时间: 2012-1-14 11:50
本帖最后由 feizhaodan 于 2012-1-14 12:00 编辑

因该什么都行吧。。。毕竟两个都有平方。。。
好吧无视这个初3小孩吧没看好要求OTL
作者: 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/(4*(sx2**2+sy2**2))+x2**2+y2**2+x+y

很多年么算这么长的式子了……
作者: 受pia专用ID    时间: 2012-1-14 19:50
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/ ...

采纳你吧。不过我很想知道过程。
作者: peterburg    时间: 2012-1-14 22:21
受pia专用ID 发表于 2012-1-14 19:50
采纳你吧。不过我很想知道过程。

原始展开成多项式,形式为f(t)=a*t**2+b*t+c,在此式中,a=sx2**2+sy2**2,故函数图象开口向上因此当t=-b/(2a)时,函数取得最小值,代入计算即可。
作者: 禾西    时间: 2012-1-15 09:45
目測LS算錯。

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

求導算出來的




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1