1、计算机仿真技术实验报告计算机仿真技术实验报告 学院:专业:班级:姓名:学号:实验一常微分方程的求解及系统数学模型的转换一实验目的通过实验熟悉计算机仿真中常用到的Matlab指令的使用方法,掌握常微分方程求解指令和模型表示及转换指令,为进一步从事有关仿真设计和研究工作打下基础。二. 实验设备个人计算机,Matlab软件。三. 实验准备 预习本实验有关内容(如教材第2、3、5章中的相应指令说明和例题),编写本次仿真练习题的相应程序。四. 实验内容1. Matlab中常微分方程求解指令的使用题目一:请用MATLAB的ODE45算法分别求解下列二个方程。要求:1.编写出Matlab仿真程序;2.画出方
2、程解的图形并对图形进行简要分析;3.分析下列二个方程的关系。12程序代码方程一:function fun=fun1(t,x)fun=-x2;t,x=ode45(fun1,0,1,1); plot(t,x,o,t,x,-);xlabel(time t0=0,tt=20);ylabel(x values x(0)=1);grid执行结果使用ode45方程二:function fun=fun2(t,x)fun=x2;t,x=ode45(fun2,0,1,-1);plot(t,x,o,t,x,-);xlabel(time t0=0,tt=1);ylabel(x values x(0)=-1);grid
3、执行结果使用ode45题目二:下面方程组用在人口动力学中,可以表达为单一化的捕食者-被捕食者模式(例如,狐狸和兔子)。其中表示被捕食者, 表示捕食者。如果被捕食者有无限的食物,并且不会出现捕食者。于是有,则这个式子是以指数形式增长的。大量的被捕食者将会使捕食者的数量增长;同样,越来越少的捕食者会使被捕食者的数量增长。而且,人口数量也会增长。请分别调用ODE45、ODE23算法求解下面方程组。要求编写出Matlab仿真程序、画出方程组解的图形并对图形进行分析和比较。程序代码function fun=fun3(t,x)fun=x(1)-0.1*x(1)*x(2)+0.01*t;-x(2)+0.02
4、*x(1)*x(2)+0.04*t;t,x=ode45(fun3,0,20,30,20);plot(t,x);xlabel(time t0=0,tt=20);ylabel(x values x1(0)=30,x2(0)=20);grid执行结果t,x=ode23(fun3,0,20,30,20);plot(t,x);xlabel(time t0=0,tt=20);ylabel(x values x1(0)=30,x2(0)=20);grid2. Matlab中模型表示及模型转换指令的使用题目三:若给定系统的的传递函数为请用MATLAB编程求解其系统的极零点模型。程序代码num=6 12 6 1
5、0;den=1 2 3 1 1;sys=tf(num,den);H=zpk(sys)执行结果:Zero/pole/gain: 6 (s+1.929) (s2 + 0.07058s + 0.8638)-(s2 + 0.08663s + 0.413) (s2 + 1.913s + 2.421)题目四:习题2.4系统传递函数为,求其对角标准型实现。程序代码:num=1 4 5;den=1 6 11 6;sys=tf(num,den);canon(sys,modal)执行结果:a = x1 x2 x3 x1 -3 0 0 x2 0 -2 0 x3 0 0 -1 b = u1 x1 -15.11 x2
6、-22.98 x3 8.958 c = x1 x2 x3 y1 -0.06619 0.04352 0.1116 d = u1 y1 0 Continuous-time model.题目五:习题5.8已知某离散系统,采样周期,先需要在下作数字仿真,求该系统的数字仿真模型。分步执行:D=zpk(0,0.1 0.2,1,0.1) Zero/pole/gain: z-(z-0.1) (z-0.2) Sampling time: 0.1D2=d2d(D,0.02) Zero/pole/gain: 0.278 (z-0.4926)-(z-0.631) (z-0.7248) Sampling time: 0
7、.02直接执行:D=zpk(0,0.1 0.2,1,0.1);D2=d2d(D,0.02) Zero/pole/gain: 0.278 (z-0.4926)-(z-0.631) (z-0.7248) Sampling time: 0.02五总结与体会通过本次实验了解了计算机仿真中常用到的Matlab指令的使用方法,掌握了常微分方程求解指令和模型表示及转换指令,为进一步学习仿真设计打下了基础。实验二 Matlab优化工具箱的使用一实验目的通过上机操作熟悉Matlab优化工具箱的主要功能及其使用方法,掌握优化工具箱中常用函数的功能和语法,并利用其进行极值运算、求解线性和非线性问题等,为进一步的仿真
8、设计和研究打下基础。二. 实验设备个人计算机,Matlab软件。三. 实验准备 预习本实验有关内容(如教材第6章中的相应指令说明和例题),编写本次仿真练习题的相应程序。四. 实验内容1. 应用Matlab优化工具箱求解优化问题例题6.66.10,选做2题,要求自行修改方程系数,比较运行结果。6.6 (原)求解非线性方程初始值为x0=-5 -5。原程序function F=myfun(x) F=2*x(1)-x(2)-exp(-x(1); -x(1)+2*x(2)-exp(-x(2);x0=-5,-5; options=optimset(Display,iter); x,fval=fsolve(
9、myfun,x0,options) Norm of First-order Trust-region Iteration Func-count f(x) step optimality radius 1 3 47071.2 2.29e+004 1 2 6 12003.4 1 5.75e+003 1 3 9 3147.02 1 1.47e+003 1 4 12 854.452 1 388 1 5 15 239.527 1 107 1 6 18 67.0412 1 30.8 1 7 21 16.7042 1 9.05 1 8 24 2.42788 1 2.26 1 9 27 0. 0. 0.206
10、 2.5 10 30 7.03149e-006 0. 0.00294 2.5 11 33 3.29525e-013 0. 6.36e-007 2.5Optimization terminated successfully: First-order optimality is less than options.TolFun.x = 0.5671 0.5671fval = 1.0e-006 * -0.4059 -0.4059改变后function F=myfun(x) F=3*x(1)-x(2)-exp(-x(1); -x(1)+3*x(2)-exp(-x(2);x0=-5,-5;options
11、=optimset(Display,iter);x,fval=fsolve(myfun,x0,options) Norm of First-order Trust-region Iteration Func-count f(x) step optimality radius 1 3 50189.5 2.38e+004 1 2 6 13370.6 1 6.15e+003 1 3 9 3741.7 1 1.65e+003 1 4 12 1109.03 1 466 1 5 15 344.018 1 141 1 6 18 105.246 1 45.9 1 7 21 26.6064 1 15.1 1 8
12、 24 2.6544 1 3.52 1 9 27 0. 0. 0.18 2.5 10 30 9.03107e-008 0. 0. 2.5 11 33 9.44087e-018 0. 5.87e-009 2.5Optimization terminated successfully: First-order optimality is less than options.TolFun.x = 0.3517 0.3517fval = 1.0e-008 * -0.2173 -0.2173例题6.8function f=fun(x) f=exp(x(1)*(4*x(1)2+2*x(2)2+4*x(1)
13、*x(2)+2*x(2)+1);x0=-1 1;options=;x,options=fminu(fun,x0,options)Warning: The function FMINU is obsolete and has been replaced byFMINUNC. FMINU will be removed in a future release of theOptimization Toolbox. Update your code to call FMINUNC tosuppress this warning message. See Converting your code to
14、Version 2 Syntax in the Optimization Toolbox Users Guidefor more information. In C:MATLAB6p5toolboxoptimfminu.m at line 48x = 0.5000 -1.0000options = Columns 1 through 11 0 0.0001 0.0001 0.0000 0 0 0 0.0000 0 36.0000 0 Columns 12 through 18 0 0 200.0000 0 0.0000 0.1000 1.0000改变后:function f=fun(x) f=
15、exp(x(1)*(5*x(1)2+3*x(2)2+2*x(1)*x(2)+4*x(2)+1);x0=-1 1;options=;x,options=fminu(fun,x0,options)Warning: The function FMINU is obsolete and has been replaced byFMINUNC. FMINU will be removed in a future release of theOptimization Toolbox. Update your code to call FMINUNC tosuppress this warning mess
16、age. See Converting your code toVersion 2 Syntax in the Optimization Toolbox Users Guidefor more information. In C:MATLAB6p5toolboxoptimfminu.m at line 48x = 0.1878 -0.7292options = Columns 1 through 11 0 0.0001 0.0001 0.0000 0 0 0 -0.5057 0 38.0000 0 Columns 12 through 18 0 0 200.0000 0 0.0000 0.10
17、00 1.00052. 应用Matlab优化工具箱求解极值问题已知函数f(x)=10*exp(-x)*cos(x) ,求函数的极值。(1)x2,5时,求函数的最小值,并画出函数的曲线。X=fmin(10*exp(-x)*cos(x),2,5)X = 2.3562f=10*exp(-x)*cos(x);fplot(f,2,5)Y=-0.6702(2)x3,9时,求函数的最大值,并画出函数的曲线。X=fmin(-10*exp(-x)*cos(x),3,9)X=5.4978f=10*exp(-x)*cos(x);fplot(f,3,9)Y=0.0290五总结与体会通过上机操作熟悉Matlab优化工具
18、箱的主要功能及其使用方法,掌握优化工具箱中常用函数的功能和语法,并利用其进行极值运算、求解线性和非线性问题等,为进一步的仿真设计和研究打下基础。实验三 利用Matlab和Simulink进行系统仿真设计一实验目的通过实验对一个汽车运动控制系统进行实际设计与仿真,掌握控制系统性能的分析和仿真处理过程,熟悉用Matlab和Simulink进行系统仿真的基本方法。二. 实验设备个人计算机,Matlab软件。三. 实验准备预习本实验相关说明,复习PID控制器的原理和作用,明确汽车运动控制系统问题的描述及其模型表示,编写本次仿真练习的相应程序。四. 实验说明本实验是对一个汽车运动控制系统进行实际设计与仿
19、真,其方法是先对汽车运动控制系统进行建摸,然后对其进行PID控制器的设计,建立了汽车运动控制系统的模型后,可采用Matlab和Simulink对控制系统进行仿真设计。注意:设计系统的控制器之前要观察该系统的开环阶跃响应,采用阶跃响应函数step( )来实现,如果系统不能满足所要求达到的设计性能指标,需要加上合适的控制器。然后再按照仿真结果进行PID控制器参数的调整,使控制器能够满足系统设计所要求达到的性能指标。五. 实验内容1. 问题的描述如下图所示的汽车运动控制系统,设该系统中汽车车轮的转动惯量可以忽略不计,并且假定汽车受到的摩擦阻力大小与汽车的运动速度成正比,摩擦阻力的方向与汽车运动的方向
20、相反,这样,该汽车运动控制系统可简化为一个简单的质量阻尼系统。根据牛顿运动定律,质量阻尼系统的动态数学模型可表示为:系统的参数设定为:汽车质量m=1000kg,比例系数b=50 Ns/m,汽车的驱动力u=500 N。根据控制系统的设计要求,当汽车的驱动力为500N时,汽车将在5秒内达到10m/s的最大速度。由于该系统为简单的运动控制系统,因此将系统设计成10的最大超调量和2的稳态误差。这样,该汽车运动控制系统的性能指标可以设定为:上升时间:tr5s;最大超调量:10;稳态误差:essp2。2.系统的模型表示假定系统的初始条件为零,则该系统的Laplace变换式为: 即 则该系统的传递函数为:如
21、果用Matlab语言表示该系统的传递函数模型,相应的程序代码如下:num=1;den=1000,50;sys=tf(num,den)同时,系统的数学模型也可写成如下的状态方程形式:如果用Matlab语言表示该系统状态空间模型,相应的程序代码如下:A=-50/1000;B=1/1000;C=1;D=0;sys=ss(A,B,C,D)3. 系统的仿真设计利用Matlab进行仿真设计I求系统的开环阶跃响应在Matlab命令窗口输入相应的程序代码,得出该系统的模型后,接着输入下面的指令:step(u*sys)可得到该系统的开环阶跃响应曲线,如下图所示:从图上可看出该系统不能满足系统设计所要求达到的性能
22、指标,需要加上合适的控制器。IIPID控制器的设计PID控制器的传递函数为:在PID控制中,比例(P)、积分(I)、微分(D)这三种控制所起的作用是不同的(请注意在实验总结中进行归纳)。下面分别讨论其设计过程。(1)比例(P)控制器的设计 增加比例控制器之后闭环系统的传递函数为:由于比例控制器可以改变系统的上升时间,现在假定Kp100,观察一下系统的阶跃响应。在MATLAB命令窗口输入指令:num=100;den=1000,150;sys=tf(num,den);step(500*sys)由此仿真结果,分析系统的稳态值是否满足设计要求,系统的稳态误差和上升时间能不能满足设计要求?上升时间为40
23、s远远大于5s,不能满足设计要求,稳态误差为(500-333)/500远远大于2%,因此系统不满足设计要求若减小汽车的驱动力为10N,重新进行仿真,仿真结果为:num=100;den=1000,150;sys=tf(num,den);step(10*sys)如果所设计的比例控制器仍不能满足系统的稳态误差和上升时间的设计要求,则可以通过提高控制器的比例增益系数来改善系统的输出。例如把比例增益系数Kp从100提高到10000重新计算该系统的阶跃响应,结果为:程序:num=10000;den=1000,10050;sys=tf(num,den);step(10*sys)此时系统的稳态误差接近为零,系
24、统上升时间也降到了0.5s以下。这样做虽然满足了系统性能要求,但实际上该控制过程在现实中难以实现。因此,引入比例积分(PI)控制器来对系统进行调节。(2)比例积分(PI)控制器的设计采用比例积分控制的系统闭环传递函数可表示为:增加积分环节的目的是减小系统的稳态误差,假设比例系数Kp=600,积分系数KI=1,编写相应的MATLAB程序代码如下:num=600,1;den=1000,650,1;sys=(num,den)可以调节控制器的比例和积分系数来满足系统的性能要求。例如选择比例系数KP800,积分系数KI =40时,可得系统阶跃响应曲线为:num=800,40;den=1000,850,4
25、0;sys=(num,den);step(500*sys)可见,此时的控制系统已经能够满足系统要求达到的性能指标设计要求。但此控制器无微分项,而对于有些实际控制系统往往需要设计完整的PID控制器,以便同时满足系统的动态和稳态性能要求。(3)比例积分微分(PID)控制器的设计采用PID控制的系统闭环传递函数为:假设该控制器的比例系数KP=1,积分系数KI =1,微分系数KD=1,编写MATLAB程序代码如下:num=1,1,1;den=1001,51,1;sys=(num,den)运行上述程序,并且调整PID控制器的控制参数,直到控制器满足系统设计的性能指标要求为止。num=10,650,50;
26、den=1010,700,50;sys=tf(num,den);step(500*sys) 最后,选择KP=650,KI =50,KD=10,此时系统的阶跃响应曲线如下:从图中可以看出该系统能够满足设计的总体性能要求。利用Simulink进行仿真设计I求系统的开环阶跃响应利用Simulink建立系统阶跃响应模型,如下图所示。双击Step模块,设置模块属性:跳变时间为0;初始值为0;终止值为10;采样时间为0。单击按钮开始仿真,双击Scope模块,可得系统阶跃响应曲线。分析此时系统的性能指标是否满足设计要求?若不能则应加上合适的控制器。答:不满足IIPID控制器的设计在Simulink的模型窗口
27、建立一个包含PID控制器的闭环系统阶跃响应模型,如图所示:分别双击Kp、Ki、Kd模块设定比例、积分、微分系数,点击按钮开始仿真,双击Scope模块,观察系统的阶跃响应曲线,直到满足要求为止。最终选取KP= 680 ,KI= 50 ,KD= 15 ,此时控制器能满足系统设计所要求达到的性能指标,Simulink仿真的汽车运动PID控制系统的阶跃响应曲线如下:六总结与体会实验总结:(总结实验中遇到的问题及解决办法,分析PID控制器三种控制所起的作用等。)通过实验对一个汽车运动控制系统进行实际设计与仿真,掌握控制系统性能的分析和仿真处理过程,熟悉用Matlab和Simulink进行系统仿真的基本方法。本实验是对一个汽车运动控制系统进行实际设计与仿真,其方法是先对汽车运动控制系统进行建摸,然后对其进行PID控制器的设计,建立了汽车运动控制系统的模型后,可采用Matlab和Simulink对控制系统进行仿真设计。设计系统的控制器之前要观察该系统的开环阶跃响应,采用阶跃响应函数step( )来实现,如果系统不能满足所要求达到的设计性能指标,需要加上合适的控制器。然后再按照仿真结果进行PID控制器参数的调整,使控制器能够满足系统设计所要求达到的性能指标。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1