常微分方程地求解与定性分析报告实验报告材料文档格式.docx
《常微分方程地求解与定性分析报告实验报告材料文档格式.docx》由会员分享,可在线阅读,更多相关《常微分方程地求解与定性分析报告实验报告材料文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
1.求微分方程的解析解,并画出它们的图形。
y'
=y+2x,y(0)=1,0<
x<
1;
m=dsolve('
Dy=y+2*x'
'
y(0)=1'
x'
)
ezplot(m,[01])
m=
3*exp(x)-2*x–2
1.求微分方程的数值解,要求编写求解程序。
functiondy=vdp1000(t,y)
dy=zeros(2,1);
dy
(1)=y
(2);
dy
(2)=-y
(1)+0.1*y
(1)^3;
[T,Y]=ode15s('
vdp1000'
[010],[00]);
plot(T,Y(:
1),'
-'
3.Rossler微分方程组:
当固定参数b=2,c=4时,试讨论随参数a由小到大变化(如a∈(0,0.65))而方程解的变化情况,并且画出空间曲线图形,观察空间曲线是否形成混沌状?
functionr=rossler(t,x)
globala;
globalb;
globalc;
r=[-x
(2)-x(3);
x
(1)+a*x
(2);
b+x(3)*(x
(1)-c)];
b=2;
c=4;
t0=[0,200];
fora=0:
0.1:
0.6
[t,x]=ode45('
rossler'
t0,[0,0,0]);
subplot(1,2,1);
plot(t,x(:
r'
t,x(:
2),'
g'
3),'
b'
);
title('
x(红色),y(绿色),z(蓝色)随t的变化情况'
xlabel('
t'
subplot(1,2,2);
plot3(x(:
1),x(:
2),x(:
3))
相图'
ylabel('
y'
zlabel('
z'
pause
end
结果显示:
a=0:
a=0.1:
a=0.2:
a=0.3:
a=0.4:
a=0.5:
结果分析:
从图像可以看出,当a=0时,微分方程的解(x,y,z)收敛与(0,0.5,0.5);
当a=0.1时,(x,y,z)仍收敛与(0,0.5,0.5),只是收敛速度减慢;
当a=0.2时,(x,y,z)已发散,周期性变化;
随着a的增大,(x,y,z)接近其极限环的速度加快,空间曲线成混沌状。
4.炮弹发射角的确定
炮弹发射视为斜抛运动,已知初始速度为200m/s,若要击中水平距离360m、在垂直距离160m的目标,当忽略空气阻力时,发射角应为多大?
此时炮弹的运行轨迹如何?
要求:
(1)建立在忽略空气阻力情况下的描述炮弹发射轨迹的数学模型;
(2)用Matlab软件求解方程和微分方程;
(3)结合实际对解的合理性进行分析。
进一步思考:
如果要考虑水平方向的阻力,且设阻力与(水平方向)速度成正比,系数为0.1(1/s),结果又如何?
解:
(1)忽略空气阻力时,设发射角为a,炮弹的飞行时间为t
水平方向:
Vx=V0*cosa=200*cos(a)
竖直方向:
Vy=V0*sina=200*sin(a)
得到:
x=Vx*t=200*cos(a)*t=360
y=Vy*t-1/2*g*t^2=200*sin(a)*t-1/2*9.8*t^2=160
得到炮弹的路程为Y=360*tan(a)-4.9*(360/200/cos(a)).^2-160
编程为:
functionY=fun2(a)
Y=360*tan(a)-4.9*(360/200/cos(a)).^2-160;
functionY=fun3(a0,a1,n,tol)
a
(1)=a0;
a
(2)=a1;
b=1;
i=2;
while(abs(b)>
eps*a(i))
a(i+1)=a(i)-fun2(a(i))*(a(i)-a(i-1))/(fun2(a(i))-fun2(a(i-1)));
b=a(i+1)-a(i);
i=i+1;
if(i>
n)error('
nisfull'
disp(i-2);
Y=a(i);
fun3(0.5,1,100,1e-6)
结果为:
ans=
0.4633
(3)结果合理,符合实际
建立模型如下:
=-0.1dx/dt
代入初始条件可以得出x=-10*200cosθ*exp(-0.1t)+10*200cosθ
建立myfun6函数如下:
functionY=fun6(a)
Y=200*sin(a)*(-10*log(1-360/2000/cos(a)))-4.9*((-10*log(1-360/2000/cos(a))).^2)-160
建立fun7函数如下:
functionY=fun7(a0,a1,n,tol)
a(i+1)=a(i)-fun6(a(i))*(a(i)-a(i-1))/(fun6(a(i))-fun6(a(i-1)));
输入:
>
fun7(0.5,1,100,1e-6)
结果:
0.4297
三、结论
1、实验结果
编程及实验结果分析如上
2、分析讨论
1 通过此次实验,学习了微分方程求解的方法,并学会了建立微分方程的数学模型,使用求解微分方程的基本指令;
2 实验题目中的第三四道题,综合性较强,需要考虑多方面的程序,感觉较难,通过查找相关例题以及和同学讨论得以解决;
3 微分方程的求解问题较常见,因为许多的微分方程人为解起来较难,而使用matlab可以很轻松得解答。
因此掌握使用matlab求解微分方程很重要,在今后的学习中要多练习,熟练使用matlab软件。