数学建模期末复习,撰写博客做总结之用,主要侧重于算例的模型建立与部分代码的实现,其中不足之处望读者多多指正。
dsolve(‘方程1’,‘方程2’,…,‘方程n’,‘初始条件’,‘自变量’)
[t,x]=solver(’f’,ts,x0,options)
详细的使用说明可参考博文Matlab微分方程求解
模型建立:设t时刻导弹的位置为P(x(t),y(t)),乙舰位于Q(1, V 0 t V_0t V0t),由题(导弹头始终对准乙舰)可得,导弹在运动弧线p点处的切线 y ′ = v 0 t − y 1 − x y^{\prime}=\frac{v_{0} t-y}{1-x} y′=1−xv0t−y即 v 0 t = ( 1 − x ) y ′ + y ( 1 ) v_{0} t=(1-x) y^{\prime}+y(1) v0t=(1−x)y′+y(1)
又由题意(导弹速度是舰的5倍)故有: ∫ 0 x 1 + y ′ 2 d x = 5 v 0 t ( 2 ) \int_0^x {\sqrt {1 + y{'^2}} } {\rm{d}}x = 5{v_0}t (2) ∫0x1+y′2dx=5v0t(2)
有(1)(2)式可得微分微分方程为: ( 1 − x ) y ′ ′ = 1 5 1 + y ′ 2 ( 3 ) (1-x) y^{\prime \prime}=\frac{1}{5} \sqrt{1+y^{\prime 2}}(3) (1−x)y′′=511+y′2(3)
初值方程为: y ( 0 ) = 0 y(0) = 0 y(0)=0, y ′ ( 0 ) = 0 y'(0) = 0 y′(0)=0,利用Matlab求解可得: y = − 5 8 ( 1 − x ) 4 5 + 5 12 ( 1 − x ) 6 5 + 5 24 y = - \frac{5}{8}{(1 - x)^{\frac{4}{5}}} + \frac{5}{{12}}{(1 - x)^{\frac{6}{5}}} + \frac{5}{{24}} y=−85(1−x)54+125(1−x)56+245
将上述方程化为一阶方程,不妨设 y 1 = y , y 2 = y ′ y_1=y,y_2=y' y1=y,y2=y′,代入(3)中得到 { y 1 ′ = y 2 y 2 ′ = 1 5 1 + y 1 2 / ( 1 − x ) \left\{\begin{array}{l}y_{1}^{\prime}=y_{2} \\ y_{2}^{\prime}=\frac{1}{5} \sqrt{1+y_{1}^{2}} /(1-x)\end{array}\right. {y1′=y2y2′=511+y12/(1−x)
利用Matlab求解:
%定义函数
function dy=eq1(x,y)
dy=zeros(2,1);
dy(1)=y(2);
dy(2)=1/5*sqrt(1+y(1)^2)/(1-x);
end
调用
x0=0;
xf=0.9999;
[x,y]=ode15s('eq1',[x0 xf],[0 0]);
plot(x,y(:,1),'-')
hold on
y=0:0.01:2;
plot(1,y,'*')
上述结题假设不变,在此基础再将导弹的速度设为 w w w,则在P点处有: ( d x d t ) 2 + ( d y d t ) 2 = w 2 ( 1 ) {({{{\rm{d}}x} \over {{\rm{d}}t}})^2} + {({{{\rm{d}}y} \over {{\rm{d}}t}})^2} = {w^2}(1) (dtdx)2+(dtdy)2=w2(1)
同时,导弹始终对准乙舰,即导弹速度向量与乙舰的位置向量平行,故有:
( d x d t d y d t ) = λ ( X − x Y − y ) , λ > 0 ( 2 ) \left(\begin{array}{l} \frac{\mathrm{d} x}{\mathrm{d} t} \\ \frac{\mathrm{d} y}{\mathrm{d} t} \end{array}\right)=\lambda\left(\begin{array}{l} X-x \\ Y-y \end{array}\right), \quad \lambda>0(2) (dtdxdtdy)=λ(X−xY−y),λ>0(2)
将
{ d x d t = w ( X − x ) 2 + ( Y − y ) 2 ( X − x ) d y d t = w ( X − x ) 2 + ( Y − y ) 2 ( Y − y ) ( 3 ) \left\{\begin{array}{l} \frac{\mathrm{d} x}{\mathrm{d} t}=\frac{w}{\sqrt{(X-x)^{2}+(Y-y)^{2}}}(X-x) \\ \frac{\mathrm{d} y}{\mathrm{d} t}=\frac{w}{\sqrt{(X-x)^{2}+(Y-y)^{2}}}(Y-y) \end{array}\right.(3) ⎩⎨⎧dtdx=(X−x)2+(Y−y)2w(X−x)dtdy=(X−x)2+(Y−y)2w(Y−y)(3)
不妨假设乙舰速度为1,则w=5,X=1,Y=t,此时导弹的参数轨迹为:
{ 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=(1−x)2+(t−y)25(1−x)dtdy=(1−x)2+(t−y)25(t−y)x(0)=0,y(0)=0
matlab求解:
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);
end
%调用
[t,y]=ode45('eq2',[0 2],[0 0]);
Y=0:0.01:2;
plot(1,Y,'-')
hold on
plot(y(:,1),y(:,2),'*')
由图可得,导弹最终大致在(1,0.2)处命中目标。这里还以尝试用二分法的思想进一步得到更精确的答案,……tf=0.21是可得求解图像为:
据此可得更为精确的答案。