您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 商业计划书 > 计算机仿真上机实验报告终极版
《计算机仿真》上机实验报告学号:姓名:班级:昆明理工大学信息工程与自动化学院2012年12月实验一常微分方程的求解及系统数学模型的转换一.实验目的通过实验熟悉计算机仿真中常用到的Matlab指令的使用方法,掌握常微分方程求解指令和模型表示及转换指令,为进一步从事有关仿真设计和研究工作打下基础。二.实验设备个人计算机,Matlab软件。三.实验准备预习本实验有关内容(如教材第2、3、5章中的相应指令说明和例题),编写本次仿真练习题的相应程序。四.实验内容1.Matlab中常微分方程求解指令的使用题目一:请用MATLAB的ODE45算法分别求解下列二个方程。要求:1.编写出Matlab仿真程序;2.画出方程解的图形并对图形进行简要分析;3.分析下列二个方程的关系。1.2.1.仿真程序为:M文件:functionxprim=xprim2(t,,x)xprim=-x^2命令窗口:[t,x]=ode45('xprim2',[0,1],1);plot(t,x,'o',t,x,'-');xlabel('timeto=0,tt=1');ylabel('xvaluesx(0)=1');grid仿真过程为:仿真结果为:图形为:2.仿真过程为:M文件:functionxprim=xprim2(t,,x)xprim=x^2命令窗口:[t,x]=ode45('xprim2',[0,1],-1);plot(t,x,'o',t,x,'-');xlabel('timeto=0,tt=1');ylabel('xvaluesx(0)=-1');grid图形为:3.分析两个方程的关系:两个方程的x以及x(0)的值正好都互为相反数,由此,两个方程可以使用同一个M文件中创建的xprim2函数。区别在于在命令窗口中对X以及X(0)所赋的值。由此得到的两条曲线正好反向。第一个方程的曲线随着自变量的增加而减小,曲线为下降趋势。而第二个方程则是随着自变量的增加而增加,曲线是增长的。题目二:下面方程组用在人口动力学中,可以表达为单一化的捕食者-被捕食者模式(例如,狐狸和兔子)。其中1x表示被捕食者,2x表示捕食者。如果被捕食者有无限的食物,并且不会出现捕食者。于是有1'1xx,则这个式子是以指数形式增长的。大量的被捕食者将会使捕食者的数量增长;同样,越来越少的捕食者会使被捕食者的数量增长。而且,人口数量也会增长。请分别调用ODE45、ODE23算法求解下面方程组。要求编写出Matlab仿真程序、画出方程组解的图形并对图形进行分析和比较。仿真程序为:M文件:functionfun=fun(t,x)fun=[x(1)-0.1*x(1)*x(2)+0.01*t;-x(2)+0.02*x(1)*x(2)+0.04*t];命令窗口:[t,x]=ode45('fun',[0,20],[30;20]);plot(t,x);xlabel('timet0=0,tt=20');ylabel('xvaluesx1(0)=30,x2(0)=20');grid具体实现过程如下图:实验结果为:Ode45:Ode23:比较两个图形:两个图形从总体来说是差不多一样的,走势都一致,但两者之间也存在差别。首先是图形的波峰,利用ode23得到的图形波峰比较明显,比ode45波峰尖。利用ode23得到的图形,第二个波峰明显比用ode45要早到。2.Matlab中模型表示及模型转换指令的使用题目三:若给定系统的的传递函数为1132106126)(23423ssssssssG请用MATLAB编程求解其系统的极零点模型。仿真程序为:num=[612610]den=[12311]sys=tf(num,den)zsys=zpk(sys)仿真过程为:实验结果为:零极点分别为:题目四:习题2.4仿真程序为:num=[1215]den=[36915]sys=tf(num,den)canon(sys,'companion')仿真过程为:仿真结果为:题目五:习题5.8仿真程序为:sys=tf([10],[1-0.30.02],0.02)sys1=d2d(sys,0.1)仿真过程及其结果为:五.总结与体会通过对实验一的上机实践,从中我又更加熟练地学习和运用了MATLAB这个软件。一方面是在建立M文件的时候,要注意自己创建的函数的名称,应该与在命令窗口调用时一致,否则就会出现不能调用的错误。其次是在图形的显示的操作中,怎么利用plot语句显示图形中的各个点的问题等。再者是在做后面几个习题的时候,对MATLAB的使用,比自己用笔算是方便和直接很多的,这个也是MATLAB的一大优点。总的来说,在对实验一的上机实践以后,我掌握了更多关于使用MATLAB的知识要点以及使用和修改的一些原理。实验二Matlab优化工具箱的使用一.实验目的通过上机操作熟悉Matlab优化工具箱的主要功能及其使用方法,掌握优化工具箱中常用函数的功能和语法,并利用其进行极值运算、求解线性和非线性问题等,为进一步的仿真设计和研究打下基础。二.实验设备个人计算机,Matlab软件。三.实验准备预习本实验有关内容(如教材第6章中的相应指令说明和例题),编写本次仿真练习题的相应程序。四.实验内容1.应用Matlab优化工具箱求解优化问题例题6.6~6.10,选做2题,要求自行修改方程系数,并比较运行结果。6.7修改前:Min-2x1-x2+3x3-5x4St.8x1-5x2+4x3-x4≤63x1+4x2-x3+x4≤122X1+3x3+x4≤7X1,x2,x3,x4≥0仿真程序为:f=[-2-13-5]';A=[124-1;23-11;1011;-1000;0-100;00-10;000-1];b=[61240000]';X=lp(f,A,b)优化结果为:其中,ans为最优解。修改后:Min2x1+3x2-x3+4x4St.-x1+3x2+x3+2x4≤72x1+x2-5x3-3x4≤25X1+x3+x4≤4X1,x2,x3,x4≥0仿真程序为:f=[23-14]';A=[-1312;21-5-3;1011;-1000;0-100;00-10;000-1];b=[72540000]';X=lp(f,A,b)优化结果为:其中,ans为最优解。比较两个运行结果:通过对各系数的修改之后,所得到的结果与为修改之前的结果必然是存在差别的。最直观的能看到的就是X的值是不同的。由于系数修改,所以优化的结果也会不一样,与修改之前相比,修改后的最优解变为-4.6.8修改前:minf(x)=exp(x(1))*(8*x(1)^2+3*x(2)^2+6*x(1)*x(2)+4*x(2)+1)仿真程序为:M文件:functionf=fun(x)f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);命令窗口:x0=[-11];options=[];[x,options]=fminu('fun',x0,options)仿真优化结果为:其中options(8)是问题的最优解修改后:minf(x)=exp(x(1))*(x(1)^2+2x(2)^2+x(1)x(2)+3x(2)+5)M文件:其中options(8)是问题的最优解比较两个运行结果:通过对系数的修改,发现修改以后的最优结果options(8)与未修改之前的结果是一样的。但是所修改的其他值对其他参数是有影响的。首先是X的值是有所变化的,其次就是options(10)的值也是不相同的。2.应用Matlab优化工具箱求解极值问题已知函数f(x)=10*exp(-x)*cos(x),求函数的极值。(1)x∈[2,5]时,求函数的最小值,并画出函数的曲线。仿真程序为:x0=2;x1=5;X=fmin('10*exp(-x)*cos(x)',x0,x1)y=10*exp(-X)*cos(X)仿真过程为:仿真结果为:(2)x∈[3,9]时,求函数的最大值,并画出函数的曲线。仿真程序为:x0=3;x1=9;X=fmin('-10*exp(-x)*cos(x)',x0,x1)y=10*exp(-X)*cos(X)仿真过程为:仿真结果为:五.总结与体会在对实验二的上机实践以后,我更加熟练地掌握了运用MATLAB对函数进行优化的的过程以及优化的部分原理。在对实验结果进行比较的同时,使得自己去思考其变化的原因和由来,由此也就明白了其优化的部分原理。而在应用Matlab优化工具箱求解极值问题的实验中,先是对最小值的求解实现。在学会使用MATLAB求最小值的基础之上,巧妙地运用求最大值可运用就最小值的相反值进行实验,在具体实验过程中,就是运用fmin,在原函数的前面添加负号进行最大值的求解。所以,在学会使用基本的MATLAB的指令的基础之上,通过实验我还学会了一些通过转换实现其他方程的实验,自己受益匪浅。实验三利用Matlab和Simulink进行系统仿真设计一.实验目的通过实验对一个汽车运动控制系统进行实际设计与仿真,掌握控制系统性能的分析和仿真处理过程,熟悉用Matlab和Simulink进行系统仿真的基本方法。二.实验设备个人计算机,Matlab软件。三.实验准备预习本实验相关说明,复习PID控制器的原理和作用,明确汽车运动控制系统问题的描述及其模型表示,编写本次仿真练习的相应程序。四.实验说明本实验是对一个汽车运动控制系统进行实际设计与仿真,其方法是先对汽车运动控制系统进行建摸,然后对其进行PID控制器的设计,建立了汽车运动控制系统的模型后,可采用Matlab和Simulink对控制系统进行仿真设计。注意:设计系统的控制器之前要观察该系统的开环阶跃响应,采用阶跃响应函数step()来实现,如果系统不能满足所要求达到的设计性能指标,需要加上合适的控制器。然后再按照仿真结果进行PID控制器参数的调整,使控制器能够满足系统设计所要求达到的性能指标。五.实验内容1.问题的描述如下图所示的汽车运动控制系统,设该系统中汽车车轮的转动惯量可以忽略不计,并且假定汽车受到的摩擦阻力大小与汽车的运动速度成正比,摩擦阻力的方向与汽车运动的方向相反,这样,该汽车运动控制系统可简化为一个简单的质量阻尼系统。ubvmvv根据牛顿运动定律,质量阻尼系统的动态数学模型可表示为:vyubvvm系统的参数设定为:汽车质量m=1000kg,比例系数b=50N·s/m,汽车的驱动力u=500N。根据控制系统的设计要求,当汽车的驱动力为500N时,汽车将在5秒内达到10m/s的最大速度。由于该系统为简单的运动控制系统,因此将系统设计成10%的最大超调量和2%的稳态误差。这样,该汽车运动控制系统的性能指标可以设定为:上升时间:tr5s;最大超调量:σ%10%;稳态误差:essp2%。2.系统的模型表示假定系统的初始条件为零,则该系统的Laplace变换式为:)()()()()(sVsYsUsbVsmsV即)()()(sUsbYsmsY则该系统的传递函数为:bmssUsY1)()(如果用Matlab语言表示该系统的传递函数模型,相应的程序代码如下:m=1000;b=50;u=500;num=[1];den=[m,b];sys=tf(num,den);同时,系统的数学模型也可写成如下的状态方程形式:vyumvmbv1如果用Matlab语言表示该系统状态空间模型,相应的程序代码如下:m=1000;b=50;u=500;3.系统的仿真设计●利用Matlab进行仿真设计I.求系统的开环阶跃响应在Matlab命令窗口输入相应的程序代码,得出该系统的模型后,接着输入下面的指令:step(u*sys)可得到该系统的开环阶跃响应曲线,如下图所示:m=1000;b=50;u=500;num=[1];den=[m,b];sys=tf(num,den);a=(-b)/m;b=1/m;c=1;d=0;sys=ss(a,b,c,d);step(sys,0:0.1:200),gridon从图上
本文标题:计算机仿真上机实验报告终极版
链接地址:https://www.777doc.com/doc-4894908 .html