实验一 数值积分算法的实验
一、实验目的
1. 初步了解如何用仿真方法来分析系统的动态性能。
2. 了解不同的数值积分算法与仿真计算的精度之间的关系。
3. 学会一种初步寻求合理仿真步长的方法。
二、实验内容
系统模型及其单位阶跃响应如习题2.6 所示。
1. 按实验目的、要求和已知条件,建立系统的Simulink 模型。
2. 按经验公式(2.43 )或(2.44 )初选仿真步长h 。
3. 选择RK4 法,运行仿真模型,适当调整步长和仿真起止时间,以得到比较理想的过渡过
程,观察纪录此过渡过程的数据。
4. 在相同的条件下,选择欧拉法,再让仿真模型运行,观察纪录过渡过程的数据。
解答:
1. 按实验目的、要求和已知条件,建立系统的Simulink 模型。
其中den(s) [110 27 22.06]
2. 按经验公式(2.43 )或(2.44 )初选仿真步长h 。
1 1
h 0.320 ~ 0.008
以求得Tmin 0.16s ,而h ~ Tmin ,可知, 时,
20 5
仿真结果精度在0.5% 内。初选仿真步长h 0.010 。
3. 选择 RK4 法,运行仿真模型,适当调整步长和仿真起止时间,以得到比较理想的过渡
过程,观察纪录此过渡过程的数据。
首先画出其解析解:
>> y1=1.84-4.95*tout.*exp(-1.88*tout)-1.5*exp(-1.88*tout)-0.34*exp(-6.24*tout);
>> plot(tout,y1,'b')
>> grid
仿真结果如下:
当h=0.5 时,
h=0.300 时:
h=0.100 时:
h=0.050 时:
h=0.010 时:
编程实现画图与求出最大误差与平均误差,方便分析:
function [maxe,ae] = text1(tout,y)
[A,B]=size(tout);
[M,N]=size(y);
if A > M
temp2=M;
tout=tout(A-M+1 :A,:);
elseif A < M
temp2=A;
y=y(M-A+1 :M,:);
else temp2=A;
end %若tout与y的维数不同,则使他们相同
y1=1.84-4.95*tout.*exp(-1.88*tout)-1.5*exp(-1.88*tout)-0.34*exp(-6
.24*tout); %求精确解
temp1=abs(y1-y);
ae=sum(temp1)/temp2 ; %求误差平均值
maxe=max(temp1); %求误差最大值
plot(tout,y, 'red'); %画图
grid
end
h 0.500 0.300 0.100 0.050 0.010
平均误差 7.62e+002 0.0023 4.56e-004 4.64e-004 4.66e-004
最大误差 6.21e+003 0.0438 6.44e-004 7.75e-004 7.84e-004
从图像和表格可以看出h=0.5 时,仿真的结果不稳定,是发散的,并且与解析解之间有
很大的误差,此时,数值积分法得出的结果是错误的;当h=0.3 时,仿真结果是收敛的,图
形基本仅次于解析解,但是还是具有一定误差;当h=0.1 时,仿真结果正确,误差也很小,
符合要求;当h=0.05 、当h=0.01 时,误差又变大。说明,最合适的步长大概为