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

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

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

实验一 面向微分方程的数值积分法仿真 一、实验目的 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=0 n=round(tf-t0)/h; for i=1:n y1(i+1)=y1(i)+h*(2*h+y1(i)); t1=[t1,t1(i)+h]; end for 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]; end for i=1:n y3(i+1)=2*exp(t3(i))-t3(i)-1; t3=[t3,t3(i)+h]; end plot(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]; end for 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]; end for 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]; end plot(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]))

文档评论(0)

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

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

1亿VIP精品文档

相关文档