天天看点

matlab数值稳定实验报告,计算机仿真Matlab 实验报告一.pdf

实验一 数值积分算法的实验

一、实验目的

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 时,误差又变大。说明,最合适的步长大概为