资源描述:
《第3-1章 连续系统数值积分法仿真Matlab编程.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第三章Matlab编程(数值积分法仿真)3.1连续系统数值积分法仿真编程思路目的:针对下面的系统编写通用的数值积分法仿真程序(3.1-1)对这样的系统进行仿真,实际上涉及到控制的计算、状态的数值积分计算和输出的计算。3个函数g,f,h确定后,就可以完整地描述一个系统。给定初值:u0,y0,系统中的向量都采用列向量表示1function[t,y]=w_DigiInteSimu(tstart,tstop,h,x0,u0,cnty,InteMethod,StateModel,OutputFile,Con
2、trolFile)%函数功能:用数值积分法仿真%输入参数:tstart,tstop,h分别是起始时间、结束时间和仿真步长,是标量%x0,u0是状态、输入的初值,都是列向量%cnty是输出变量的个数%InteMethod时数值积分方法,可以是'EUL','RK2','RK4'%StateModel是状态模型的文件名%ControlFile是控制作用的文件名%OutputFile是系统输出的文件名%输出参数:t是仿真结果的时间序列%y是仿真结果系统的输出序列(1)数值积分法仿真框架函数2functio
3、n[t,y]=w_DigiInteSimu(tstart,tstop,h,x0,u0,cnty,InteMethod,StateModel,OutputFile,ControlFile)t=[tstart:h:tstop];%t数一个行序列cntt=size(t,2);%返回列数y=zeros(cnty,cntt);%构造一个空矩阵,用来存储结果y0=eval([OutputFile,'(tstart,x0,u0)']);%计算初始输出y(:,1)=y0’;%将cury作为输出的第1列curx=x
4、0;%当前一步的xcuru=u0;%当前一步的ucury=y0;%当前一步的yfori=1:1:cntt-1curu=eval([ControlFile,'(t(i),h,curx,curu,cury)']);%计算控制时传递的参数:当前时间,步长,当前状态和输出curx=w_StepIntegral(t(i),h,curx,curu,InteMethod,StateModel);%单步积分运算cury=eval([OutputFile,'(t(i),curx,curu)']);%计算输出y(:,
5、i+1)=cury‘;%将输出加入到输出序列里end3functionNewX=w_StepIntegral(curt,h,curx,curu,InteMethod,StateModel)%函数功能:单步积分运算,与模型方程有关%输入参数:curt是当前时间,h是数值积分步长%curx,curu分别是当前的状态和控制向量%InteMethod是积分算法,字符串类型,可以取'EUL','RK2','RK4'%StateModel是状态模型文件名称,字符串类型%输出参数:NewX是这一步计算的新的状态
6、向量(2)单步数值积分法函数单步数值积分函数只是对微分方程组StateModel进行一步的计算,计算法由InteMethod参数指定,可以上欧拉法,RK2或RK4。4functionNewX=w_StepIntegral(curt,h,curx,curu,InteMethod,StateModel);ifInteMethod=='RK4'k1=eval([StateModel,'(curt,curx,curu)']);k2=eval([StateModel,'(curt+0.5*h,curx+0.
7、5*h*k1,curu)']);k3=eval([StateModel,'(curt+0.5*h,curx+0.5*h*k2,curu)']);k4=eval([StateModel,'(curt+h,curx+h*k3,curu)']);NewX=curx+h*(k1+2*k2+2*k3+k4)/6;elseifInteMethod=='RK2'k1=eval([StateModel,'(curt,curx,curu)']);k2=eval([StateModel,'(curt+h,curx+h
8、*k1,curu)']);NewX=curx+0.5*h*(k1+k2);else%欧拉法EULQk=eval([StateModel,'(curt,curx,curu)']);%eval用来执行一个函数,传递函数名和函数的输入参数NewX=curx+h*Qk;end5函数w_DigiInteSimu和w_StepIntegral构造了一个数值积分法仿真的框架,并不涉及具体的系统。具体的系统由StateModel,ControlFile,OutputFile参个参数决定,实际上就是