如果你会任何一种程序语言,用一个循环语句就可解决问题。我用VB语言编的。程序非常简单。<br>-----------------------------------------------------------------------<br>'人初始位置(0,0),狗初始位置(x0,y0)<br>'t时刻时,人位置(v1*t,0),狗位置(x,y),r为t时刻人狗的距离<br>'dt 为t时刻的微小时间变量<br>'ξ为极小量 ,若r小于ξ,则认为r已等于0<br>'在t到t+dt的时间内,认为狗做匀速直线运动<br><br>x = x0<br>y = y0<br>v1 = 10<br>v2 = 20<br>dt = 0.01<br>ξ = 0.0001<br>t = 0<br>'以上初始量可随意设置,dt和ξ可随意设置到足够小<br>Do While True<br> r = Sqr((v1 * t - x) * (v1 * t - x) + y * y)<br> If r < ξ Then Exit Do '人狗相遇后离开循环<br> x = x + v2 * (v1 * t - x) / r * dt<br> y = y + v2 * (0 - y) / r * dt '获取t+dt时刻狗的位置<br> t = t + dt<br>Loop<br><br>MsgBox ("相遇所需时间为" & t) '显示相遇时间。结束程序。<br>--------------------------------------------------------------------------<br>因为V2小于V1时,循环体中,r会越来越大,所以循环体中还要加上语句,若r变大时退出循环,以免进入死循环。<br>v2等于v1时,得到的相遇时间很大,这是因为ξ尽管是极小量,但不等于0,dt也不能取得足够小,这要受电脑计数的精确度和运行速度的影响,但很大的时间值可以认为无穷大,也就是它们不可能相遇。<br><br>