实验:控制系统数字仿真之数值积分法.docxVIP

  • 16
  • 0
  • 约 12页
  • 2017-02-01 发布于北京
  • 举报

实验:控制系统数字仿真之数值积分法.docx

实验:控制系统数字仿真之数值积分法

实验:控制系统数字仿真之数值积分法实验目的:学会并掌握数值积分法的基本原理和方法,了解欧拉法,梯型法,龙格-库塔法的区别,并熟练地使用这些方法。观察并分析整体离散法、分环节离散法、欧拉法、梯形法、龙格-库塔法这几种方法原理上的差别,分析他们各自的优缺点。实验原理:欧拉法:欧拉法是最简单的单步法,它是一阶的,精度较差。但由于公式简单,计算方便,也易于理解,所以在讨论微分方程初值问题的数值解时通常先讨论欧拉法。梯形法:梯形法与欧拉法相比,梯形法的e要比欧拉法的e更接近实际值,它舍弃的部分更少,它在每一步中用了两个点的输入,使得计算更加精确。龙格-库塔法:龙格—库塔法是采用间接利用台劳展开式的思路,即用在n个点上的函数值的线性组合来代替的导数,然后按台劳展开式确定其中的系数,以提高算法的阶数。这样既能避免计算函数的导数,同时又保证了计算精度。由于龙格—库塔法具有许多优点,故在许多仿真程序包中,它是一个最基本的算法之一。实验过程:分环节离散法得出的响应曲线:整体离散法得出的响应曲线:用一阶欧拉法得出的系统响应曲线:欧拉法是求出当前系统的斜率(变化规律),假设这个变化规律在下一次变化前不改变。那么系统下一次值就能够通过1.当前值2.斜率3.步长来确定。比如说系统当前值x(t),斜率x‘(t),仿真步长dt。那么x(t+dt)=x(t)+x’(t)*dt程序代码:clc; close all; clear all;sampleTime = 0.1;simuTime = 2000;t=sampleTime:sampleTime:simuTime;K=1.2; n=3; T=20;[kp,ki]=PID_Gain(1.2,20,3,0);x=zeros(1,4);fori=1:fix(simuTime/sampleTime)u(i)=1;endfori=1:fix(simuTime/sampleTime)e=ST_RK_1(x,u(i),kp,ki,T,K,n);x=x+e*sampleTime;y(i)=x(4);endplot(t,y);text=Tvalue1(y,sampleTime);legend(text);自程序ST_RK_1代码:function E=ST_RK_1(x,u,kp,ki,T,K,n)E(1)=(u-x(4))*ki;E(2)=(x(1)+kp*E(1)/ki)*K/T-x(2)/T;E(3)=x(2)/T-x(3)/T;E(4)=x(3)/T-x(4)/T;end用梯形法得出系统响应曲线:若采用欧拉法,误差为红色曲线围成的面积,而如果用梯形法,误差减少为蓝色曲线围成的面积。同时,要求出蓝色曲线围成的面积,就要先出下一个点的值。因此增加了计算量。算法:先用欧拉法求出下一个点的值,用下一个点的值求这个点的斜率,接着就能求出梯形的面积。用新的面积(代表斜率)求出下一个点的值。实验程序代码(与之前相同的部分没有复制):u(i+1)=u(i);fori=1:fix(simuTime/sampleTime)x0=x;e1=ST_RK_1(x,u(i),kp,ki,T,K);x=x0+e1*sampleTime;e2=ST_RK_1(x,u(i+1),kp,ki,T,K);e=(e1+e2)/2;x=x0+e*sampleTime;y(i)=x(4);end程序响应曲线:用龙格-库塔法得出的系统响应曲线:当采取龙格—库塔法(四阶)时,需要用到多个系统斜率。具体原理不在阐述。程序代码:u(i+1)=u(i);fori=1:fix(simuTime/sampleTime)x0=x;e1=ST_RK_1(x,u(i),kp,ki,T,K);x=x0+e1*sampleTime/2;e2=ST_RK_1(x,(u(i+1)+u(i))/2,kp,ki,T,K);x=x0+e2*sampleTime/2;e3=ST_RK_1(x,(u(i+1)+u(i))/2,kp,ki,T,K);x=x0+e3*sampleTime;e4=ST_RK_1(x,u(i+1),kp,ki,T,K);e=(e1+e4)/6+(e2+e3)/3;x=x0+e*sampleTime;y(i)=x(4);end系统的响应曲线:从之前的几个曲线来看,除了分布离散法与step(视为标准响应曲线)相差比较大之外,剩余的曲线与标准曲线的区别不大,误差约为千分之一。接下来我们要考虑,随着仿真步距增大,系统失真速度的快慢。系统程序代码:clc; close all; clear all;sampleTime = 0.1;simuTime = 500;t=sampleTime:sampleTime:simuTime;K=1.2; n=3; T=20;[kp,ki]=

文档评论(0)

1亿VIP精品文档

相关文档