|
抢渡长江
2001年,“武汉抢渡长江挑战赛”重现江城。2002年正式命名为“武汉国际抢渡长江挑战赛”,定于每年的5月1日进行。由于水情、水性的不可预测性,这种竞赛更富有挑战性和观赏性。 2002年5月1日,抢渡的起点设在武昌汉阳门码头,终点设在汉阳南岸咀,江面宽约 1160米。当日的平均水温16.8℃,江水的平均流速为1.89米/秒。参赛的国内外选手共186人(其中专业人员将近一半),仅34人到达终点,第一名的成绩为14分8秒。除了气象条件外,大部分选手由于路线选择错误,被滚滚的江水冲到下游,而未能准确到达终点。 假设在竞渡区域两岸为平行直线, 两岸的垂直距离为 1160 米, 从武昌汉阳门的正对岸到汉阳南岸咀的距离为 1000米,见图1。下面借助数学模型解决如下问题: (1)假定在竞渡过程中游泳者的速度大小和方向不变,且竞渡区域每点的流速均为 1.89 米/秒。如果2002年第一名是按最优路径游泳的,试说明她是沿着怎样的路线前进的,求她游泳速度的大小和方向。 (2)在(1)的假设前提下,试为一个速度能保持在1.5米/秒的人选择最佳的游泳方向,并估计他的成绩。 (3)在(1)的假设下,如果游泳者始终以和岸边垂直的方向游, 他(她)们能否到达终点?并说明为什么 1934年和2002 年能游到终点的人数的百分比有如此大的差别;给出能够成功到达终点的选手的条件。 (4)流速沿离岸边距离的分布为 (设从武昌汉阳门垂直向上为 y轴正向): 游泳者的速度大小(1.5米/秒)仍全程保持不变,试为他选择游泳方向和路线,估计他的成绩。 (5)流速沿离岸距离为连续分布
对于第一问,建立流水坐标系,将坐标系放在流动的水上,以起游点所在的位置O为坐标原点(见图2)。在此坐标系下,水的流速为零,人游泳的速度就是流动坐标系下的合速度,设为 设到达终点 对于人的游泳速度 引理 若 [简化证明,不严谨] 若 对于(1),根据引理,在水速 对于(2),根据引理, 如果人的游泳速度 设人的最短游泳时间为
根据余弦定理得 解(2)式得
对于第(3),如果可达终点按 其几何意义为:以速度向量 反之,当 当 对于(4),由对称性知,只要找到起点
也可以用解析几何方法求出 出问题的答案(请读者自己给出解析表达式)。 建立直角坐标系如下,令C的坐标为 偏角分别为 解得
解得 到达终点的总时间为 问题变为在(5)、(7)条件下,求(8)的极小值。 function f=objf(x) f=2*(x(1)+x(2)); c=[x(3)-200]; ceq=[(1.47^2-1.5^2)*x(1)^2-2*1.47*x(3)*x(1)+40000+x(3)^2; (2.11^2-1.5^2)*x(2)^2-2*2.11*(500-x(3))*x(2)+380^2+(500-x(3))^2]; options=optimset('Largescale','off'); [x,fval]=fmincon(@objf,x0,[ ],[ ],[ ],[ ],[ ],[ ],@confqd,options) Optimization terminated successfully: First-order optimality measure less than options.TolFun and maximum constraint violation is less than options.TolCon No active inequalities x = 164.9264 287.0850 96.8341 fval = 904.0228 经计算得 对于(5) 设游泳者 则 初值条件 对于 作拉格朗日函数 记 得优化问题的欧拉方程 即 因此 由(11)知道,如果 对于形如(5)的函数,有 最优路径过点(500,580),且关于此点对称。因此只需要求出 记
因为 下面给出了不同 (13)式表明,给定
对于给定的 其中,
代入得 又 因此 本问题可以转化为下列二元函数求条件极值问题 联立(18)与(19)式得到
x0=[2.62,2.]; [xy,f,exit]=fsolve(fun,x0) Optimization terminated successfully: First-order optimality is less than options.TolFun. xy = 2.6296 1.9551 f = 1.0e-009 * -0.0007 0.3062 exit = 1 T=2*(380/(1.5*sin(1.9551))+200*(tan(2.6296)-tan(1.9551))/2.28) 881.7502 以上计算显示,游完全程所需时间为881.75秒。下面画出了最优游泳路径。 function dx=funqd(t,x) dx=[2.25/(1.5*sec(2.6296)-2.28*x(2)/200)+2.28*x(2)/200;1.5*sqrt(2.25*tan(2.6296)^2+(2.28*x(2)/200)^2-3*2.28*x(2)*sec(2.6296)/200)/(2.28*x(2)/200-1.5*sec(2.6296))]; [T,X]=ode45('funqd',[0,273.3],[0;0]); [T,X] plot(X(:,1),X(:,2)) dx=-(2.25-(2.28*t/200)^2+1.5*2.28*t*sec(2.6296)/200)/(1.5*sqrt(2.25*tan(2.6292)^2+(2.28*t/200)^2-3*2.28*t*sec(2.6292)/200)); [T,X]=ode45('funqd1',[0,200],0); [T,X]; x3=[30.65,1000-30.65];t3=[200,960];
|