8.27课上数学建模案例分析
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 (1 x) y" 1 y'2 (3) 5 初值条件为: y(0) 0 y' (0) 0
其解即为导弹的运行轨迹:
5 5 5 5 5 y (1 x) (1 x) 8 12 24
4
6
5 5 ) 处时被导弹击中. 当 x 1时 y ,即当乙舰航行到点 (1, 24 24 y 5 被击中时间为: t . 若 v0=1, 则在 t=0.21 处被击中. v0 24v0
即
bx dx , dt a 2 2 x y dy by , dt x2 y 2
x(0) 0, y(0) h.
(1.1)
又由初始条件有
(1.2)
(1.1)(1.2) 就是所求问题的一个微分方程模型。
模型求解
设时间步长为Δt, 则
P ( x , y ) (0, h), v (a,b), 0 0 0 0 bxi 1 byi 1 vi 1 (a 2 2 , 2 2 ), xi 1 yi 1 xi 1 yi 1 P ( x , y ) P v t , i 1,2, i i i i 1 i 1
(2) w=5时 建立M文件eq4.m如下: function dy=eq4(t,y) dy=zeros(2,1); dy(1)=5*(10+20*cos(t)-y(1))/sqrt ((10+20*cos(t)-y(1))^2+(20+15*sin(t)-y(2))^2); dy(2)=5*(20+15*sin(t)-y(2))/sqrt ((10+20*cos(t)- y(1))^2+(20+15*sin(t)-y(2))^2);
x0=0,xf=0.9999 [x,y]=ode15s('eq1',[x0 xf],[0 0]); plot(x,y(:,1),'b') hold on y=0:0.01:2;plot(1,y,'*r')
y '1 y2 y ' 1 1 y 2 /(1 x) 1 2 5
所求得的鸭子经过的路 线如右图所示。
慢跑者与狗
一个慢跑者在平面上沿椭圆以恒定的速率 v=1跑步,设椭圆方程为: x=10+20cos t, y=20+5sin t. 突然有一只狗攻击他. 这只狗从 原点出发,以恒定速度 跑向慢跑者,狗的运动方向 始终指向慢跑者.分别求出 =20, =5时狗的运动 轨迹.
轨迹见下图
解法二(数值解法) 令y1=y, y2=y1’,将方程(3)化为一阶微分方程组.
1 (1 x) y ' ' 1 y2 5
1.建立M文件eq1.m function dy=eq1(x,y) dy=zeros(2,1); dy(1)=y(2); dy(2)=1/5*sqrt(1+y(1)^2)/(1-x);
dx dt dy dt
X x , Y y
0
(2)
消去参数 ,可得狗的运动轨迹的参数方程
w dx (10 20cos t x) dt (10 20cos t x)2 (20 15sin t y)2 w dy (20 15sin t y) dt (10 20cos t x)2 (20 15sin t y)2 x(0) 0, y(0) 0
数学建模案例
微分方程模型
实验目的
1.学会用MATLAB分析求解微分方程模型.
实验内容
1. 数学建模实例. 鸭子过河问题 慢跑者与狗的问题 导弹追踪问题
2.实验作业.
• 为什么要建立模型来解决 问题呢?
• 我认为可用“曹冲称象”的例子来说明,如图3。 变
大 象
• •
石 头
小称
大象重量
图 3
5. 结果见图1
图1
图2
导弹大致在(1,0.2)处击中乙舰,与前面的结论一致.
2. 模型求解
(1) w=20时,建立M文件eq3.m如下: function dy=eq3(t,y) dy=zeros(2,1); dy(1)=20*(10+20*cos(t)-y(1))/sqrt ((10+20*cos(t)-y(1))^2+(20+15*sin(t)-y(2))^2); dy(2)=20*(20+15*sin(t)-y(2))/sqrt ((10+20*cos(t)-y(1))^2+(20+15*sin(t)-y(2))^2); 取t0=0,tf=10,建立主程序chase3.m如下: t0=0;tf=10; [t,y]=ode45('eq3',[t0 tf],[0 0]); T=0:0.1:2*pi; X=10+20*cos(T); Y=20+15*sin(T); To MATLAB(chase3) plot(X,Y,'-') hold on plot(y(:,1),y(:,2),'*') 在chase3.m中,不断修改tf的值,分别取tf=5, 2.5, 3.5,…,至3.15时, 狗刚好追上慢跑者.
2. 取x0=0,xf=0.9999,建立主程序ff6.m如下:
To MATLAB(ff6)
结论: 导弹大致在(1,0.2)处击中乙舰.
解法三(建立参数方程求数值解)
设时刻t乙舰的坐标为(X(t),Y(t)),导弹的坐标为(x(t),y(t)).
dx 2 dy 2 2 1.设导弹速度恒为 w ,则 ( ) ( ) w dt dt
返 回
导弹追踪问题 设位于坐标原点的甲舰向位于x轴上点A(1, 0)处的乙舰发射导弹,导弹头始 终对准乙舰.如果乙舰以最大的速度v0(常数)沿平行于y轴的直线行驶,导弹的 速度是5v0,求导弹运行的曲线方程.乙舰行驶多远时,导弹将它击中?
解法一(解析法)
假设 t 时刻导弹的位置为 P(x(t), y(t)),乙舰位于 Q(1, v0 t ) .
•
石头重量
思想方法的体现
奥妙之一:直接去研究、解决问题(图中沿虚线 路径),往往很困难,有许多局限性。建立模型 是变“直接”为“间接”,能克服局限性,富于 智慧。例如没有大秤不能直接称大象,将大象变 成石头,对于大象重量而言,这些石头就是大象 的模型,问题简化了,就可以用小秤来称大象了; 奥妙之二:是同一问题,模型可以多种,充满灵 活性,如大象“变成”木头也可以;
2.0120 3.5928 2.0188 3.0693 1.9891 2.5680
0.8413 1.0801 1.2957 1.4867 1.6513 1.7880 1.8949 1.9701
8.2016 7.6047 7.0107 6.4207 5.8362 5.2588 4.6908 4.1344
dx dt X x 即: , 0 dy Y y dt w dx ( X x) dt 2 2 ( X x) (Y y ) 消去λ 得: w dy (Y y ) 2 2 dt ( X x) (Y y )
奥妙之三:是建立模型解决问题如“大象”变 “石头”说明模型不是死板地“照像”,而是能 充分发挥人的能动性,如可以简化问题、突出重 点,又如可以猜想、创造等等。
示例1 鸭子过河
有只鸭子想游到河对岸的某个位置O,
如果它的方向始终朝着目标O。求这 只鸭子的游动曲线。
模型假设 1. 假设河的两岸为平行直线,河宽为h; 2. 鸭子游水的速率为b, 水流速率为a, 均为常数; 3. 初始时鸭子的位置为A;
取t0=0,tf=10,建立主程序chase4.m如下: t0=0;tf=10; [t,y]=ode45('eq4',[t0 tf],[0 0]); T=0:0.1:2*pi; X=10+20*cos(T); Y=20+15*sin(T); To MATLAB(chase4) plot(X,Y,'-') hold on plot(y(:,1),y(:,2),'*') 在chase3.m中,不断修改tf的值,分别取tf=20, 40, 80,…, 可以看出,狗永远追不上慢跑者.
(1)
2. 由于弹头始终对准乙舰,故导弹的速度平行于乙舰与导弹头位置的差向量,
(2)
(3)
3.因乙舰以速度v0沿直线x=1运动,设v0=1,则w=5,X=1,Y=t.
因此导弹运动轨迹的参数方程为:
5 dx (1 x) dt 2 2 (1 x) (t y ) dy 5 (t y ) 2 2 (1 x) (t y ) dt x(0) 0, y (0) 0 4坐标为(X(t),Y(t)),狗的坐标为(x(t),y(t)). 则 X=10+20cos t, Y=20+15sin t.
, 则( dx ) 2 ( dy ) 2 2 1.设狗的速度恒为
dt dt
(1)
2.由于狗的运动方向始终指向慢跑者,故狗的速度平行于慢跑者与狗的位 置的差向量,即
(1.3)
当yi<0时, 说明鸭子已经到达河对岸,应停止计算. 由(1.3)可以算出ti时刻鸭子的位置的近似值.
例如取a=1, b=2, h=10, Δt=0.3, 则求得结果为
i
1 2
xi
0
yi
10
i
xi
yi
3 4 5 6 7 8 9 10 11
12 0.3000 9.4000 13 0.5809 8.8003 14
由于导弹头始终对准乙舰,故此时直线 PQ 就是导弹的轨迹曲线弧 OP 在点 P 处的切线,
v0 t y y' 即有 1 x 即 v0t (1 x) y' y
(1)
又根据题意,弧 OP 的长度为 AQ 的 5 倍, 即
x
0
1 y '2 dx 5v0t
(2)
由(1),(2)消去t, 整理得模型:
15 16
17 18 19 20 21 22
1.9217 1.8160 1.6721 1.4913 1.2759 1.0300 0.7591 0.4702
2.0937 1.6516 1.2479 0.8891 0.5818 0.3329 0.1484 0.0333
计算(1.3)的Matlab代码
a=1;b=2;h=10;dt=0.3; i=1; p=[0,h]; while p(2)>0 i=i+1; v=[a-b.*p(1)./sqrt(p(1).^2+p(2).^2),-b.*p(2)./sqrt(p(1).^2+p(2).^2)]; p=p+v.*dt; hold on plot(p(1),p(2),'p') end p
4. 鸭子游动的方向始终指向O.
模型建立
取O为坐标原点, 河岸朝顺水方向 为x轴,y轴指向 对岸。
关键是如何求出P 点坐标(x,y)关于 时刻t的表达式.
t时刻鸭子本身的速度为
b b
PO | | PO
b x y
2 2
( x, y ),
河水速度为 a (a,0), 所以合速度为 bx by v a b (a , ), 2 2 2 2 x y x y
建立M文件eq2.m如下: function dy=eq2(t,y) dy=zeros(2,1); dy(1)=5*(1-y(1))/sqrt((1-y(1))^2+(t-y(2))^2); dy(2)=5*(t-y(2))/sqrt((1-y(1))^2+(t-y(2))^2);
取t0=0,tf=2,建立主程序chase2.m如下: [t,y]=ode45('eq2',[0 2],[0 0]); Y=0:0.01:2; plot(1,Y,'-'), hold on To MATLAB(chase2) plot(y(:,1),y(:,2),'*')