1、实验实验6 缉私艇追击走私船缉私艇追击走私船 1 实验目的实验目的(1)提高学生根据实际问题建立微分方程模型的能力;提高学生根据实际问题建立微分方程模型的能力;(2)学习求微分方程解析解与数值解的方法学习求微分方程解析解与数值解的方法;(3)学习简单的计算机仿真方法。学习简单的计算机仿真方法。海上边防缉私艇发现距海上边防缉私艇发现距c公公里处有一走私船正以匀速里处有一走私船正以匀速a沿直线行驶沿直线行驶,缉私艇立即以缉私艇立即以最大速度最大速度b追赶追赶,在雷达的引在雷达的引导下,缉私艇的方向始终导下,缉私艇的方向始终指向走私船。问指向走私船。问:缉私艇何缉私艇何时追赶上走私船时追赶上走私船?
2、并求出缉并求出缉私艇追赶的路线。私艇追赶的路线。 xyco2 实验问题实验问题3 建立模型建立模型 xcoy走私船初始位置在点走私船初始位置在点(0,0)(0,0),行驶方向为行驶方向为y y轴正方向轴正方向,缉私艇的初始位置在点缉私艇的初始位置在点( (c c,0),0),缉私艇行驶的历程为缉私艇行驶的历程为s s 。 在时刻在时刻t t:缉私艇到达点缉私艇到达点 ), 0(atR),(yxD走私船的位置到达点走私船的位置到达点0 xatydxdybdtds dxdtadxydx 22dxdsdsdtdxdt 0)(, 0)(1222cycydxdyrdxydxbar/ ), 0(atR),
3、(yxD)(xyy s211 dxdyb4 模型求解模型求解 0)(, 0)(1222cycydxdyrdxydxbar/ (1) 求解析解求解析解 0)(21cyxccxdxdyrr令令:, pdxdy .22dxdpdxyd 0)(12cpxdxrpdprcxpp 21rxcpp 21或或 0)(21cyxccxdxdyrr时时当当1 bar1)211111112rcrcxrcxrcyrr 把把 x = 0 代入代入, .12rcry 得得)()1(222abbcracrayt c=3千米千米,a=0.4千米千米/ /秒秒,分别取分别取b=0.6,0.8,1.2千米千米/ /秒时秒时,缉私
4、艇追赶路线的图形缉私艇追赶路线的图形.追赶时间分别为追赶时间分别为:t=9,5,2.8125(分钟分钟) 0)(21cyxccxdxdyrr当当0 x时时, y,缉私艇不可能追赶上走私船缉私艇不可能追赶上走私船。 111112211 rcrxcrcxrcyrr2)时时,当当1 bar3)时时,当当1 r cxcccxyln22122当0 x时时, y,缉私艇不可能追赶上走私船缉私艇不可能追赶上走私船。 (2)用用MATLAB软件求解析解软件求解析解 MATLAB软件软件5.3以上版本提供的解常微分方以上版本提供的解常微分方程解析解的指令是:程解析解的指令是:dsolve微分方程的书写格式规定微
5、分方程的书写格式规定:当当y是因变量时是因变量时,用用“Dny”表示表示y的的n阶导数阶导数。 完整的调用格式是完整的调用格式是: dsolve(eqn1,eqn2, .)其中其中eqn1,eqn2, .是输入宗量,包括三是输入宗量,包括三部分部分:微分方程、初始条件、指定变量,若不指定微分方程、初始条件、指定变量,若不指定变量,则默认小写字母变量,则默认小写字母t t为独立变量为独立变量。(2)用用MATLAB软件求解析解软件求解析解例例 求微分方程求微分方程xyxy 的通解的通解。 指令:指令:dsolve(Dy=x+x*y,x)Ans=-1+exp(1/2*x2)*C1.0)(21的的解
6、解析析解解求求微微分分方方程程 cyxccxdxdyrrdsolve(Dy=1/2*(x/c)r-(c/x)r),y(c)=0,x) ans=1/2*exp(-r*(log(c)-log(x)*cr*(1/c)r/(r+1)*x+ 1/2*exp(r*(log(c)-log(x)/(-1+r)*x- 1/2*c*(-(1/c)r*cr+cr*(1/c)r*r+r+1)/(r2-1) (3)用用MATLAB软件求数值解软件求数值解 0)(21cyxccxdxdyrrc=3,a=0.4,b=0.8, 5 . 0/ bar程序程序zx.mfunction y=zx(t,y) y=0.5*(t/3)0
7、.5-(3/t)0.5) 执行下面的命令执行下面的命令:ode23(zx,3,0.0005,0) 此时缉私艇的位置坐标是此时缉私艇的位置坐标是(0.0005,1.9601) 执行下面的命令执行下面的命令: ode45(zx,3,0.0005,0) 若想看图中若想看图中“o”点的坐标可执行下面的命令点的坐标可执行下面的命令:t,y=ode45(zx,3,0.0005,0)plot(t,y)此时缉私艇的位置坐标是此时缉私艇的位置坐标是(0.0005,1.9675 ) 若想看图中若想看图中“o”点的坐标可执行下面的命令点的坐标可执行下面的命令:t,y=ode23(zx,3,0.0005,0) plo
8、t(t,y)ode23(function,domain,initial condition)MATLAB软件仿真法软件仿真法 当建立动态系统的微分方程模型很困难时,当建立动态系统的微分方程模型很困难时,我们可以用计算机仿真法对系统进行分析研究。我们可以用计算机仿真法对系统进行分析研究。 所谓计算机仿真就是利用计算机对实际动态所谓计算机仿真就是利用计算机对实际动态系统的结构和行为进行编程、模拟和计算,以系统的结构和行为进行编程、模拟和计算,以此来预测系统的行为效果。此来预测系统的行为效果。), 0(1 katMATLAB软件仿真法软件仿真法xcoy走私船初始位在点走私船初始位在点(0,0)(0,
9、0),方向为,方向为y y轴正方向,轴正方向,缉私艇的初始位在点缉私艇的初始位在点( (c c,0),0),追赶方向可用方向余弦表示为追赶方向可用方向余弦表示为: 22)()0(0coskkkkkyatxx 22)()0(sinkkkkkkyatxyat ,1时时ttttkk ,cos1kkkktbxxx kkkktbyyy sin1 走私船的位置走私船的位置:), 0(kat:ktt 缉私艇的位置缉私艇的位置: ),(kkyx), 0(katok ),(kkyx缉私艇的位置缉私艇的位置: ).,(11 kkyx).,(11 kkyx则则时间步长时间步长仿真算法:仿真算法: 第二步:第二步:
10、计算动点缉私艇计算动点缉私艇D D在时刻在时刻 tttkk 1时的坐标时的坐标 221)(kkkkkkyatxxtbxx 221)(kkkkkkyatxyattbyy 计算走私船计算走私船R R在时刻在时刻 tttkk 1时的坐标时的坐标 ),(11 kkyx01 kx)(1ttaykk 第一步:第一步:设置时间步长设置时间步长, 速度速度a, ba, b及初始位置及初始位置t 0, 0,0 kycx), 0(1 kat), 0(katok ),(kkyx).,(11 kkyx第三步第三步:计算缉私艇与走私船这两个动点之间的距离:计算缉私艇与走私船这两个动点之间的距离: 211211)()(
11、kkkkkyyxxd 根据事先给定的距离,判断缉私艇是否已经追上根据事先给定的距离,判断缉私艇是否已经追上了走私船,从而判断退出循环还是让时间产生一个了走私船,从而判断退出循环还是让时间产生一个步长,返回到第二步继续进入下一次循环;步长,返回到第二步继续进入下一次循环; 第四步第四步:当从上述循环退出后,由点列:当从上述循环退出后,由点列 ),(11 kkyx和和),(11 kkyx可分别绘制成两条曲线可分别绘制成两条曲线即为缉私艇和走私船走过的轨迹曲线。即为缉私艇和走私船走过的轨迹曲线。 程序程序zhuixiantu.mnc=3; a=0.4/60; b=0.8/60;njstxb=;jst
12、yb=;zscxb=;zscyb=;nd=0.01;dt=2;t=0;njstx=c;jsty=0;zscx=0;zscy=0;nwhile (sqrt(jstx-zscx)2+(jsty-zscy)2)d)n t=t+dt;n jstx=jstx-b*dt*jstx/sqrt(jstx2+(a*t-jsty)2);n jstxb=jstxb,jstx;n jsty=jsty+b*dt*(a*t-jsty)/sqrt(jstx2+(a*t-jsty)2);n jstyb=jstyb,jsty;n zscy=a*t;n zscyb=zscyb,zscy;nendnzscxb=zeros(leng
13、th(zscyb);n plot(jstxb,jstyb,zscxb,zscyb,*) 取取c=3千米,千米,a=0.4千米千米/分钟,分钟,b=0.8千米千米/分钟,分钟,5 . 0/ bar历时历时:296秒秒,艇艇:(:(0.000041,1.97) 船船:(:(0,1.97) 显示船与艇行进路线程序显示船与艇行进路线程序c=3; a=0.4/60; b=0.8/60;d=0.01;dt=2;t=0;jstx=c;jsty=0;zscx=0;zscy=0;while (sqrt(jstx-zscx)2+(jsty-zscy)2)d) plot(jstx,jsty,rO,zscx,zscy
14、,y*) pause(0.00001) hold on t=t+dt; jstx=jstx-b*dt*jstx/sqrt(jstx2+(a*t-jsty)2); jsty=jsty+b*dt*(a*t-jsty)/sqrt(jstx2+(a*t-jsty)2); zscy=a*t; plot(jstx,jsty,rO,zscx,zscy,y*)end显示船与艇行进路线程序显示船与艇行进路线程序c=3; a=0.4/60; b=0.8/60;d=0.01;dt=2;t=0;jstx=c;jsty=0;zscx=0;zscy=0;while (sqrt(jstx-zscx)2+(jsty-zscy
15、)2)d) plot(jstx,jsty,rO,zscx,zscy,y*) pause(0.00001) hold on t=t+dt; jstx=jstx-b*dt*jstx/sqrt(jstx2+(a*t-jsty)2); jsty=jsty+b*dt*(a*t-jsty)/sqrt(jstx2+(a*t-jsty)2); zscy=a*t; plot(jstx,jsty,rO,zscx,zscy,y*)end结果分析结果分析计算机仿真法计算的结果依赖于时计算机仿真法计算的结果依赖于时间迭代步长的选取和程序终止条件间迭代步长的选取和程序终止条件的设定,修改终止条件的设定和减的设定,修改终止
16、条件的设定和减小时间迭代步长可以提高计算精度,小时间迭代步长可以提高计算精度,减小误差。减小误差。 1. 有一只猎狗在有一只猎狗在B B点位置发现了一只兔子在正东北方距离它点位置发现了一只兔子在正东北方距离它200200米的地方米的地方O O处,此时兔子开始以处,此时兔子开始以8 8米米/ /秒的速度向正西北方秒的速度向正西北方距离为距离为120120米的洞口米的洞口A A全速跑去,假设猎狗在追赶兔子的时候全速跑去,假设猎狗在追赶兔子的时候始终朝着兔子的方向全速奔跑,用计算机仿真法等多种方法始终朝着兔子的方向全速奔跑,用计算机仿真法等多种方法完成下面的实验:完成下面的实验: (1) (1) 问
17、猎狗能追上兔子的最小速度是多少?问猎狗能追上兔子的最小速度是多少? (2) (2) 在猎狗能追上兔子的情况下,猎狗跑过的路程是多少?在猎狗能追上兔子的情况下,猎狗跑过的路程是多少? (3) (3) 画出猎狗追赶兔子奔跑的曲线图。画出猎狗追赶兔子奔跑的曲线图。 (4) (4) 假设在追赶过程中,当猎狗与兔假设在追赶过程中,当猎狗与兔子之间的距离为子之间的距离为3030米时,兔子由于害怕米时,兔子由于害怕, , 奔跑的速度每秒减半,而猎狗却由于兴奔跑的速度每秒减半,而猎狗却由于兴奋奔跑的速度每秒增加奋奔跑的速度每秒增加0.10.1倍,在这种情倍,在这种情况下,再按前面的况下,再按前面的(1)(3)完成实验任务。完成实验任务。 实验任务实验任务ABNWO 2. 使用计算机仿真方法求解下述问题:在正方形的四个顶使用计算机仿真方法求解下述问题:在正方形的四个顶点上各有一人,如下图所示,在某一时刻,四人同时出发以匀点上各有一人,如下图所示,在某一时刻,四人同时出发以匀速按顺时针方向追赶下一个人速按顺时针方向追赶下一个人, ,如果他们始终保持对准目标如果他们始终保持对准目标, ,试试确定每个人的行进路线。确定每个人的行进路线。