MATLAB控制系统仿真
第三章 连续系统数值积分仿真方法学
主讲教师:姜萍
MATLAB控制系统仿真
第三章 连续系统数值积分仿真方法学 第一节 第二节 数值积分法的基本原理 数值积分法的单步算法
第三节
数值积分法的多步算法
MATLAB控制系统仿真
如何把已建立起来的数学模型转换成仿真运 算模型(二次建模),以便为分析解决实际问题 服务那是系统仿真学科的一个重要研究内容。
对于复杂的数学模型来说,求其解析解是很 烦琐和困难的,大多数情况下不求出解析解,或 者根本不存在解析解,因此借助于数值解法对连 续系统进行仿真研究。用计算机不可能求出系统的解析解(连续) 只能求出连续响应曲线上的有限个点,即数值解
MATLAB控制系统仿真
描述各类系统最基本的模型用微分方程或状 态空间表达式,二次建模就是要求出适合用数字 计算机求解的模型,就需要把微分运算转化成算 术运算在用计算机求解。 连续系统数值积分法:就是利用数值积分方 法对常微分方程建立离散化形式的数学模型(差 分方程)并求出数值解。最常用的数值解法有: 欧拉法、梯形法、Adams、Runge—Kutta法。
MATLAB控制系统仿真
第一节
数值积分法的基本原理
以一阶连续系统为例,微分方程及初值如下: 首先把需仿真研究的系统表示成一阶微分方程组或 状态方程的形式。 x (t ) f (t , x,u(t )) x (t ) x 0 0
连续解为:x(t ) x(t0 ) f (t , x, u (t ))dt在时间点 t t0,t1,t2, ,t n, 处的解为:t0
t n 1
x ( t n 1 ) x ( t 0 )
t n 1 t0
f ( t , x , u(t ))dtt n 1 tn
x(t0 ) f (t , x, u (t ))dt f (t , x, u (t )) dtt0
tn
x(tn 1 ) x(tn ) f (t , x, u (t ))dttn
t n 1
MATLAB控制系统仿真
t 希望找到一个近似公式 xn 1 xn Qn x( t n 1 ) x( t n ) f ( t , x , u( t ))dt t 来表示方程的近似解: tn 1
Qn x n 为精确值 x (t n )的近似值n
n 1
f ( t , x , u( t ))dt
tn
Qn 为准确积分值
t n 1
所谓微分方程初值问题的数值解法就是寻求 真解在一系列离散点 t t1 t(精确值) x(t ), x(t ), , x( ), tn 2
tn
f (t , x ,u(t ))dt 的近似值
上的近似解 x1, x 2, , x n , (数值解) 相邻两个时间离散点的间隔 hn t n 1 t n 称为计 算步距或步长,通常情况为定值,也有变步长。
1
2
n
MATLAB控制系统仿真
MATLAB控制系统仿真
可见,微分方程初值问题数值解法的主要问 题归结为对t n 1
tn
f (t, x,u(t ))dt
如何求出定积分的近似解
为此,要先把连续的微分方程用数值积分法 转化为离散的差分方程的初值问题,然后根据初 始条件X0逐步递推计算出后续时刻 ,t2, ,tn, t1
的数值解:x1, x2, , xn, 数值解法的共同特点是步进式的递推算法, 主要有:单步法、
多步法和预估-校正法,并有 显式和隐式之分。
MATLAB控制系统仿真
第二节
数值积分法的单步算法
一、欧拉法(Euler Method)Euler法是最简单的一种数值积分法的单 步运算,虽然计算精度较差,但几何意义明显, 便于理解,能说明构造数值积分算法的基本思 想。 下面采用三种方法推导出Euler法的数值 近似公式,以便对数值积分器的基本思想能透 彻了解。
MATLAB控制系统仿真
1、Taylor级数展开以一阶连续系统为例, x (t ) f (t , x,u(t )) x (t ) x 微分方程及初值如右: 0 0 x(t)为解析解,将x(t)展开成Taylor级数只取一次项,其余忽略 x (t n 1) x (t n ) x (t n )h x (t n ) 2 x (t n 1) x (t n h) x (t n ) x (t n )h h 2!
x (t n ) f (t n , x n ,un )h
写成差分方程为 x n 1 x n hf (t n , x n ,un ) 这就是解微分方程初值问题的欧拉算法。
MATLAB控制系统仿真
2、矩形近似 x (t ) f (t , x,u(t ))在 对方程 x (t ) x tn ,tn 1 上求积分 0 0t n 1
x (t n 1) x (t n )
把积分区间 h 取得足够小,将 f (t, x,u(t )) 在 t n ,t n 1 近似为常数 f (t n , x n ,un (t )) 用左矩形面积近似该区 间的曲线面积 x (t n 1) x (t n ) f (t n , x n ,un )h 也能得到:x n 1 x n hf n
tn
f (t , x,u(t ))dt
MATLAB控制系统仿真
左矩形(也称为前向欧拉法)近似及误差
f(t) 误差 fn
fn+1
左矩形近似
tn
tn+1
t
MATLAB控制系统仿真
t n 1
对积分
x (t n 1) x (t n )
将 f (t, x,u(t )) 在 t n ,t n 1 近似为常数f (t n 1, x n 1,un 1(t ))
tn
f (t , x,u(t ))dt
用右矩形面积近似该区间的曲线面积x (t n 1) x (t n ) f (t n 1, x n 1,un 1)h
得到:
x n 1 x n hf n 1
这是右矩形欧拉公式,是一个隐式算法.
MATLAB控制系统仿真
右矩形(也称为后向欧拉法)近似及误差
f(t) fn
误差
fn+1
右矩形近似
tn
tn+1
t
MATLAB控制系统仿真
3、切线近似(1) 在 t n 的一个小邻域内,曲线x(t)可用 t n 处的切 t n 处的斜率为: 线来表示, x(t) 在
过点 t n , x n 以 fn 为斜率的切线方程为: x x n f (t n , x n ,un )( t t n ) 取切线上t n 1 处的值来近似 x (t n 1)x (t n 1) x (t n ) hf (t n , x n ,un )
dx f (t n , x n ,un (t )) dt t t n
也能得到: x n 1 x n hf n
前向欧拉法
MATLAB控制系统仿真
3、切线近似(2)
在 t n ,t n 1 曲线 x(t) 可用t n 1 处的切线来表示, x(t) 在 t n 1 处的斜率为: 过点 t n , x n 以 fn+1 为斜率的切线方程为: x x n f (t n 1, x n 1,un 1)(t t n ) 取切线上 t n 1 处的值来近似 x (t n 1)x (t n 1) x (t n ) hf (t n 1, x n 1,un 1)dx f (t n 1, x n 1,un 1(t )) dt t t n 1
也能得到:
x n 1 x n hf n 1 后向欧拉法