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

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

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验1 面向微分方程的数值积分法仿真

实验一面向微分方程的数值积分法仿真一、实验目的1.掌握数值积分法的基本概念、原理及应用;2.用龙格-库塔法解算微分方程,增加编写仿真程序的能力;3.分析数值积分算法的计算步长与计算精度、速度、稳定性的关系;4. 对数值算法中的“病态问题”进行研究。二、实验内容1、已知系统微分方程及初值条件取步长,试分别用欧拉方程法和RK4法求时的值,并将求得的值与解析解比较(将三个解绘于同一坐标中,且用数值进行比较),说明造成差异的原因。(①编程完成;②选用MATLAB ode函数完成。)程序代码如下:t0=0;tf=2;h=0.1;y1=1;y2=1;y3=1;t1=0;t2=0;t3=0n=round(tf-t0)/h;for i=1:n y1(i+1)=y1(i)+h*(2*h+y1(i)); t1=[t1,t1(i)+h];endfor i=1:n k1=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];endfor i=1:n y3(i+1)=2*exp(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、已知系统的传递函数为在单位阶跃输入下,系统响应的解析解为试分别用欧拉方程法和RK4法对系统进行仿真(编程完成):1)比较两种数值积分解与解析解得逼近程度;(绘图)程序代码如下:num=[40.6];den=[1 10 27 22.06];[a,b,c,d]=tf2ss(num,den);a=[0 1 0; 0 0 1; -22.06 -27 -10];b=[0;0;1];c=[40.6 0 0];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;for i=1:N k1=a*X1+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];endfor i=1:N x=X2(:,i)+h*(a*X2(:,i)+b*u); y=c*x; X2=[X2,x]; Y2=[Y2,y]; t2=[t2,t2(i)+h];endfor i=1:N y=1.84-4.95*i*exp(-1.88*i)-1.5*exp(-1.88*i)-0.34*exp(-6.24*i); 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时,得到的结果:加大步长后结果得到的结果不稳定,不能够很好的对系统进行仿真,另外,由于系统步长选择偏大,根据解析解得到的结果也与实际值有了一定的差距,但是如果步长取得不一样又无法比较。3、求下图所示系统的阶跃响应的数值解。(,,,,)分析、对系统响应的影响。(①编程用RK4求解;②Simulink)程序代码如下:k=1;a=conv([1 0 0],conv([0.25 1],[0.25 1])) b=[2*k k]X0=[0 0 0 0]; 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=[rot90(

文档评论(0)

ldj215323 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档