Matlab建模—狗追人、地中海鲨鱼问题

    技术2025-02-06  23

    数学建模期末复习,撰写博客做总结之用,主要侧重于算例的模型建立与部分代码的实现,其中不足之处望读者多多指正。

    文章目录

    狗追人问题介绍模型建立matlab求解 地中海鲨鱼问题介绍模型建立matlab求解

    狗追人

    问题介绍

     一个慢跑者在平面上沿椭圆以恒定的速率v=1跑步,设椭圆方程为: x=10+20cos t, y=20+5sin t. 突然有一只狗攻击他. 这只狗从原点出发,以恒定速率w跑向慢跑者,狗的运动方向始终指向慢跑者.分别求出w=20,w=5时狗的运动轨迹.

    模型建立

    假设t时刻慢跑者的位置坐标为(X(t),Y(t))则有X=10+20cos t, Y=20+15sin t:,狗的坐标为(x(t),y(t))(从原点出发); 根据题意:狗速是人速的w倍;狗的速度向量与人的位置向量平行;由此可建立得到关于狗的参数参数方程: { d x d t = 5 ( 1 − x ) 2 + ( t − y ) 2 ( 1 − x ) d y d t = 5 ( 1 − x ) 2 + ( t − y ) 2 ( t − y ) x ( 0 ) = 0 , y ( 0 ) = 0 \left\{\begin{array}{l} \frac{\mathrm{d} x}{\mathrm{d} t}=\frac{5}{\sqrt{(1-x)^{2}+(t-y)^{2}}}(1-x) \\ \frac{\mathrm{d} y}{\mathrm{d} t}=\frac{5}{\sqrt{(1-x)^{2}+(t-y)^{2}}}(t-y) \\ x(0)=0, y(0)=0 \end{array}\right. dtdx=(1x)2+(ty)2 5(1x)dtdy=(1x)2+(ty)2 5(ty)x(0)=0,y(0)=0

    matlab求解

    狗速w取20时: %定义参数方程的函数 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); end %调用 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); plot(X,Y,'-') hold on plot(y(:,1),y(:,2),'*')

    利用二分法思想调节参数tf=10、5、2.5、3最终得到狗大约在3秒出将人追到。

    w取5时; 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); end %狗追人问题 t0=0;tf=100; [t,y]=ode45('eq4',[t0 tf],[0 0]); T=0:0.1:2*pi; X=10+20*cos(T); Y=20+15*sin(T); plot(X,Y,'-') hold on plot(y(:,1),y(:,2),'*')

    分别取tf为10;100易得,这时狗无法追到人。

    地中海鲨鱼

    问题介绍

     意大利生物学家Ancona曾致力于鱼类种群相互制约关系的研究,从第一次世界大战期间,地中海各港口几种鱼类捕获量百分比的资料中,他发现鲨鱼等的比例有明显增加(见下表),而供其捕食的食用鱼的百分比却明显下降.显然战争使捕鱼量下降,从而食用鱼增加,鲨鱼等也随之增加,但为何鲨鱼的比例大幅增加呢? 这里建立了一个食饵—捕食系统的数学模型解释这个问题。

    模型建立

    符号假设 x 1 ( t ) {x_1}(t) x1(t):食饵在t时刻的数量; x 2 ( t ) {x_2}(t) x2(t):捕食者在t时刻的数量; r 1 {r_1} r1:食饵独立生存时的增长率; r 2 {r_2} r2:捕食者独自存在时的死亡率; λ 1 {\lambda _1} λ1:捕食者掠取食饵的能力; λ 2 {\lambda _2} λ2:食饵对捕食者的供养能力. e:捕获能力系数

    模型假设 (1)由于捕食者的存在使食饵增长率降低,假设降低的程度与捕食者数量成正比; (2)捕食者由于食饵为它提供食物, 其死亡率降低或增长,假定增长的程度与食饵数量成正比.。

    模型(不考虑人工捕获) { d x 1 d t = x 1 ( r 1 − λ 1 x 2 ) d x 2 d t = x 2 ( − r 2 + λ 2 x 1 ) \left\{\begin{array}{l} \frac{\mathrm{d} x_{1}}{\mathrm{d} t}=x_{1}\left(r_{1}-\lambda_{1} x_{2}\right) \\ \frac{\mathrm{d} x_{2}}{\mathrm{d} t}=x_{2}\left(-r_{2}+\lambda_{2} x_{1}\right) \end{array}\right. {dtdx1=x1(r1λ1x2)dtdx2=x2(r2+λ2x1)

    模型(考虑人工捕获)  设表示捕获能力的系数为e,相当于食饵的自然增长率由r1 降为r1-e,捕食者的死亡率由r2 增为 r2+e原数学模型变为: { d x 1 d t = x 1 [ ( r 1 − e ) − λ 1 x 2 ] d x 2 d t = x 2 [ − ( r 2 + e ) + λ 2 x 1 ] \left\{\begin{array}{l} \frac{\mathrm{d} x_{1}}{\mathrm{d} t}=x_{1}\left[\left(r_{1}-e\right)-\lambda_{1} x_{2}\right] \\ \frac{\mathrm{d} x_{2}}{\mathrm{d} t}=x_{2}\left[-\left(r_{2}+e\right)+\lambda_{2} x_{1}\right] \end{array}\right. {dtdx1=x1[(r1e)λ1x2]dtdx2=x2[(r2+e)+λ2x1]

    matlab求解

    这里的matlab求解程序直接取用课件ppt的所用的参数,选用过程做出省略。 function dx=shier(t,x) dx=zeros(2,1); dx(1)=x(1)*(1-0.1*x(2)); dx(2)=x(2)*(-0.5+0.02*x(1)); end [t,x]=ode45('shier',[0 15],[25 2]); plot(t,x(:,1),'-',t,x(:,2),'*') plot(x(:,1),x(:,2)) 结果  分别做出模型的食饵与鲨鱼的时间序列上的关系与相位关系,可以看出两者呈现出周期变化的趋势。
    Processed: 0.009, SQL: 9