Matlab-控制系统的仿真
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
法。使用格式为:
q = quad(fun,a,b)
• fun:被积分函数
• a、b:积分上下限
例:计算下列定积分
2
1
0
x3
dx 2x5
function y = myfun(x) y = 1./(x.^3-2*x-5);
>> Q = quad('myfun',0,2) Q=
-0.4605
>> F = @(x)1./(x.^3-2*x-5); >> Q = quad(F,0,2)
在控制系统仿真中,常用的求微分方程数值解的函 数是ode23和ode45。
1. ode23 在MATLAB中,函数ode23采用2-3阶龙格-库塔法
求解微分方程。
[t,y]=ode23(odefun,tspan,y0)
[t,y]=ode23(odefun,tspan,y0,options) • odefun:定义微分方程的形式y’=f(t,y) • tspan=[t0,tfinal]:表示微分方程的积分限从t0(始
Matlab-控制系统的仿真
7.1 微分方程的求解
在现在数学研究和工程实践中,很多数学模型都是 用微分方程确定的,很多基本方程本身就是一个微分方 程,因此求微分方程非常重要,但是大部分的微分方程 目前难以求得其解析解,因此人们只有利用计算机强大 的计算功能来求其数值解。MATLAB主要使用龙格-库 塔法求解微分方程。
function dy=fun1(x,y)
25
y
dy
dy=-y+x^2+4*x+1;
20
在命令窗口中输入 15
>> [x,y]=ode23('fun1',[1,4],1);
>> dy=-y+x.^2+4*x+1;
10
>> plot(x,y,x,dy);
5
wk.baidu.com
>> legend('y','dy')
0
1
1.5
程 d d22 xt(1x2)d dx t x0 (w=2)。
当t=0时,dx/dt=1,d2x/dt2=0。
d d22 xt(1x2)d dx t x0
解:(1)将高阶微分方程式等价变换成一阶微分方 程组。 令y1=x且y2=dx/dt 则dy1/dt=y2,
dy2/dt=w(1-y1^2)y2-y1 (2)编写M函数文件表示该微分方程,给定当前时 间及y1和y2的当前值,返回上述的导数值,并将导数 值以列向量的形式给出。 function fun2=vdpol(t,y) fun2=[y(2) 2*(1-y(1)^2)*y(2)-y(1)]'
2
2.5
3
3.5
4
2. ode45 在MATLAB中,函数ode45采用普通4-5阶龙格-库
塔法求解微分方程。其使用方法与ode23函数的使用方 法基本相同。
ode45函数是大部分场合的首选算法,ode23函数主 要适用于精度较低的情形。
例:解经典非线性方程,范得波(Van der Pol)微分方
(1)分析:电容电压和电流的关系
V C (t)C 1I(t)dt
I(t) C dC V (t) dt
根据基尔霍夫定律,可得出微分方程
R (t) IV C (t) V i Rd C d C ( V t)t V C (t) V i 使用ode函数时,对微分方程进行如下假设
yVC(t)
(3)计算结果如下: >> [t,y]=ode45('vdpol',[0 30],[1;0]); >> y1=y(:,1); >> y2=y(:,2); >> plot(t,y1,':b',t,y2,'-r') >> legend('位移', '速度')
3. 定积分的数值解法 MATLAB软件使用quad函数进行定积分的数值解
值)到tfinal(终值),该积分限也 可以是一些离散的点。 • y0:初始状态列向量 • options:积分参数,包括‘RelTol’(相对误差)和 ‘AbsTol’(绝对误差),可省略。
例:使用ode23函数求解常微分方程y’=-y+x2+4x+1,
x=1时,y=1。
解:首先创建函数fun1.m
dy Vi y dt RC
(2)建立导数函数
function dy=cap(t,y) Vi=20; R=5; C=70e-6; dy=(Vi-y)/(R*C); (3)使用ode函数进行仿真,仿真时间0~0.006s,Vc 初始值为0V。
>> [t,y]=ode45('cap',[0,0.006],0); >> plot(t,y) >> axis([0 0.006 0 25]) >> title('Vc-Time') >> xlabel('Time/sec') >> ylabel('Vc/V')
(1)分析:根据电路分析,由基尔霍夫定律可以得
出微分方程 RI(t)VL(t)VC(t)Vi(t)
I(t)CdVC(t) dt
dI(t) VL(t)L dt
LCd2dVCt2(t)RCdVdCt(t)VC(t)Vi(t)
在利用ode函数时,对微分方程作出如下假设:
y(1) VC (t) y(2) I(t)
Q= -0.4605
7.2 微分方程模型
7.2.1 方法描述 微分方程模型是数学模型的一种主要形式。当采用
一阶微分方程的数值积分法进行数值计算时,应把高阶 微分方程变换成n个一阶微分方程形式。对于微分方程 而言,除了少数可以得到解析解外,大多数只能采用数 值解法。
在MATLAB中,使用ode函数建立微分方程模型。 7.2.2 范例分析 例:在RC低通滤波器电路中,电阻R=5Ω,理想电压 源为Vi=20V,电容C=70μF。分析电容元件的时域特性。
dy(1) 1 y(2) dt C
dy(2) 1 dt L (Vi (t) y(1) R* y(2))
当电压源为直流电压源时,加载在电容上的电压 随时间呈抛物线增大,稳态值为电源电压。电容电压 在t=0时取得最小值,最小值为0;电容电压在 t=0.0023s时达到最大值,为20V。
例:用简单的LC谐振电路组成滤波器电路,其电路方 程是二阶微分方程。观察该RLC电路中,相关电气元 件的时域变化情况。假设电源为直流电压源Vi=20V, 电阻R=5Ω,电容C=70μF,电感L=70mH。
q = quad(fun,a,b)
• fun:被积分函数
• a、b:积分上下限
例:计算下列定积分
2
1
0
x3
dx 2x5
function y = myfun(x) y = 1./(x.^3-2*x-5);
>> Q = quad('myfun',0,2) Q=
-0.4605
>> F = @(x)1./(x.^3-2*x-5); >> Q = quad(F,0,2)
在控制系统仿真中,常用的求微分方程数值解的函 数是ode23和ode45。
1. ode23 在MATLAB中,函数ode23采用2-3阶龙格-库塔法
求解微分方程。
[t,y]=ode23(odefun,tspan,y0)
[t,y]=ode23(odefun,tspan,y0,options) • odefun:定义微分方程的形式y’=f(t,y) • tspan=[t0,tfinal]:表示微分方程的积分限从t0(始
Matlab-控制系统的仿真
7.1 微分方程的求解
在现在数学研究和工程实践中,很多数学模型都是 用微分方程确定的,很多基本方程本身就是一个微分方 程,因此求微分方程非常重要,但是大部分的微分方程 目前难以求得其解析解,因此人们只有利用计算机强大 的计算功能来求其数值解。MATLAB主要使用龙格-库 塔法求解微分方程。
function dy=fun1(x,y)
25
y
dy
dy=-y+x^2+4*x+1;
20
在命令窗口中输入 15
>> [x,y]=ode23('fun1',[1,4],1);
>> dy=-y+x.^2+4*x+1;
10
>> plot(x,y,x,dy);
5
wk.baidu.com
>> legend('y','dy')
0
1
1.5
程 d d22 xt(1x2)d dx t x0 (w=2)。
当t=0时,dx/dt=1,d2x/dt2=0。
d d22 xt(1x2)d dx t x0
解:(1)将高阶微分方程式等价变换成一阶微分方 程组。 令y1=x且y2=dx/dt 则dy1/dt=y2,
dy2/dt=w(1-y1^2)y2-y1 (2)编写M函数文件表示该微分方程,给定当前时 间及y1和y2的当前值,返回上述的导数值,并将导数 值以列向量的形式给出。 function fun2=vdpol(t,y) fun2=[y(2) 2*(1-y(1)^2)*y(2)-y(1)]'
2
2.5
3
3.5
4
2. ode45 在MATLAB中,函数ode45采用普通4-5阶龙格-库
塔法求解微分方程。其使用方法与ode23函数的使用方 法基本相同。
ode45函数是大部分场合的首选算法,ode23函数主 要适用于精度较低的情形。
例:解经典非线性方程,范得波(Van der Pol)微分方
(1)分析:电容电压和电流的关系
V C (t)C 1I(t)dt
I(t) C dC V (t) dt
根据基尔霍夫定律,可得出微分方程
R (t) IV C (t) V i Rd C d C ( V t)t V C (t) V i 使用ode函数时,对微分方程进行如下假设
yVC(t)
(3)计算结果如下: >> [t,y]=ode45('vdpol',[0 30],[1;0]); >> y1=y(:,1); >> y2=y(:,2); >> plot(t,y1,':b',t,y2,'-r') >> legend('位移', '速度')
3. 定积分的数值解法 MATLAB软件使用quad函数进行定积分的数值解
值)到tfinal(终值),该积分限也 可以是一些离散的点。 • y0:初始状态列向量 • options:积分参数,包括‘RelTol’(相对误差)和 ‘AbsTol’(绝对误差),可省略。
例:使用ode23函数求解常微分方程y’=-y+x2+4x+1,
x=1时,y=1。
解:首先创建函数fun1.m
dy Vi y dt RC
(2)建立导数函数
function dy=cap(t,y) Vi=20; R=5; C=70e-6; dy=(Vi-y)/(R*C); (3)使用ode函数进行仿真,仿真时间0~0.006s,Vc 初始值为0V。
>> [t,y]=ode45('cap',[0,0.006],0); >> plot(t,y) >> axis([0 0.006 0 25]) >> title('Vc-Time') >> xlabel('Time/sec') >> ylabel('Vc/V')
(1)分析:根据电路分析,由基尔霍夫定律可以得
出微分方程 RI(t)VL(t)VC(t)Vi(t)
I(t)CdVC(t) dt
dI(t) VL(t)L dt
LCd2dVCt2(t)RCdVdCt(t)VC(t)Vi(t)
在利用ode函数时,对微分方程作出如下假设:
y(1) VC (t) y(2) I(t)
Q= -0.4605
7.2 微分方程模型
7.2.1 方法描述 微分方程模型是数学模型的一种主要形式。当采用
一阶微分方程的数值积分法进行数值计算时,应把高阶 微分方程变换成n个一阶微分方程形式。对于微分方程 而言,除了少数可以得到解析解外,大多数只能采用数 值解法。
在MATLAB中,使用ode函数建立微分方程模型。 7.2.2 范例分析 例:在RC低通滤波器电路中,电阻R=5Ω,理想电压 源为Vi=20V,电容C=70μF。分析电容元件的时域特性。
dy(1) 1 y(2) dt C
dy(2) 1 dt L (Vi (t) y(1) R* y(2))
当电压源为直流电压源时,加载在电容上的电压 随时间呈抛物线增大,稳态值为电源电压。电容电压 在t=0时取得最小值,最小值为0;电容电压在 t=0.0023s时达到最大值,为20V。
例:用简单的LC谐振电路组成滤波器电路,其电路方 程是二阶微分方程。观察该RLC电路中,相关电气元 件的时域变化情况。假设电源为直流电压源Vi=20V, 电阻R=5Ω,电容C=70μF,电感L=70mH。