实验一 面向微分方程的数值积分法仿真.docx

实验一 面向微分方程的数值积分法仿真.docx

ID:48597992

大小:131.65 KB

页数:20页

时间:2020-02-26

实验一  面向微分方程的数值积分法仿真.docx_第1页
实验一  面向微分方程的数值积分法仿真.docx_第2页
实验一  面向微分方程的数值积分法仿真.docx_第3页
实验一  面向微分方程的数值积分法仿真.docx_第4页
实验一  面向微分方程的数值积分法仿真.docx_第5页
资源描述:

《实验一 面向微分方程的数值积分法仿真.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验一面向微分方程的数值积分法仿真一、实验目的1.掌握数值积分法的基本概念、原理及应用;2.用龙格-库塔法解算微分方程,增加编写仿真程序的能力;3.分析数值积分算法的计算步长与计算精度、速度、稳定性的关系;4.对数值算法中的“病态问题”进行研究。二、实验内容1、已知系统微分方程及初值条件取步长,试分别用欧拉方程法和RK4法求时的值,并将求得的值与解析解比较(将三个解绘于同一坐标中,且用数值进行比较),说明造成差异的原因。(①编程完成;②选用MATLABode函数完成。)程序代码如下:t0=0;tf=2;h=0.1;y1=1;y2

2、=1;y3=1;t1=0;t2=0;t3=0n=round(tf-t0)/h;fori=1:ny1(i+1)=y1(i)+h*(2*h+y1(i));t1=[t1,t1(i)+h];endfori=1:nk1=y2(i)+t2(i);k2=y2(i)+h*k1/2+t2(i)+h/2;k3=y2(i)+h*k2/2+t2(i)+h/2;k4=y2(i)+h*k3+t2(i)+h;y2(i+1)=y2(i)+h*(k1+2*k2+2*k3+k4)/6;t2=[t2,t2(i)+h];endfori=1:ny3(i+1)=2*exp

3、(t3(i))-t3(i)-1;t3=[t3,t3(i)+h];endplot(t1,y1,'r',t2,y2,'g',t3,y3,'k')实验结果如下;分析:红线为用欧拉法得到的结果,绿线为用四阶龙格—库塔法得到的结果,蓝线为根据解析方程得到的结果。其差异原因主要有两个:1、二者的方法不同,欧拉法是根据一阶微分方程计算得到的,龙格—库塔法是根据四阶微分方程得到的;2、由于步长取为0.1,所以得到的图像与解析解之间存在差异,若将步长取小,则得到的解将更靠近解析解。2、已知系统的传递函数为在单位阶跃输入下,系统响应的解析解为试分别

4、用欧拉方程法和RK4法对系统进行仿真(编程完成):1)比较两种数值积分解与解析解得逼近程度;(绘图)程序代码如下:num=[40.6];den=[1102722.06];[a,b,c,d]=tf2ss(num,den);a=[010;001;-22.06-27-10];b=[0;0;1];c=[40.600];X1=[0;0;0];t=0;Y1=0;X=0;u=1;Y2=0;Y3=0;X2=[0;0;0];x=0;h=0.1;t0=0;tf=2;t1=0;t2=0;t3=0;N=(tf-t0)/h;fori=1:Nk1=a*X1

5、+b;k2=b+a*(h*k1/2+X1);k3=b+a*(h*k2/2+X1);k4=b+a*(h*k3+X1);X1=X1+h*(k1+2*k2+2*k3+k4)/6;Y1=[Y1,c*X1];t1=[t1,t1(i)+h];endfori=1:Nx=X2(:,i)+h*(a*X2(:,i)+b*u);y=c*x;X2=[X2,x];Y2=[Y2,y];t2=[t2,t2(i)+h];endfori=1:Ny=1.84-4.95*i*exp(-1.88*i)-1.5*exp(-1.88*i)-0.34*exp(-6.24*i

6、);Y3=[Y3,y];t3=[t3,t3(i)+h];endplot(t1,Y1,'r',t2,Y2,'g',t3,Y3,'b')当h=0.01时的结果当h=0.01时的结果分析:这是我得到的结果,发现两个方法得到的结果与实际结果都有较大差距,当是龙格—库塔法更接近实际的结果。2)改变步长,分析步长对数值解精度的影响;改变步长后,发现只是两根仿真得到的曲线靠近了,但是与实际曲线仍然是差距很大,这是经过仔细的检查和讨论我觉得程序还是对的,不知道错在哪里了。3)不断加大步长,分析计算稳定性的变化。当取h=0.5时,得到的结果:加大

7、步长后结果得到的结果不稳定,不能够很好的对系统进行仿真,另外,由于系统步长选择偏大,根据解析解得到的结果也与实际值有了一定的差距,但是如果步长取得不一样又无法比较。3、求下图所示系统的阶跃响应的数值解。(,,,,)分析、对系统响应的影响。(①编程用RK4求解;②Simulink)程序代码如下:k=1;a=conv([100],conv([0.251],[0.251]))b=[2*kk]X0=[0000];V=1;n=4;T0=0;Tf=10;h=0.25;R=1;b=b/a(1);a=a/a(1);A=a(2:n+1);A=[r

8、ot90(rot90(eye(n-1,n)));-fliplr(A)];B=[zeros(1,n-1),1]';m1=length(b);C=[fliplr(b),zeros(1,n-m1)];Ab=A-B*C*V;X=X0';y=0;t=T0;N=round(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。