首页 6 数值积分法仿真

6 数值积分法仿真

举报
开通vip

6 数值积分法仿真nullnull 本章主要教学内容 本章主要介绍控制系统数学模型的相关知识,通过本章的学习,读者应掌握以下内容: 求解常微分方程数值解的一般方法 数值积分法的基本概念及其常用方法 以系统微分方程或传递函数作为数学模型的仿真过程及程序设计方法 以系统动态结构图作为数学模型的仿真过程及程序设计方法 仿真步长的选择与系统仿真精度和稳定性的对应关系 快速仿真算法的概念、特点及其应用 第6章 数值积分法仿真 null6.1 数值积分法 6.1.1 概述 ...

6 数值积分法仿真
nullnull 本章主要教学内容 本章主要介绍控制系统数学模型的相关知识,通过本章的学习,读者应掌握以下内容: 求解常微分方程数值解的一般方法 数值积分法的基本概念及其常用方法 以系统微分方程或传递函数作为数学模型的仿真过程及程序设计方法 以系统动态结构图作为数学模型的仿真过程及程序设计方法 仿真步长的选择与系统仿真精度和稳定性的对应关系 快速仿真算法的概念、特点及其应用 第6章 数值积分法仿真 null6.1 数值积分法 6.1.1 概述 数字仿真模型、算法及仿真工具 控制系统的数字仿真是利用数字计算机作为仿真工具,采用数学上的各种数值算法求解控制系统运动的微分方程,得到被控物理量的运动规律。 通常,计算机模拟被控对象是用一定的仿真算法来实现被控对象的运动规律,这是基于被控对象的数学模型来完成的。 控制系统的数学模型经过合理的近似及简化,大多数建立为常微分方程的表达形式。由于数学计算的难度和实际系统的复杂程度,在实际中遇到的大部分微分方程难以得到其解析解,通常都是通过数字计算机采用数值计算的方法来求取其数值解。在高级仿真软件(例如MATLAB)环境下,已提供了功能十分强大、且能保证相应精度的数值求解的功能函数或程序段,使用者仅需要按 规定 关于下班后关闭电源的规定党章中关于入党时间的规定公务员考核规定下载规定办法文件下载宁波关于闷顶的规定 的语言规格调用即可,而无需从数值算法的底层考虑其编程实现过程。null6.1.2 离散化原理 在数字计算机上对连续系统进行仿真时,首先遇到的问题是,数字计算机的数值及时间都是离散的(计算精度,指令执行时间),而被仿真系统的数值和时间是连续的,后者如何用前者来实现? 设系统模型为: ,其中u(t)为输入变量,y(t)为系统状态变量。令仿真时间间隔为h,离散化后的输入变量为u’(tk), 其中tk表示t=kh。如果 u’(tk) ≈ u(tk), y’(tk) ≈ y(tk),则认为两模型等价,称为相似原理。 对仿真建模方法有三个基本要求: 1、稳定性,若原系统是稳定的,则离散化后的仿真模型也得是稳定的 2、准确性,绝对或相对误差小于规定误差 3、快速性,数字仿真是一步步推进的,由某个初始值y0出发,依次计算出y1、y2…yk,每一步计算所需时间决定了仿真速度。null 6.1.3 数值积分法 一般情况下,在控制系统仿真中最常用、最基本的求解常微分方程数值解的方法主要是数值积分法。 对于形如 的系统,已知系统状态变量y的初值y0,现要计算y随时间变化的过程y(t),对微分方程的积分可以写作: 右图所示曲线下的面积就 是y(t),由于难以得到积分 的数值表达式,所以采用 近似的方法,常用有三种形式: 欧拉法 梯形法 龙格一库塔法 null欧拉公式,采用矩形面积近似积分结果,即当t= tk+1时hk=tk+1-tk,若步距不变,则hk=h.为了提高精度,人们提出了“梯形法”,其中最简单的是亚当姆斯预报—校正公式 ,先用欧拉法估计近似值,然后用梯形法进行校正:龙格-库塔法的基本原理龙格-库塔法的基本原理在连续系统仿真中,主要的数值计算工作是求解一阶微分方程:若已知y的初值y0,再按离散化原理,对上式我们可以写成:再对上式的右端函数f(t,y)(为任意非线性函数)在tk附近展开成泰勒级数,依照展开的阶次不同我们就构成了不同的龙格-库塔公式。null 二阶龙格—库塔公式,记在tk时刻的状态变量为yk,并定义两个附加向量型变量 :null四阶龙格—库塔公式 :不论几阶RK法,它们的 计算公式 六西格玛计算公式下载结构力学静力计算公式下载重复性计算公式下载六西格玛计算公式下载年假计算公式 都是由两部分组成,即上一步的结果yk和步长h乖以tk至tk+1时间间隔间各外推点的导数ki的加权平均和null·有了上面的数学算法,就可以用MATLA编写出该算法的函数: function[tout,yout] = rk4(odefile,tspan,y0) t0= tspan(1);th= tspan(2); if length(tspan)<= 3,h= tspan(3) else, h= tspan(2)-tspan(1);th= tspan(2); end tout= [t0:h:th]’;yout= []; for t= tout’ k1= eval([odefile’(t,y0)’]); k2= eval([odefile’(t+h/2,y0+0.5*k1)’]); k3= eval([odefile’(t+h/2,y0+0.5*k2)’]); k4= eval([odefile’t+h,y0+k3’]); yout= [yout;y0’]; endnull其中,tspan可以有两种构成方法:一是可以是一个等间距的时间向量;二是tspan=[t0,th,h],t0和th为计算的初始及终止值,h为计算步长,odefile是一个字符串变量,表示微分方程的文件名,y0是初值列向量,函数调用完成后,时间向量与各个时刻状态变量构成的矩阵分别由tout和yout返回. MATLAB提供了两个RK法函数ode23()和ode45(),一个采用二阶三级公式,一个采用四阶五级RK法,并采用了自适应变步长的求解方法,即当解的变化较慢时采用较大的计算步长,以加快计算速度;当方程的解变化得较快时,积分步长自动变小,以得到较高的计算精度。6.2 仿真精度与系统的稳定性 6.2 仿真精度与系统的稳定性 6.2.1 仿真过程的三类误差 通常,系统仿真的最终精度与现场原始数据的采集、使用的计算机设备档次、仿真计算时的数值积分公式等均有相应的关系,可以分为以下3种情况。 1. 初始误差 在对系统仿真时,要采集现场的原始数据,而计算时要提供初始条件,这样由于数据的采集不一定很准,会造成仿真过程中产生一定的误差,此类误差称为初始误差。 要消除或减小初始误差,就应对现场数据进行准确的检测,也可以多次采集,以其平均值作为参考初始数据。 null2. 舍入误差 目前,系统仿真大都采用计算机程序处理和数值计算,由于计算机的字长有限,不同档次的计算机其计算结果的有效值不一致,导致仿真过程出现舍入误差。 一般情况下,要降低舍入误差应选择挡次高些的计算机,其字长越长,仿真数值结果尾数的舍入误差就越小。 3. 截断误差 当仿真步距确定后,采用的数值积分公式的阶次将导致系统仿真时产生截断误差,阶次越高,截断误差越小。通常仿真时多采用四阶龙格—库塔法,其原因就是这种计算公式的截断误差较小。 null6.2.2 稳定性分析 由于系统仿真时存在误差,对仿真结果产生会影响。若计算结果对系统仿真的计算误差反应不敏感,那么称之为算法稳定,否则称算法不稳定。对于不稳定的算法,误差会不断积累,最终可能导致仿真计算达不到系统要求而失败。 1. 系统的稳定性与仿真步长的关系 一个数值解是否稳定,取决于该系统微分方程的特征根是否满足稳定性要求,而不同的数值积分公式具有不同的稳定区域,在仿真时要保证稳定就要合理选择仿真步长,使微分方程的解处于稳定区域之中。 null 2. 积分步长的选择 由于积分步长直接与系统的仿真精度和稳定性密切相关,所以,应合理地选择积分步长h的值,以保证仿真结果符合用户要求。 通常,积分步长h的选择要遵循以下两个原则: (1)保证仿真系统的算法稳定 (2)保证仿真系统具备一定的计算精度 一般情况下,仿真中的初始误差及舍入误差对仿真过程影响不是很大,而截断误差将随积分步长h的加大而增加,会导致系统仿真的精度下降。 在仿真计算中,h值不宜选的太小,因为这样会加大计算量;也不能选的过大,否则会导致仿真系统不稳定或误差积累过大。 通常掌握的原则是: 在保证计算稳定性及计算精度的要求下,尽可能选较大的仿真步长。对于一般工程系统的仿真处理,采用四阶龙格—库塔法居多 。 龙格-库塔法的步长控制策略龙格-库塔法的步长控制策略控制策略由误差估计和步长控制两方面组成,其基本思想如下图所示: 步长控制积分算法误差估计改变下一步 计算步长本步 计算允许 误差 E2、误差估计2、误差估计通常采用的方法是设法找到一个比目前使用的龙格-库塔公式低一阶的R-K公式,将两式计算结果之差视为误差估计值。 例如:现以RKM4-5为计算公式 再推出一个3阶6级公式再推出一个3阶6级公式-需要说明的是:两个RK公式的导数Ki是相同的3、最优步长法3、最优步长法基本方法是根据本步的误差估计来近似地确定下一步可能的最大步长,步骤如下:1)给定允许的相对误差ε0,设本步步长为hk,本步相对估计误差为ek,ek由下式求得:若采用的RK公式是m阶,则上式中的Ek可以表示为通常取ζ=tk,则有:则表示本步积分成功,可以用ek来确定下一步的最大步长hk+1了。null2)假定hk+1足够小,即认为3)若ek> ε0,本步失败,但仍采用上式,重新进行积分。null6.3 面向微分方程的仿真程序设计 6.3.1 通用仿真程序的一般结构及工作原理 1. 通用仿真程序的基本结构 以数字计算机作为仿真工具,使用适当的算法语言来编制通用的仿真程序,可以针对不同的系统进行相应的仿真处理。按常规组成结构,通用仿真程序可分为3个层次,即主程序块、功能程序块、基本子程序块。 各模块功分析能如下: (1)主程序:完成仿真逻辑控制,实现各功能模块的调用、模型的转换、系统运行、输入输出的控制等。null(2)初始化程序:完成各类初始数据的准备工作,如设置工作单元、给定变量初值和系统仿真参数等。 (3)运行程序:实现系统运行的控制,调用数值积分法完成仿真算法处理,得出系统的响应结果。 (4)输出程序:按用户指定的输出形式,可以在显示器、打印机、绘图仪等设备上将仿真的结果以数据、动态曲线、图形等方式输出。 null2. 仿真程序 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 框图 nullMATLAB提供了两个常微分方程求解的函数ode23()、ode45(),分别采用了二阶三级的RKF方法和四阶五级的RKF法,并采用自适应变步长的求解方法,即当解的变化较慢时采用较大的计算步长,从而使得计算速度很快;当解的变化较快时,步长会自动变小,从而使计算精度提高。 Syntax [T,Y] = solver(odefun,tspan,y0) [T,Y] = solver(odefun,tspan,y0,options) where solver is one of ode45, ode23, ode113, ode15s, ode23s, ode23t, or ode23tb. ArgumentsodefunA function that evaluates the right-hand side of the differential equations. All solvers solve systems of equations in the form or problems that involve a mass matrix, . The ode23s solver can solve only equations with constant mass matrices. ode15s and ode23t can solve problems with a mass matrix that is singular, i.e., differential-algebraic equations (DAEs). tspanA vector specifying the interval of integration, [t0,tf]. To obtain solutions at specific times (all increasing or all decreasing), use tspan = [t0,t1,...,tf].y0A vector of initial conditions.optionsOptional integration argument created using the odeset function. See odeset for details.p1,p2...Optional parameters that the solver passes to odefun and all the functions specified in optionsnullDescription [T,Y] = solver(odefun,tspan,y0) with tspan = [t0 tf] integrates the system of differential equations from time t0 to tf with initial conditions y0. Function f = odefun(t,y), for a scalar t and a column vector y, must return a column vector f corresponding to . Each row in the solution array Y corresponds to a time returned in column vector T. To obtain solutions at the specific times t0, t1,...,tf (all increasing or all decreasing), use tspan = [t0,t1,...,tf]. [T,Y] = solver(odefun,tspan,y0,options) solves as above with default integration parameters replaced by property values specified in options, an argument created with the odeset function. Commonly used properties include a scalar relative error tolerance RelTol (1e-3 by default) and a vector of absolute error tolerances AbsTol (all components are 1e-6 by default). See odeset for details. Example 1. An example of a nonstiff system is the system of equations describing the motion of a rigid body without external forces. nullTo simulate this system, create a function rigid containing the equations function dy = rigid(t,y) dy = zeros(3,1); % a column vector dy(1) = y(2) * y(3); dy(2) = -y(1) * y(3); dy(3) = -0.51 * y(1) * y(2); In this example we change the error tolerances using the odeset command and solve on a time interval [0 12] with an initial condition vector [0 1 1] at time 0. options = odeset('RelTol',1e-6,'AbsTol',[1e-6 1e-6 1e-5]); [T,Y] = ode45(@rigid,[0 12],[0 1 1],options); Plotting the columns of the returned array Y versus T shows the solution plot(T,Y(:,1),'-',T,Y(:,2),'-.',T,Y(:,3),'.')nullnullExample 2. An example of a stiff system is provided by the van der Pol equations in relaxation oscillation. The limit cycle has portions where the solution components change slowly and the problem is quite stiff, alternating with regions of very sharp change where it is not stiff. To simulate this system, create a function vdp1000 containing the equations function dy = vdp1000(t,y) dy = zeros(2,1); % a column vector dy(1) = y(2); dy(2) = 1000*(1 - y(1)^2)*y(2) - y(1); For this problem, we will use the default relative and absolute tolerances (1e-3 and 1e-6, respectively) and solve on a time interval of [0 3000] with initial condition vector [2 0] at time 0. [T,Y] = ode15s(@vdp1000,[0 3000],[2 0]); plot(T,Y(:,1),'-o')nullnullPlot(t,y(:,2))null 6.6 面向结构图的仿真程序设计 面向结构图的线性系统仿真基本思想为: (1) 把一个复杂的高阶线性系统化成由若干典型环节组成的模拟结构图表示。 (2) 将各典型环节参数以及系统各环节的连接关系输入计算机。 (3) 仿真程序将输入的系统模型自动转化为状态空间描述,即状态方程形式。 (4) 调用数值积分法求解,并输出仿真结果。 null典型环节的确定及算法描述 典型环节的选择是重要的一个步骤,它应具备下述两个原则: (1) 典型性——由它可方便地组成其它任何形式的动态环节。 (2) 简易性——由它组成的系统简便,计算机编程容易实现。 常见的动态环节 根据控制理论可知,在实际控制系统中比较常见的动态环节主要有以下五种: (1) 积分环节 (2) 比例积分环节 (3) 惯性环节 (4) 一阶超前(或滞后)环节 (5) 二阶振荡环节 null 6.5 快速仿真算法 在对系统进行仿真时,会碰到较高阶次的控制系统,由于采用的计算机档次不高会影响到仿真计算速度,占用较长的机时;在参数寻优时往往需要对控制系统进行反复的仿真计算,也将使计算过程加长;此外,系统的实时仿真也会对仿真的快速性提出较高的要求。对于前面所讨论的数值积分法由于有相应的计算工作量,单纯加大仿真步长会影响到系统仿真的精度和稳定性问题。 本节介绍几种常用的快速仿真方法,采用这些方法来编制仿真计算子程序,可以弥补数值积分法仿真在速度上的缺陷,便于在实际工程中系统仿真时合理地加以选择,达到提高系统仿真速度的最终目的。null6.5.1 时域矩阵法 时域矩阵法是一种在时域内采用无穷矩阵进行系统仿真的算法,它每一步的计算量较小,而且与系统阶次无关,适合于系统的快速仿真。 采用时域矩阵法来分析和讨论系统的动态性能具备下述特点: (1)时域矩阵法多用于采样控制系统,由于采用脉冲过程函数g(t)来计算系统的闭环响应,不会因系统阶次的增加而加大计算工作量,从而提高了仿真速度;但有时求解高阶系统的脉冲过程函数g(t)会有一定的难度。 (2)由于每个采样时刻的g(k)是准确计算出来的,所以采用时域矩阵法仿真时系统的采样周期(或仿真步距)可以选得大些。 (3)时域矩阵法可推广到非线性系统的快速仿真。 null6.5.2 增广矩阵法 增广矩阵法是将系统的控制量增广到状态变量中,使原来的非奇次常微分方程变为一个齐次方程。 6.5.3 替换法 快速仿真的系统通常比较关注系统仿真的速度应该达到规定的要求,而对精度一般不做太高的要求。对于一个高阶系统,如果能从它的传递函数G(s)直接推导出与之相匹配的并且允许较大采样周期T的脉冲传递函数G(z),然后由G(z)获得仿真模型,这将对提高仿真速度十分有利。相匹配的含义是指若G(s)是稳定的,那么G(z)也是稳定的,同时,当输入相同外作用信号时,由G(z)求出的响应和由G(s)求出的响应具有相同的特征。 要设法找出s与z的对应公式,将G(s)中的s替换为z,求得G(z)的表达式,这种方法称为替换法。 null6.5.6 根匹配法 为了实现对控制系统进行快速仿真,应构造一个G(z),它允许较大的采样周期T,且能保证G(z)在零、极点分布上与G(s)一致,动态响应也一致,这种方法称为根匹配法。 根匹配法的一般步骤 按照前面的分析,采用根匹配法构造G(z)应满足以下条件: (1)G(z)与G(s)具有相同数目的零、极点。 (2)G(z)与G(s)的零、极点相互匹配。 (3)G(z)与G(s)的终值应相等。 (6)G(z)与G(s)具有相同的动态响应。 本章小结 本章小结 本章主要介绍了数值积分法的仿真原理和特点;采用数值积分法面向微分方程、结构图进行仿真的基本思路和程序设计;仿真的精度与系统稳定性讨论;快速仿真算法等内容。 在数值积分法中,要熟悉典型环节的选择,确定系统中各环节之间的连接关系;能根据特定的仿真系统,选择合适的仿真变量及参数,确定正确的系数矩阵;掌握CSS1、CSS2程序的结构、各变量含义以及程序的运行特点;熟悉程序的输入、调试,仿真结果的分析和系统性能的讨论。 此外,对于仿真系统的精度和稳定性问题也是非常重要的,要理解仿真过程中的3类误差产生的原因,制定消除误差的方法,合理地选择仿真步长,保证系统在稳定的前提下,尽量提高系统仿真的精度和速度。 为了提高系统仿真的速度,可以合理地选择6种常用的快速仿真方法。
本文档为【6 数值积分法仿真】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_399740
暂无简介~
格式:ppt
大小:480KB
软件:PowerPoint
页数:0
分类:其他高等教育
上传时间:2013-01-20
浏览量:21