数值积分法仿真
连续系统数值积分法仿真Matlab编程公开课一等奖优质课大赛微课获奖课件

第2页2
function [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=x0; %当前一步x curu=u0; %当前一步u cury=y0; %当前一步y for i=1:1:cntt-1
第161页6
2. 模型描述函数结构
(1)状态方程
function derX=sat_StateEqu(curt,curx,curu) G=401408; derX(1)=curx(3); derX(2)=curx(4); derX(3)=-G/(curx(1)*curx(1))+curx(1)*curx(4)*curx(4); derX(4)=-2*curx(3)*curx(4)/curx(1); derX=derX’;%转换为列向量 (2)输出方程
(3)系统控制计算函数w_SysControl
function ControlU=w_SysControl(curt,h,curx,curu,cury)
% ControlU=w_sysControl(curt,h,curx,curu,cury)
% 函数功效: 计算系统控制,如u=PID(t,curx,cury)
第8页8
(2)系统输出函数w_SysOutput
第3-1章 连续系统数值积分法仿真Matlab编程

函数w_DigiInteSimu和w_StepIntegral构造了一个数值积分法 仿真的框架,并不涉及具体的系统。
具体的系统由StateModel,ControlFile,OutputFile参个参数决定, 实际上就是三个函数文件名,这三个函数输入输出参数必须遵循特定 的格式,在准备好由这3个函数描述的系统后,调用w_DigiInteSimu 即可进行仿真。 还需要一个调用w_DigiInteSimu进行仿真的程序,它指定模型文 件,指定初始参数,并且对仿真结果绘图。
2
function [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=x0; %当前一步的x curu=u0; %当前一步的u cury=y0; %当前一步的y for i=1:1:cntt-1 curu=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(:,i+1)=cury‘;%将输出加入到输出序列里 end
实验:控制系统数字仿真之数值积分法

实验:控制系统数字仿真之数值积分法实验目的:学会并掌握数值积分法的基本原理和方法,了解欧拉法,梯型法,龙格一库塔法的区别,并熟练地使用这些方法。
观察并分析整体离散法、分环节离散法、欧拉法、梯形法、龙格•库塔法这几种方法原理上的差别,分析他们各自的优缺点。
实验原理:欧拉法:欧拉法是最简单的单步法,它是一阶的,精度较差。
但由于公式简单,计算方便,也易于理解,所以在讨论微分方程初值问题的数值解时通常先讨论欧拉法。
梯形法:梯形法与欧拉法相比,梯形法的e要比欧拉法的e更接近实际值,它舍弃的部分更少,它在每一步中用了两个点的输入,使得计算更加精确。
龙格•库塔法:龙格一库塔法是采用间接利用台劳展开式的思路,即用在n 个点上的函数值的线性组合來代替的导数,然后按台劳展开式确定其中的系数, 以提高算法的阶数。
这样既能避免计算函数的导数,同时乂保证了计算精度。
由于龙格薦法具有许务优点,故在许IM:包中,它是•个最垄本的算法之一。
实验过程:分环节离散法得出的响应曲线:整体离散法得出的响应曲线:用一阶欧拉法得出的系统响应曲线:欧拉法是求出当前系统的斜率(变化规律),假设这个变化规律在下一次变化前不改变。
那么系统下一次值就能够通过4 .当前值2.斜率3.步长来确定。
比如说系统当前值x (t),斜率x ' (t),仿真步长dt。
那么x (t+dt) =x (t) +x' (t) *dt程序代码:clc; close all; clear all;sampleTime = 0・l;simuTime = 2000;t=sampleTime:sampleTime:simuTime;K=1・2; n=3; T=20;[kp,ki]=PID_Gain(l・ 20z3, 0);x=zeros(l r 4);fori=l:fix(simuTime/sampleTime)u(i)=l;endfori=l:fix(simuTime/sampleTime)e=ST_RK_l(X/ u(i)f kp r ki r T z K, n);x=xfe*sampleTime;y (i)=x(4);endplot (t r y);匸ext=Tvaiuel(y,sampleTime);legend (text);自程序ST_RK_1代码:function E=ST_RK_1(x r u f kp f ki z T r K z n) E(l) = (u-x(4))*ki;E(2)=(x(l)+kp*E(l)/ki)*K/T-x(2)/T;E (3)=x(2)/T-x(3)/T;E(4)=x(3)/T-x(4)/T;end用梯形法得出系统响应曲线:X = e(r)e[(kH)T]e(kT)牙[e(灯)+ e[伙+ 1)门]X(kT) kT (k+l)T 上若采用欧拉法,误差为红色曲线围成的面积,而如果用梯形法,误差减少为蓝色曲线闱成的面积。
实验一 面向微分方程的数值积分法仿真

实验一面向微分方程的数值积分法仿真一、实验目的1.掌握数值积分法的基本概念、原理及应用;2.用龙格-库塔法解算微分方程,增加编写仿真程序的能力; 3.分析数值积分算法的计算步长与计算精度、速度、稳定性的关系; 4. 对数值算法中的“病态问题”进行研究。
二、实验内容1、已知系统微分方程及初值条件,(0)1yt y y =+= 取步长0.1h =,试分别用欧拉方程法和RK4法求2t h =时的y 值,并将求得的值与解析解()21t y t e t =--比较(将三个解绘于同一坐标中,且用数值进行比较),说明造成差异的原因。
(①编程完成;②选用MATLAB ode 函数完成。
) 程序代码如下:t0=0; tf=2; h=0.1; y1=1; y2=1; y3=1; t1=0; t2=0; t3=0n=round(tf-t0)/h; for i=1:ny1(i+1)=y1(i)+h*(2*h+y1(i)); t1=[t1,t1(i)+h]; end for i=1:nk1=y2(i)+t2(i);k2=y2(i)+h*k1/2+t2(i)+h/2; k3=y2(i)+h*k2/2+t2(i)+h/2; k4=y2(i)+h*k3+t2(i)+h;y2(i+1)=y2(i)+h*(k1+2*k2+2*k3+k4)/6; t2=[t2,t2(i)+h]; end for i=1:ny3(i+1)=2*exp(t3(i))-t3(i)-1; t3=[t3,t3(i)+h];endplot(t1,y1,'r',t2,y2,'g',t3,y3,'k') 实验结果如下;00.51 1.52 2.524681012分析:红线为用欧拉法得到的结果,绿线为用四阶龙格—库塔法得到的结果,蓝线为根据解析方程得到的结果。
其差异原因主要有两个:1、二者的方法不同,欧拉法是根据一阶微分方程计算得到的,龙格—库塔法是根据四阶微分方程得到的;2、由于步长取为0.1,所以得到的图像与解析解之间存在差异,若将步长取小,则得到的解将更靠近解析解。
实验一面向方程的数值积分方法仿真(线性定常系统)

实验一:面向方程的数值积分方法仿真(线性定常系统)1. 实验目的:加深理解四阶龙格--库塔法的原理及其稳定性。
2. 实验内容:对下列系统进行仿真(1) 线性定常系统[]⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡+⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡321001600032100300110000110321...x x x y u x x x x x x , 其初值为:)]2(1)(1[)(000)0(3)0(2)0(1--⨯=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡t t t t u x x x (2) 非线性系统⎪⎩⎪⎨⎧+-=-=)()()()()()()()(t y t bx t sy dtt dy t y t ax t rx dt t dx ① r=0.001,a =2*104,s=0.015, b =10 - 4;x(0)=1200,y(0)=600② r=0.001,a =2*10 - 6,s=0.01, b =10 - 6;x(0)=12000,y(0)=6003. 实验要求:(1) 为保证稳定性,分析系统(1)的最大仿真步长(方法自选,保留两位有效数字);(2) 设计Matlab 或 C 程序,用四阶龙格库塔法进行仿真计算,改变参数及仿真步长,观察实验结果,寻找最适宜的仿真步长和临界仿真步长。
4. 实验报告:(1) 实验所用程序清单;(2) 实验结果及分析。
注:实验报告可以采用电子文档(标明图号)+书面形式,其中书面报告内容为:(1) 系统(1)最大步长的理论分析;(2) 仿真结果分析;书面报告中不必列出实验题目与结果图(以下同)。
实验二:面向结构图的线性系统仿真1. 实验目的学习基于Simulink 面向结构图进行数字仿真的原理及方法(请使用Matlab6.1附带的Simulink 版本)。
2. 实验内容(1) 用Simulink 实现以下的仿真系统结构图(2) 当r(t)=1(t)时,对系统进行仿真;(3) 当r(t)=⎩⎨⎧>≤s t t s t t 5.1),(15.1,5时,对系统进行仿真。
实验一 数值积分算法仿真实验

3
计算机仿真输出图像 h=0.05
h=5.00
h=10.00
4
(3) 四阶龙—库法 数值积分算法如下: 数学模型为 设
初始值为 0;
计算机仿真程序 x1=0; x2=0; t0=0;tf=200;h=0.8; y=0; t=t0; n=round((tf-t0)/h); for i=1:n k11=x2; k21=1-x1-0.1*x2; k12=x2+h/2*k21; k22=1-(x1+h/2*k11)-0.1*(x2+h/2*k21); k13=x2+h/2*k22; k23=1-(x1+h/2*k12)-0.1*(x2+h/2*k22); k14=x2+h*k23; k24=1-(x1+h*k13)-0.1*(x2+h*k23); x1=x1+h/6*(k11+2*k12+2*k13+k14); x2=x2+h/6*(k21+2*k22+2*k23+k24); y=[y,x1]; t=[t,t(i)+h]; end [t',y'] plot(t,y) grid gtext('RK-4') gtext('h=0.8')
5
计算机仿真输出图像 h=0.80
h=5.00
h=10.00
6
实验结论
1、 2、 3、 4、 数值积分算法对仿真建模有三个基本要求:稳定性、准确性、快速性; 随着步距 h 的增大,仿真结果准确性逐渐降低,但速度也随之降低; 在三次仿真中, 四阶龙-库法精度最高, 可以看出, 计算量增加精度提高; 在不同的仿真计算中,要综合考虑要求精度及其运行速度选择合适的仿 真方法及步距,在既保证精度的情况下提高计算速度。
计算机仿真数值积分法系统仿真PPT学习教案

y(t n ) 计算
2.1 概述
y(t n1 ) 需要的时间为Tn,若
hn tn1 tn ,
3 . 数 值 积分 算法:
y f (y ,u,t )
对
, 已 知 系 统 变量
求
y
随 时 间 变 化 的过程
y(t ) --初值问题
y 的初始条件
y(t0 ) y0
第5页/共65页
2.1 概述
计 算 过 程 : 由初始 点
2.1 概述
第1页/共65页
1. 相 似 原 理 设系统模型为
y f (y ,u,t )
其 中 u (t)为输 入变量 ,y(t)为 系统变 量;令 仿真时 时间隔 为h, 离散化 后的输 入变量 为
uˆ(t ) n
系统变量为
yˆ (tn )
其中
tn
表示
t=nh
如果
uˆ(tn ) u(tn )
绝 对 误 差 准 则:
ey (tn ) yˆ(tn ) y(tn )
相 对 误 差 准 则:
ey (tn )
yˆ(tn ) y(tn ) yˆ(tn )
其 中 规 定 精 度的 误差量
第4页/共65页
( 3 ) 快 速性 :若第 n步计 算所对 应的系 统时间 间隔为
计算机由
T n =h n 称 为实时 仿真 T n h n 称为 超实时 仿真 T n h n 称 为亚实 时仿真
例 : 就 初 值 问题
考 察欧 拉显式 格式的 收敛性 。
y yy(ຫໍສະໝຸດ ) y0解:该问题的精确解为
欧拉公式 为
y( x) y0e x yi1 yi h yi (1 h) yi
x = x = i h 对任意固定的
仿真_3_数值积分法

f(t)
fn+1
f(t)
误差
fn
左矩形近似
tn
tn+1
t
t
f(t)
f(t)
t
t
二、梯形法
Euler法的计算精度较差,如果改用梯形面 积代替每个步距的曲线面积,就可提高精度。
精确积分应为曲边梯形的面积: tn1 f (t, x,u(t ))dt
现用直边梯形的面积来近似: tn
tn 1
f(t,x ,u (t)d ) t2 1hftn ,x n ,u nftn 1 ,x n 1 ,u n 1
最常用的数值解法有:
欧拉法、梯形法、Adams、Runge—Kutta法。
第一节 数值积分法的基本原理
以首一先阶把连需续仿系真统研为究例的,系微统分表方示程成及一初阶值微如分下方:程组或
状态方程的形式。 x(t)f(t,x,u(t)) x(t0)x0t
连续x解 (t)x(为 t0): f(t,x,u(t)d ) t
取切线上 t n 1 处的值来近似 x(tn1)
x ( t n 1 ) x ( t n ) h ( t n 1 f , x n 1 , u n 1 )
也能得到: xn1xnhn f1后向欧拉法
欧拉法(切线推导)的几何意义
欧拉法实际计算时的几何意义
例:设系统方程 y (t)y2(t)0,y(0)1
后向 yn欧 yn 1h 拉 (tfn,yn)
前向 yny 欧 n 1h(拉 tfn 1,yn 1)
后向 yn欧 yn 1h 拉 (tfn,yn)
f(t)
fn+1
误差
fn
误差
f(t)
fn+1
SS03_数值积分法仿真

第二节 单步法
引理:泰勒级数:如果f(x)在x0点处任意阶可导,则 在该邻域内的n阶泰勒公式为:
f ( x) = ∑
n= n =0
N
f ( n ) ( x0 ) ( x − x0 ) n + Rn ( x) n!
f ( N +1) (ξ ) 其中:RN ( x) = ( x − x0 ) N +1 称为拉格朗日余项 ( N + 1)!
y (t )
截断误差 ∝ h 2
dy dt
dy = f ( y, t ) = ym + K ⋅ h K = f ( ym , t m )
t
ym+1 = ym + K ⋅ h K = f ( ym , tm )
t
tm
h
t m +1
tm
h
tm +1
第 11 页
通常设法寻找一个低一阶的龙格-库塔公式,两者的结果之 差可以设为误差。为减少计算量,Ki通常要求公用。 Runge-Kutta-Merson法 (RK34)
K1 = K = 2 K3 = K 4 = K = 5 f ( ym , t m ) h h h f ( y m + K1 , t m + ) 四阶五级公式: ym +1 = ym + (K1 + 4 K 4 + K 5) 3 3 6 h h h f ( y m + ( K1 + K 2 ) , t m + ) ˆ 三阶4级公式:ym +1 = ym + (3K1 - 9 K 3 + 12 K 4) 6 3 6 h h f ( y m + ( K1 + 3 K 3 ) , t m + ) h 8 2 误差 : Em = (2 K1 - 9 K 3 + 8 K 4 - K 5) h 6 f ( y m + ( K1 + 4 K 4 − 3 K 3 ) , t m + h ) 2
实验一 数值积分算法仿真实验

实验一数值积分算法仿真实验数值积分算法是对微积分中每个基本概念的具体应用,它被广泛应用于数学、工程、物理学、计算机科学等领域。
实验一旨在通过仿真实验来理解数值积分的基本原理以及各种算法的优劣。
1. 实验目的通过本实验,我们将探索数值积分算法的基本原理,以及了解求解积分的各种算法的使用方法和适用范围。
具体而言,本实验的目的包括:1. 理解数值积分的基本原理和方法。
2. 掌握数值积分算法的使用方法和步骤。
3. 比较不同积分算法的优缺点,了解它们适用的范围。
2. 实验内容本实验的具体内容包括:1. Simpson 积分算法的仿真实验3. 辛普森—三分积分算法的仿真实验4. 实验结果的分析与比较3. 实验原理在本次实验中,我们将介绍三种数值积分算法,分别是 Simpson 积分算法、梯形积分算法和辛普森-三分积分算法。
Simpson 积分算法也称为复化 Simpson 公式,是一种求解一定区间内函数积分值的数值计算方法。
这种方法的基本思路是将区间内的几何图形近似为二次函数,从而完成积分的近似计算。
具体而言,这种方法是通过将区间内的函数曲线分成若干个小区间,计算每一个小区间内的积分值,最后将这些积分值加起来得到整个区间内的积分值。
Simpson 积分公式如下所示:$I=\frac{h}{3}(f(x_0)+4f(x_1)+2f(x_2)+4f(x_3)+2f(x_4)+...+4f(x_{n-1})+f(x_n))$其中,$n$ 表示小区间的数目,$h$ 表示每个小区间的长度,$f(x_i)$ 表示区间内的函数值。
3.2 梯形积分算法辛普森-三分积分公式如下所示:$I=\frac{2b-a}{6n}(f(a)+f(b)+2\sum_{j=1}^{n/2}f(x_{2j})+4\sum_{j=1}^{n/2-1}f(x _{2j + 1}))$```% Simpson 积分算法function result = simpson(a,b,f,n)h = (b-a)/n;x = a:h:b;y = f(x);result = h/3*(y(1) + 4*sum(y(2:2:n)) + 2*sum(y(3:2:n-1)) + y(n+1));end我们可以通过实验数据来比较不同积分算法的优缺点。
计 算 机 仿 真 技 术第三章 数值积分法在系统仿真中的应用

取 c2 1,得
W1=
W2=
1 2
a21 1
故得二阶龙格—库塔法计算公式
yn1
yn
1 2
K1
K2
K1 hf tn , yn K2 hf tn h, yn K1
(3.1.19)
由于(3.1.13)式中只取了 h ,h 2两项,而将h 2 以上的高阶项 忽略了,所以这种计算方法的截断误差正比于h 3。
ytn
h
ytn
hf
tn ,
yn
h h2 2!
f
tn ,
yn
将(3.1.4)式在
Rn
1 2!
h2
f
tn
,
yn
以后截断,即
得(3.1.3)式的欧拉公式,Rn称为局部截断误差,
它与 h2成正比,即 Rn O h2
(3.1.5)
另外,解以t 0开始继续到t tn ,所积Βιβλιοθήκη 的误3.1.2龙格—库塔法
欧拉法是将 y f t, y, yt1 y0在 tn点附近 的 ytn h经台劳级数展开并截去 h2以后各项得到
的一阶一步法,所以精度较低。如果将展开式 (3.1.4)式多取几项以后截断,就得到精度较高的 高阶数值解,但直接使用台劳展开式要计算函数 的高阶导数。龙格—库塔法是采用间接利用台劳 展开式的思路,即用在n个点上的函数值f的线性 组合来代替f的导数,然后按台劳展开式确定其中 的系数,以提高算法的阶数。这样既能避免计算 函数的导数,同时又保证了计算精度。由于龙 格—库塔法具有许多优点,故在许多仿真程序包 中,它是一个最基本的算法之一。
【免费下载】实验一 面向微分方程的数值积分法仿真

y t y, y(0) 1
取步长 h 0.1 ,试分别用欧拉方程法和 RK4 法求 t 2h 时的 y 值,并将求得的值与解析解
y(t) 2et t 1 比较(将三个解绘于同一坐标中,且用数值进行比较),说明造成差异的原
因。(①编程完成;②选用 MATLAB ode 函数完成。) 程序代码如下: t0=0; tf=2; h=0.1; y1=1; y2=1; y3=1; t1=0; t2=0; t3=0 n=round(tf-t0)/h; for i=1:n
12
10
8
6
4
2
0
0
0.5
1
分析:红线为用欧拉法得到的结果,绿线为用四阶龙格—库塔法得到的结果,蓝线为根据 解析方程得到的结果。其差异原因主要有两个:1、二者的方法不同,欧拉法是根据一阶微 分方程计算得到的,龙格—库塔法是根据四阶微分方程得到的;2、由于步长取为 0.1,所 以得到的图像与解析解之间存在差异,若将步长取小,则得到的解将更靠近解析解。
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根通保据过护生管高产线中工敷资艺设料高技试中术卷资,配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高与中带资负料荷试下卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试,.卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试交写5、卷底重电保。要气护管设设装线备备置敷4高、调动设中电试作技资气高,术料课中并3中试、件资且包卷管中料拒含试路调试绝线验敷试卷动槽方设技作、案技术,管以术来架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内 纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
计算机仿真实验3数值积分算法

实验三 利用数值积分算法的仿真实验学号: 姓名: 学院:一. 实验目的1) 熟悉MATLAB 的工作环境;2) 掌握在MATLAB 命令窗口调试运行程序;3) 掌握M 文件编写规则及在MATLAB 命令窗口运行程序;4) 掌握利用欧拉法、梯形法、二阶显式Adams 法及四阶龙格库塔法构建系统仿真模型的方法,并对仿真结果进行分析。
二.实验内容电路如图1所示电路进行仿真试验。
电路元件参数:V E 1=,Ω=10R ,H L 01.0=,F C μ1=。
电路元件初始值:A i L 0)0(=,V u c 0)0(=。
系统输出量为电容电压)(t u c 。
DCRC )(t u c +-)(t i L 图1 RLC 串联电路E三. 实验步骤1. 求连续系统传递函数根据所示电路图,我们利用电路原理建立系统的传递函数模型,根据系统的传递函数是在零初始条件下输出量的拉普拉斯变换与输入量的拉普拉斯变换之比,可得该系统的传递函数:LCLs R s LCs E s U s G C /1//1)()()(2++==2. 离散系统仿真模型在连续系统的数字仿真算法中,较常用的有欧拉法、梯形法、二阶显式Adams 法及显式四阶Runge-Kutta 法等。
欧拉法、梯形法和二阶显式Adams 法是利用离散相似原理构造的仿真算法,而显式四阶Runge-Kutta 法是利用Taylor 级数匹配原理构造的仿真算法。
对于线性系统,其状态方程表达式为:()()()()()()t t t t t t ⎧=+⎨=+⎩x Ax Bu y Cx Du 00)(x x =t 式(3-1)中,[]Tn t x t x t x )()()(21 =x 是系统的n 维状态向量,[]Tm t u t u t u t )()()()(21 =u 是系统的m 维输入向量,[]Tr t y t y t y t )()()()(21 =y 是系统的r 维输出向量。
第5章 数值积分法仿真

例如,为了考查欧拉法的稳定性,我们研究检验方程 (Test Equation): y y
其中, 为方程的特征根,对此有:
y n 1 y n hy n (1 h ) y n
(5-14)
显然,要使该差分方程是稳定的,必须使下式成立。
1 h 1
即:
h 2
5.1 仿真中研究数值积分法的意义
数值积分法是求解微分方程:
dy f (t , y ) y dt y (t ) y 0 0
(5-1)
数值解的一种近似方法。对于连续系统的高阶微分方程, 可化为若干个一阶微分方程组成的方程组。 例如:下式所示的状态方程 x Ax Bu 可以化为一个一阶微分方程组
从理论上讲,可以构造任意阶数的龙格-库塔方法, 但是,精度的阶数与计算函数值f 的次数之间并非等量增 加的关系,见下表所列:
表 5.1
每 一 步 计算 f 的 次 数 精度阶数 2 2
f 的计算次数与精度阶数的关系
3 3 4 4 5 4 6 5 7 6 N≥ 8 n -2
预估式 y n 1 y n hf ( t n , y n )
p
校正式 y
C n 1
yn
h 2
(5-12)
P
[ f (t n , y n ) f
( t n 1 , y n 1 )]
P
——改进的欧拉公式
5.3.3 几个基本概念
1、单步法与多步法 简单的欧拉法是用前一时刻tn的yn求出后一时刻的yn+1, 这种方法称为单步法,它是一种自行启动的算法。如果求 yn+1时需要tn , tn-1 , tn-2 ……时刻yn , yn-1 , yn-2 ……的值,这种 方法为多步法(改进的欧拉法为两步法),它是一种不能 自行启动的算法。
数值积分法在系统仿真中的应用省公开课一等奖全国示范课微课金奖PPT课件

在方程(3 18)式中,令W1
0可得W2
1, c2
1 2
, 此时,
(3 18)式化为
yn1 yn hk2
k1 f (tn , yn )
k2
f
(tn
h 2
,
yn
h 2
k1)
(3-39)
第20页
第三章 数值积分法在系统仿真中的应用
其流程图如图3-7:
采入u(tn
h 2
)
计算yn 1 , 并输出
当前解刚性方程数值方法基本分为:
显式公式
隐式公式
预测校正
第16页
第三章 数值积分法在系统仿真中的应用
显式公式惯用雷纳尔法。其中着眼点是,在确保稳定前提下,尽 可能地扩大稳定区域。这一方法优点是,它是显式,所方便于程序 设计。对普通好方程设计。对普通条件好方程,它就还原为四阶龙 格-库塔方法,而对刚性方程它又有增加稳定性好处。
第三章 数值积分法在系统仿真中的应用
第三章 数值积分法在系统仿真中应用
3.1 连续系统仿真中惯用数值积分法……………. 3.2 刚性系统特点及算法…………………………. 3.3 实时仿真法………………………………………. 3.4 分布参数系统数字仿真………………………. 3.5 面向微分方程仿真程序设计…………………. 本章小结……………………………………………….
当k=2时,得到亚当斯多步法计算公式,(3-28)式各系数为
v0 1
v1
1 0
f n ds
1 2
将v0 , v1代入(3 27)式得
y (t n 1 )
y(tn )
1 2
h(3
fn
f n 1 )
(3-29)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
y (0) k 1
yk
hf
(tk ,
yk )
yk
1
yk
1 2
h[
f
(t
k
,
y
k
)
f (tk 1 , y (0) k 1 )]
龙格-库塔法的基本原理
在连续系统仿真中,主要的数值计算
工作是求解一阶微分方程:dy
dt
f
(t,
y)
若已知y的初值y0,再按离散化原理,对上
式我们可以写成:y(t ) k1
y(tk)
tk1
tk
f
(t,
y)dt
再对上式的右端函数f(t,y)(为任意非线性函 数)在tk附近展开成泰勒级数,依照展开的 阶次不同我们就构成了不同的龙格-库塔公 式。
二阶龙格—库塔公式,记在tk时刻的状态变量为yk,并 定义两个附加向量型变量 :
yk1 k1 f
yk
h 2
(k1
(tk , yk )
2. 仿真程序流程框图
开始
输入系统阶次、计算步长、 阶跃函数幅值
输入传递函数分子、分母系数
求状态方程系数矩阵 A,B,C
求四阶龙格库塔法各系数 Ki,j
计算状态变量
计算输出值
N
时间到?
Y 输出仿真结果
结束
MATLAB提供了两个常微分方程求解的函数ode23()、ode45(),分别采用了二阶三级的 RKF方法和四阶五级的RKF法,并采用自适应变步长的求解方法,即当解的变化较慢 时采用较大的计算步长,从而使得计算速度很快;当解的变化较快时,步长会自动变 小,从而使计算精度提高。
允许
误差
E k
步长控制
改变下一步 计算步长
误差估计
积分算法
本步 计算
2、误差估计
• 通常采用的方法是设法找到一个比目前使用的 龙格-库塔公式低一阶的R-K公式,将两式计算
结果之差视为误差估计值。
• 例如:现以RKM4-5为计算公式
y k 1
y k
h 6
(k1
4k 4
k
)
5
k1
f
(tk
,
y) k
6.1.2 离散化原理
在数字计算机上对连续系统进行仿真时,首先遇到的问题是,数字 计算机的数值及时间都是离散的(计算精度,指令执行时间), 而被仿真系统的数值和时间是连续的,后者如何用前者来实现?
设系统模型为:y f ( y,u,t) ,其中u(t)为输入变量,y(t)为系统状态变 量 t似=k。原h。令理如仿。果真时u’(间tk)间≈隔u(为tk)h, y,离’(t散k) 化≈ y后(t的k),输则入认变为量两为模u’型(tk等), 其价中,t称k表为示相
6.2.1 仿真过程的三类误差 通常,系统仿真的最终精度与现场原始数据的采集、使用的 计算机设备档次、仿真计算时的数值积分公式等均有相应的 关系,可以分为以下3种情况。 1. 初始误差
在对系统仿真时,要采集现场的原始数据,而计算时要提供 初始条件,这样由于数据的采集不一定很准,会造成仿真过 程中产生一定的误差,此类误差称为初始误差。 要消除或减 小初始误差,就应对现场数据进行准确的检测,也可以多次 采集,以其平均值作为参考初始数据。
控制系统的数学模型经过合理的近似及简化,大多数建立为常微分方程 的表达形式。由于数学计算的难度和实际系统的复杂程度,在实际中遇到 的大部分微分方程难以得到其解析解,通常都是通过数字计算机采用数值 计算的方法来求取其数值解。在高级仿真软件(例如MATLAB)环境下, 已提供了功能十分强大、且能保证相应精度的数值求解的功能函数或程序 段,使用者仅需要按规定的语言规格调用即可,而无需从数值算法的底层 考虑其编程实现过程。
第6章 数值积分法仿真
本章主要教学内容
本章主要介绍控制系统数学模型的相关知识,通 过本章的学习,读者应掌握以下内容:
➢求解常微分方程数值解的一般方法 ➢数值积分法的基本概念及其常用方法 ➢以系统微分方程或传递函数作为数学模型的仿真过程及程序 设计方法 ➢以系统动态结构图作为数学模型的仿真过程及程序设计方法 ➢仿真步长的选择与系统仿真精度和稳定性的对应关系 ➢快速仿真算法的概念、特点及其应用
6.2.2 稳定性分析
由于系统仿真时存在误差,对仿真结果产生会影响。若计 算结果对系统仿真的计算误差反应不敏感,那么称之为算法稳 定,否则称算法不稳定。对于不稳定的算法,误差会不断积累, 最终可能导致仿真计算达不到系统要求而失败。
1. 系统的稳定性与仿真步长的关系
一个数值解是否稳定,取决于该系统微分方程的特征根是 否满足稳定性要求,而不同的数值积分公式具有不同的稳定区 域,在仿真时要保证稳定就要合理选择仿真步长,使微分方程 的解处于稳定区域之中。
k2)
k2
f
(tk
h,
yk
hk1 )
四阶龙格—库塔公式 :
y
k
1
yk
h 6
(k1
2k2
2k3
k4 )
k1 f (tk , yk )
k 2
f (tk
h 2
,
yk
h 2
k1
)
k
3
f (tk
h 2
,
yk
h 2
k2 )
k4 f (tk h, yk hk3 )
不论几阶RK法,它们的计算公式都是由两部分组成,即上一步的结果yk和 步长h乖以tk至tk+1时间间隔间各外推点的导数ki的加权平均和
2. 舍入误差
目前,系统仿真大都采用计算机程序处理和数 值计算,由于计算机的字长有限,不同档次的计 算机其计算结果的有效值不一致,导致仿真过程 出现舍入误差。 一般情况下,要降低舍入误差应 选择挡次高些的计算机,其字长越长,仿真数值 结果尾数的舍入误差就越小。
3. 截断误差
当仿真步距确定后,采用的数值积分公式的阶 次将导致系统仿真时产生截断误差,阶次越高, 截断误差越小。通常仿真时多采用四阶龙格—库 塔法,其原因就是这种计算公式的截断误差较小。
6.1 数值积分法
6.1.1 概述
数字仿真模型、算法及仿真工具
控制系统的数字仿真是利用数字计算机作为仿真工具,采用数学上的各 种数值算法求解控制系统运动的微分方程,得到被控物理量的运动规律。 通常,计算机模拟被控对象是用一定的仿真算法来实现被控对象的运动规 律,这是基于被控对象的数学模型来完成的。
微分方程数值解的方法主要是数值积分法。 对于形如 y f (y,u,t) 的系统,已知系统状态变量y的初值y0,现
要计算y随时间变化的过程y(t),对微分方程的积分可以写作: y t
y(t) f (t, y)dt t 0
0
右图所示曲线下的面积就 是y(t),由于难以得到积分 的数值表达式,所以采用 近似的方法,常用有三种形式:
3、最优步长法
• 基本方法是根据本步的误差估计来近似地确定下一步可能的最大
步1)给长定,允步许骤的如相下对: 误差ε0,设本步步长为hk,本步相对估计误差为ek,
e E y ek由下式求得:
/(| | 1)
k
k
k
E h 若采用的RK公式是m阶,则上式中的Ek可以表示为
( ) m
k
k
e t h y 通常取ζ=tk,则有:
在仿真计算中,h值不宜选的太小,因为这样会加大计算量; 也不能选的过大,否则会导致仿真系统不稳定或误差积累过大。
通常掌握的原则是: 在保证计算稳定性及计算精度的要求下,尽可能选较大的 仿真步长。对于一般工程系统的仿真处理,采用四阶龙格—库 塔法居多 。
龙格-库塔法的步长控制策略
• 控制策略由误差估计和步长控制两方面 组成,其基本思想如下图所示:
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 options