资源描述:
《《计算机仿真技术》报告new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《计算机仿真技术》实验报告12实验一数字仿真方法验证一、实验目的1.掌握基于数值积分法的系统仿真、了解各仿真参数的影响;2.掌握基于离散相似法的系统仿真、了解各仿真参数的影响;3.掌握SIMULINK动态仿真;4.熟悉MATLAB语言及应用环境。二、实验环境网络计算机系统,MATLAB语言环境三、实验内容、要求(一)试将示例1的问题改为调用ode45函数求解,并比较结果。示例1:设方程如下,取步长h=0.1。上机用如下程序可求出数值解。调用ode45函数求解:1)建立一阶微分方程组du=u-2*t/u2)建立描述微分
2、方程组的函数m文件functiondu=sy11vdp(t,u)du=u-2*t/u3)调用解题器指令ode45求解y[t,u]=ode45('sy11vdp',[01],1)plot(t,u,'r-');xlabel('t');ylabel('u');结果对比:euler法:t=1,u=1.7848;RK法:t=1,u=1.7321;ode45求解:t=1,u=1.7321;ode45求解t-u图:12(二)试用四阶RK法编程求解下列微分方程初值问题。仿真时间2s,取步长h=0.1。四阶RK法程序:12cleart
3、=2;h=0.1;n=t/h;t0=0;y0=1;y(1)=y0;t(1)=t0;fori=0:n-1k1=y0-t0^2;k2=(y0+h*k1/2)-(t0+h/2)^2;k3=(y0+h*k2/2)-(t0+h/2)^2k4=(y0+h*k3)-(t0+h)^2;y1=y0+h*(k1+2*k2+2*k3+k4)/6;t1=t0+h;y0=y1;t0=t1;y(i+2)=y1;t(i+2)=t1;endy12tplot(t,y,'r');结果:t=2,y=2.6109:(三)试求示例3分别在周期为5s的方波信号
4、和脉冲信号下的响应,仿真时间20s,采样周期Ts=0.1。已知系统的状态空间模型为程序:12clear%CreatesystemmodelA=[-0.5572-0.7814;0.78140];B=[1;0];C=[1.96916.4493];D=0;sys=ss(A,B,C,D);%impulseresponseofthesystemsubplot(211)impulse(sys,[0:0.1:20])%squareresponseofthesystem[u,t]=gensig('square',5,20,0.1);
5、12subplot(212)lsim(sys,u,t)(四)某系统框图如图所示,试用SIMULINK进行仿真,并比较在无饱和非线性环节下系统仿真结果。模型:121212实验二PID控制器设计一、实验目的1.了解PID控制原理,掌握相应PID控制器设计仿真程序的应用;2.掌握计算机辅助系统瞬态性能指标的计算;3.掌握计算机辅助系统频率性能分析;二、实验环境网络计算机系统(采矿楼四楼测试实验室),MATLAB语言环境三、实验内容、要求已知如图所示单位反馈系统要求:1.绘制系统的开环Nyquist图和Bode图,并判断该闭
6、环系统是否稳定。程序:Sy21.m%Createsystemmodelsys=tf([5005000],[133337177549505000]);%DrawtheNyquistplotfigure(1)nyquist(sys)gridon[Re,Im,w1]=nyquist(sys);%DrawtheBodeplotfigure(2)bode(sys)[mag,phase,w2]=bode(sys);gridon12%Createclosed-loopfeedbacksystemmodelsysclose=feed
7、back(sys,1);%Quickaccesstozero-pole-gaindata.[z,p,k]=zpkdata(sysclose,'v');P结果:p=-19.9388-5.1469+2.5108i-5.1469-2.5108i-1.3837+3.6577i-1.3837-3.6577i无闭环右极点,系统稳定。1.应用Ziegler—Nichols方法设计P控制器、PI控制器和PID控制器。程序:sy22.m%DesignPIDcontroler%CreateSystemModelclf,clcsys=tf
8、([5005000],[133337177549505000]);sysgroup=feedback(sys,1);%DesignP-PI-PIDControlerfori=1:3type=i;[sysc,Kp,Ti,Td]=pidmargin(sys,type);sysopen=sysc*sys;sysclose=feedback(sysop