“渡江”是武汉城市的一张名片。193499日,武汉警备旅官兵与体育界人士联手,在武汉第一次举办横渡长江游泳竞赛活动,起点为武昌汉阳门码头,终点设在汉口三北码头,全程约5000米。有44人参加横渡,40人达到终点,张学良将军特意向冠军获得者赠送了一块银盾,上书“力挽狂澜”。

2001年,“武汉抢渡长江挑战赛”重现江城。2002年正式命名为“武汉国际抢渡长江挑战赛”,定于每年的51日进行。由于水情、水性的不可预测性,这种竞赛更富有挑战性和观赏性。

200251日,抢渡的起点设在武昌汉阳门码头,终点设在汉阳南岸咀,江面宽约 1160米。当日的平均水温16.8℃,江水的平均流速为1.89/秒。参赛的国内外选手共186人(其中专业人员将近一半),仅34人到达终点,第一名的成绩为148秒。除了气象条件外,大部分选手由于路线选择错误,被滚滚的江水冲到下游,而未能准确到达终点。

假设在竞渡区域两岸为平行直线, 两岸的垂直距离为 1160 , 从武昌汉阳门的正对岸到汉阳南岸咀的距离为 1000见图1。下面借助数学模型解决如下问题:

1)假定在竞渡过程中游泳者的速度大小和方向不变,且竞渡区域每点的流速均为 1.89 /秒。如果2002年第一名是按最优路径游泳的,试说明她是沿着怎样的路线前进的,求她游泳速度的大小和方向。

2)在(1)的假设前提下,试为一个速度能保持在1.5/秒的人选择最佳的游泳方向,并估计他的成绩。

3)在(1)的假设下,如果游泳者始终以和岸边垂直的方向游, ()们能否到达终点?并说明为什么 1934年和2002 年能游到终点的人数的百分比有如此大的差别;给出能够成功到达终点的选手的条件。

4)流速沿离岸边距离的分布为 (设从武昌汉阳门垂直向上为 y轴正向)

                                  (1)

游泳者的速度大小(1.5/秒)仍全程保持不变,试为他选择游泳方向和路线,估计他的成绩。

5)流速沿离岸距离为连续分布

模型假

对于第一问,建立流水坐标系,将坐标系放在流动的水上,以起游点所在的位置O为坐标原点(见图2)。在此坐标系下,水的流速为零,人游泳的速度就是流动坐标系下的合速度,设为

    设到达终点的最短时间为,为此坐标系下相应的最优游泳路径之一。在地球坐标系中人游到终点相当于在流水坐标系中终点以水速水平向左运动,游泳者以速度运动与相遇。

对于人的游泳速度为常数的情况,我们先给出如下引理:

引理  为常数,水速也为常数,则最优路径就是线段,且偏角的夹角)不变。(George  Leitmann,The Calculus  of Variations  and Optimal Control,Plenum Press. 1981 pp.130-135.

[简化证明,不严谨为直线,则在地球坐标系中,人实际游泳的轨迹可以看作两个匀速直线运动的合成,因此它是从起点O到终点A的连线,引理成立。

不是直线,那么||>||,因此||+||>||+||,那么人在流水坐标系中按照的折线路径游泳,相当于人与终点在线段上相遇于点的问题,由于都是常数,路程越短,所用的时间越少,所以按照的折线路径游泳时,用时最少,也即人游泳的偏角不变。

对于(1),根据引理,在水速恒定的情况下,人的游泳最优路径为。在流水坐标系下,人的最优游泳路径为直线。当时,据此算出人的游泳速度与偏角

           

   对于(2),根据引理, 如果人的游泳速度=1.5)保持不变,则有

设人的最短游泳时间为,偏角为,那么在流水坐标系下,人的游泳距离为              

,

根据余弦定理得

              2

解(2)式得,考虑的实际意义,

910.4(s)                           

对于第(3),如果可达终点按路径前进,当游泳的偏角给定,流水速度一定,要使问题有解,即已知两边及其中的一边的对角的速度三角形要有解,因此必须

                3

其几何意义为:以速度向量的终点为圆心,为半径作半圆,与半圆上任意一点的连线为可能的合速度方向,当小于的距离时,合速度方向一定指向终点的下游,游泳者无法到达终点。

反之,当为半径的半圆与有唯一交点时,合速度方向就是最优的游泳方向。

为半径的半圆与有两个交点时,合速度大的方向就是最优速度(见图3所示)。

对于(4),由对称性知,只要找到起点中点的最优路径即可。由引理1知道,由于点两侧江水流速虽然不同,但均为常数,因此最优路径为直线,唯一未知的是点位置(见图4

 

*可以沿直线取不同的位置按第一问的方法计算两段所需要时求和,再比较大小,找到近似最优解,然后再进一步缩小步长寻优,最终找到更好的近似最优解。

也可以用解析几何方法求出*所满足的代数方程,通过求方程的根,找

出问题的答案(请读者自己给出解析表达式)。

建立直角坐标系如下,令C的坐标为,由对称性知道,B的坐标为,记游泳者从O点游到C点及从C点游到B点的时间分别为

偏角分别为

                                    (4)

解得

                                   5

                       6

解得

                      7

到达终点的总时间为

                                                           8

问题变为在(5)、(7)条件下,求(8)的极小值。

function f=objf(x)

f=2*(x(1)+x(2));

function [c,ceq]=confqd(x)

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];   

x0=[50,50,50];

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

    

设游泳者的位置为()游泳偏角为

                                                                                                        9

初值条件  。我们的任务是,根据已知的,求 的最小值及。利用对称性知,最优路径过,由引理知,且当时,为常数。

对于,(9)等价于下列优化问题

                                                                                           10

作拉格朗日函数

                           

                          

得优化问题的欧拉方程

                         

                       

因此

                                                                                             11

由(11)知道,如果都是常数,则也是常数,该结论与引理的结论一致。

对于形如(5)的函数,有

                      

最优路径过点(500580),且关于此点对称。因此只需要求出的时间即可。下面分两步来求,先求段时间,再求段时间

                                                                                                            

  

                                                              12

因为时,时都是常数,所以常数。设最优路径经过点(),则

                                                                                     13

下面给出了不同值下的的求法。

13)式表明,给定,就确定了 及最优路径上满足的点的坐标,或者给定值,也就可以确定

                                                                                                 14

                                                                                                              (15)

                                                                                                            (16)

        对于给定的 ,先利用(15)和(16)式求出 ,再利用(13)求出 ,求出 后,利用(14)式求,据此给出值。下面是搜寻最优解的过程。

                 

其中,是游泳者离岸200米时的游泳时间记分别是入水偏角及离岸200米处的游泳偏角。

代入得

    

      

 

因此

         

本问题可以转化为下列二元函数求条件极值问题

                                                     17

       

                                                                                   18

                                                                                      19

联立(18)与(19)式得到

 

fun='[sec(x(2))-sec(x(1))+1.52,150*(sec(x(1))*tan(x(1))-2*sec(x(1))*tan(x(2))+sec(x(2))*tan(x(2))-log((sec(x(2))+tan(x(2)))/(sec(x(1))+tan(x(1)))))/2.28-500+380*(cot(x(2))+1.52*csc(x(2)))]';

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)  

T =

  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))  

function dx=funqd1(t,x)

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];  

x4=1000-X;t4=1160-T;  

plot(X,T,x3,t3,x4,t4)