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