《MATLAB系统根轨迹和频域分析实验精品资料.doc》由会员分享,可在线阅读,更多相关《MATLAB系统根轨迹和频域分析实验精品资料.doc(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验三 MATLAB系统根轨迹和频域分析实验一、实验目的1学习使用MATLAB求特征多项式的根,分析系统稳定性;2学习使用MATLAB由传递函数求零点和极点;3学习使用MATLAB绘制根轨迹;4掌握由根轨迹分析系统性能的方法;5学习使用MATLAB绘制Bode图和Nyquist图;6掌握使用Bode图和Nyquist图分析系统性能的方法。二、实验仪器计算机三、实验内容3.1 特征多项式求解3.1.1直接求特征多项式的根设P为特征多项式的系数矢量,用MATLAB函数roots( )可直接求出方程P=0在复数范围内的解,该函数的调用格式为:v=roots(p)例二十三 已知系统的特征多项式为:特征
2、方程的解可由下面的MATLAB命令得出:p=1,0,3,2,1,1v=roots(p)结果显示:v =0.3202+1.7042i0.3202-1.7042i-0.72090.0402+0.6780i0.0402-0.6780i利用多项式求根函数roots( ),可方便的求出系统的零点和极点,然后根据零极点分析系统稳定性和其他性能。3.1.2 由根创建多项式如果已知多项式的因式分解式或特征根,可由MATLAB函数poly( )直接得出特征多项式系数矢量,其调用格式为:p=poly(v)。如上题中:v =0.3202+1.7042i;0.3202-1.7042i;-0.7209;0.0402+0
3、.6780i;0.0402-0.6780i;p=poly(v)结果显示:p=1.0000 -0.0000 3.0000 2.0000 1.0000 1.0000由此可见,函数roots( )与函数poly( )互为逆运算。3.1.3 多项式求值在MALAB中通过函数polyval( )可求得多项式在给定点的值,该函数的调用格式为:polyval(p,v )。对于上题中的p值,求取多项式在x点的值,可输入如下命令:p=1,0,3,2,1,1;x=1polyval(p,x)结果显示:ans=83.1.5 由传递函数求零点和极点在MATLAB控制系统工具箱中,给出了由传递函数对象G求系统零点和极点的
4、函数,其调用格式分别为:Z=tzero(G) P=pole(G) 注意:上式中要求的G必须是零极点模型对象。例二十四 已知传递函数为 输入如下命令:num=6.8,61.2,95.2;den=1,7.5,22,19.5,0;G=tf(num,den);G1=zpk(G);Z=tzero(G);P= pole(G);结果为:Z = -7 -2P = 0 -3.0000 + 2.0000i -3.0000 - 2.0000i -1.5000 3.1.6 零极点分布图在MATLAB中,可利用pzmap( )函数绘制连续系统的零、极点图,从而分析系统的稳定性,该函数调用格式为: pzmap(num,d
5、en)。例二十五 给定传递函数: 利用下列命令可自动打开一个图形窗口,显示该系统的零、极点分布图。用鼠标点击图中零、极点可自动显示其坐标值。num=3,2,5,4,6den=1,3,4,2,7,2pzmap(num,den)title(Pole-Zero Map) % 图形标题3.2 根轨迹法控制系统的稳定性,由其闭环极点唯一确定,而系统过渡过程的基本特性,则与闭环零极点在s平面的位置有关。根轨迹法就是在已知控制系统开环传递函数零极点分部的基础上,研究某些参数变化时控制系统闭环传递函数零极点分布影响的一种图解方法。利用根轨迹法,能够分析系统的瞬态响应特性以及参数变化对瞬态响应特性的影响。也可以
6、根据对瞬态响应的要求去确定可变参数或调整零极点的位置和个数。因此,根轨迹法可以用于解决线性系统的分析和综合问题。3.2.1 求系统根轨迹rlocus 命令可求得系统的根轨迹格式: r,k = rlocus(num,den) r,k = rlocus(num,den,k)不带输出变量时则绘出系统的根轨迹图,带输出变量时给出一组r,k的对应数据。若给定了k的取值范围,则该命令将按要求绘出图形或数组或者输出指定增益k所对应的r值。每条根轨迹都以不同的颜色区别。例二十六 某系统开环传递函数为: 要绘制系统的根轨迹,则输入:n = 2d = 1 3 2 0 rlocus(n , d) 执行后得到下面图形
7、。 若要得到指定增益k值对应的r值则输入:n = 2d = 1 3 2 0 r,k = rlocus(n,d,5)结果如下:r = -3.3089 0.1545 + 1.7316i 0.1545 - 1.7316ik = 53.2.2 求根轨迹增益rlocfind命令可求得给定根的根轨迹增益。格式: k,poles = rlocfind(n,d) k,poles = rlocfind(num,den,p)当代有输出变量时,可得到所有极点的座标数据和增益值。不带输出时只得到所选点的座标和增益值。注意:在执行这条命令前最好先执行一次根轨迹的绘图命令,这样就可直接在根轨迹图上选取我们感兴趣的点。其中
8、的p是系统的根,由此可得到对应的增益值。3.2.3 绘制和wn格sgrid命令是在图形中绘制出阻尼系数和自然频率栅格,其阻尼系数从01,步长为0.1。命令格式:sgrid sgrid(z,wn)例二十七 绘制系统带栅格的根轨迹图 则执行:n = 1 1 d = 1 2 3 rlocus(n,d)sgrid %加入栅格 当该命令带有指定的z(),w()时,则将按指定的参数绘制有关图形。例二十八 在上题中绘制 = 0.8, = 2的根轨迹图执行:n = 1,1 ; d = 1,2,3 ; rlocus(n,d) z = 0.8; w = 2; % 加入指定的栅格 sgrid(z,w)得到所需图形。
9、3.3 频域法频域分析法是利用频率特性研究控制系统的一种方法。频率特性是指系统或环节在正弦信号作用下,稳态输出与输入之比对于频率的关系。在控制系统的频域分析法中常用到的坐标系统是极坐标系和对数坐标系。在分析方法中常用的有三种:Bode图、Nyquist曲线和Nichols图。3.3.1 波特图法bode命令可获得连续系统的波特图或有关数据组。命令格式: mag,phase,w = bode(num,den) mag,phase,w = bode(num,den,w)当不带输出变量时则直接绘出图形。而带有输出变量时则得到一组相关数据。其中的w是频率的取值范围,若缺省则该项由函数自动确定。绘图时的
10、横坐标是以对数分度的。为了指定频率的范围,可采用以下命令格式:logspace(d1,d2) 或ogspace(d1,d2,n) 式是在指定频率范围内按对数距离分成50等份的,即在两个十进制数w1=10d1和w2=10d2之间产生一个由50个点组成的分量,矢量中的点数50是一个默认值。例如要在w10.1rad/s与w2100rad/s之间的频区画伯德图,则输入命令时,d1=log10(w1),d2=log10(w2), 在此频区按对数距离等分成50个频率点,返回到工作空间中,即: w=logspace(-1,2)要对计算点数进行人工设定,则采用公式。例如要在w1=1与w2=1000之间产生10
11、0个对数等分点,可输入以下命令:w=logspace(0,3,100)利用波特图我们可以分析系统的幅、相裕度、带宽、稳定性、扰动抑制能力等问题。利用波特图分析系统稳定性的方法如下: a:相角裕量r0,幅值裕量k0,系统是稳定的。 b:r = 0;k = 0,系统为临界稳定。c:r0;k0,系统不稳定。例二十九 绘制系统 的bode图并判断系统闭环后是否稳定?则执行:n = 1,1 d = 4,3,2,0 bode(n,d),grid (绘制波特图并加栅格) 绘图时的频率范围是自动确定的,从0.01rad/s-1000rad/s,且幅值取分贝值,w轴取对数,图形分成两个子图,均是自动完成的。执行
12、后可以在上图中观察得到r0,k0,因此闭环后系统是稳定的。3.3.2 求增益和相位裕度从前面的例题中可以看出要求系统的相位和增益裕度的准确值直接调用bode命令是不太容易的。而使用margin命令则可以较容易的得到所需值。margin可求出开环系统的幅值裕度和相角裕度,其格式为:margin(num,den)gm,pm,wcg,wcp=margin(mag,phase,w)margin(num,den)可计算系统的相角裕度和幅值裕度,并绘制出Bode图。margin(mag,phase,w)可以由幅值裕度和相角裕度绘制出Bode图,其中,mag、 phase和 w是由bode得到的幅值裕度、相
13、角裕度和频率。当带输出变量引用函数时,仅计算幅值裕度、相角裕度及幅值穿越频率wcg和相角穿越频率wcp,不绘制Bode图。例三十: 求例二十九中系统开环传递函数的相对稳定裕度。执行:n = 1 1 ;d = 4 3 2 0 ;margin(n,d)执行后得到相应图形和有关数据k = 15.6db r = 46.43.3.3 奈奎斯特法奈奎斯特法是利极坐标图对系统进行分析的一种方法。频率特性的极坐标图是当w由零变化到无穷大时,表示在极坐标上的幅与相角的关系图,采用极坐标图,可以在一张图纸上描绘出整个频域的频率响应。奈奎斯特稳定数据如下:(1)开环系统稳定时,如果曲线不包围()点,则闭环系统是稳定
14、的,否则为不稳定的。(2)开环系统不稳定时,如果曲线反时针方向环绕()点的次数N等于右半平面内的极点数p,那么闭环系统是稳定的,否则是不稳定的。nyquist命令可以求得连续系统的奈奎斯特曲线。命令格式: re,im,w = nyquist(num,den) re,im,w = nyquist(num,den,w)当带有输出变量时,可得到相应的一组数据,不带输出变量时,则绘出奈奎斯特曲线。也可用指定频率向量w指定所要绘制的曲线范围。例三十一: 系统开环传递函数为 绘出系统的奈奎斯特图并判断系统闭环后是否稳定。 输入:n = 1;d = 1 2 1 0.5 ;nyquist(n,d)执行后可得到
15、所需图形。从图形上可以看出由于曲线不包围()点,因此闭环后系统是稳定的。在某些场合我们需要在奈奎斯特曲线上加上单位圆帮助我们了解相位,幅值裕量的粗值。下面的方法可以使我们获得带单位圆的奈奎斯特图,同时还可获得不同增益下的奈奎斯特图。例三十二: 系统开环传递函数为 绘制k = 10,26,50时的带单位圆的奈奎斯特图,并估算系统的增僧裕量。单位圆的绘制是通过绘tjw的实部与虚部的轨迹而获得。输入:n = 10; %取k = 10时的值d = conv(1 2,1 2 5);w = 0:0.01:10 ; %确定频率范围e = exp(j*w); %给出指数函数ejwr = real(e); %求
16、指数函数的实部,结果不显示i = imag(e); %求函数ejw的虚部,结果不显示 a,b = nyquist(n,d,w); %求指定频率范围内的奈氏值,不显示结果n1 = 26; %取k = 26d1 = d; %保留原分母矢量 a1,b1 = nyquist(n1,d1,w); %求k = 0.5时的奈氏值,结果不显示n2 = 50; %取k = 50d2 = d; %分母保留 a2,b2 = nyquist(n2,d2,w);plot(r,i,a,b,a1,b1,a2,b2),grid %绘出:r,i;a,b;a1,b1;a2,b2;的对应图形并加上栅格。执行以上程序后可在上图上得k
17、 = 10,26,50并加有单位圆的奈奎斯特图。一般来说由于此列的关系显示的图形不是一个正规的圆。从图形上我们可以看出开环增益对闭环系统稳定性的影响。当值变化时,幅频特性成比例变化,而相频特性不受影响。因此取时,曲线恰好通过()点,这是临界稳定状态;当时,幅相曲线将从()点的右方穿过负实轴,不再包围()点,这时闭环系统是稳定的;而时,开环频率特性随着从变化到时,顺时针方向围绕()点一圈,即,可求得闭环系统在右半平面的极点数为:,所以闭环系统不稳定。 四、实验步骤:1、运行Matlab软件;2、在其命令窗口中输入响应的命令或程序;3、观察并记录。五、实验习题:实验习题一 已知系统如下 绘制其根轨
18、迹,并根据根轨迹图求若要使系统稳定,k的最大值。 实验习题二bode图法判断系统稳定性: 已知两个单位负反馈系统的开环传递函数分别为: , 用bode图法判断系统闭环的稳定性。实验习题三已知系统的开环传递函数为:用Nyquist图法判断系统相对稳定性(对参数K分段讨论)。附录资料:MATLAB的30个方法1 内部常数pi 圆周率 exp(1)自然对数的底数ei 或j 虚数单位Inf或 inf 无穷大 2 数学运算符a+b 加法a-b减法a*b矩阵乘法a.*b数组乘法a/b矩阵右除ab矩阵左除a./b数组右除a.b数组左除ab 矩阵乘方a.b数组乘方-a负号 共轭转置.一般转置3 关系运算符=等
19、于大于=大于或等于=不等于4 常用内部数学函数 指数函数exp(x)以e为底数对数函数log(x)自然对数,即以e为底数的对数log10(x)常用对数,即以10为底数的对数log2(x)以2为底数的x的对数开方函数sqrt(x)表示x的算术平方根绝对值函数abs(x)表示实数的绝对值以及复数的模三角函数(自变量的单位为弧度)sin(x)正弦函数cos(x)余弦函数tan(x)正切函数cot(x)余切函数sec(x)正割函数csc(x)余割函数反三角函数 asin(x)反正弦函数acos(x)反余弦函数atan(x)反正切函数acot(x)反余切函数asec(x)反正割函数acsc(x)反余割函
20、数双曲函数 sinh(x)双曲正弦函数cosh(x)双曲余弦函数tanh(x)双曲正切函数coth(x)双曲余切函数sech(x)双曲正割函数csch(x)双曲余割函数反双曲函数 asinh(x)反双曲正弦函数acosh(x)反双曲余弦函数atanh(x)反双曲正切函数acoth(x)反双曲余切函数asech(x)反双曲正割函数acsch(x)反双曲余割函数求角度函数atan2(y,x)以坐标原点为顶点,x轴正半轴为始边,从原点到点(x,y)的射线为终边的角,其单位为弧度,范围为( , 数论函数gcd(a,b)两个整数的最大公约数lcm(a,b)两个整数的最小公倍数排列组合函数factoria
21、l(n)阶乘函数,表示n的阶乘 复数函数 real(z)实部函数imag(z)虚部函数abs(z)求复数z的模angle(z)求复数z的辐角,其范围是( , conj(z)求复数z的共轭复数求整函数与截尾函数ceil(x)表示大于或等于实数x的最小整数floor(x)表示小于或等于实数x的最大整数round(x)最接近x的整数最大、最小函数max(a,b,c,)求最大数min(a,b,c,)求最小数符号函数 sign(x)5 自定义函数-调用时:“返回值列=M文件名(参数列)”function 返回变量=函数名(输入变量) 注释说明语句段(此部分可有可无)函数体语句 6进行函数的复合运算com
22、pose(f,g) 返回值为f(g(y)compose(f,g,z) 返回值为f(g(z)compose(f,g,x,.z) 返回值为f(g(z)compose(f,g,x,y,z) 返回值为f(g(z)7 因式分解syms 表达式中包含的变量 factor(表达式) 8 代数式展开syms 表达式中包含的变量 expand(表达式)9 合并同类项syms 表达式中包含的变量 collect(表达式,指定的变量)10 进行数学式化简syms 表达式中包含的变量 simplify(表达式)11 进行变量替换syms 表达式和代换式中包含的所有变量 subs(表达式,要替换的变量或式子,代换式)1
23、2 进行数学式的转换调用Maple中数学式的转换命令,调用格式如下:maple(Maple的数学式转换命令) 即:maple(convert(表达式,form)将表达式转换成form的表示方式 maple(convert(表达式,form, x) 指定变量为x,将依赖于变量x的函数转换成form的表示方式(此指令仅对form为exp与sincos的转换式有用) 13 解方程solve(方程,变元) 注:方程的等号用普通的等号: = 14 解不等式调用maple中解不等式的命令即可,调用形式如下: maple(maple中解不等式的命令)具体说,包括以下五种:maple( solve(不等式))
24、 maple( solve(不等式,变元) ) maple( solve(不等式,变元) ) maple( solve(不等式,变元) ) maple( solve(不等式,变元) )15 解不等式组调用maple中解不等式组的命令即可,调用形式如下: maple(maple中解不等式组的命令) 即:maple( solve(不等式组,变元组) )16 画图方法:先产生横坐标的取值和相应的纵坐标的取值,然后执行命令: plot(x,y) 方法2:fplot(f(x),xmin,xmax) fplot(f(x),xmin,xmax,ymin,ymax) 方法3:ezplot(f(x) ezplo
25、t(f(x) ,xmin,xmax) ezplot(f(x) ,xmin,xmax,ymin,ymax) 17 求极限(1)极限:syms x limit(f(x), x, a) (2)单侧极限:左极限:syms x limit(f(x), x, a,left)右极限:syms x limit(f(x), x, a,right) 18 求导数diff(f(x) diff(f(x),x) 或者:syms x diff(f(x) syms x diff(f(x), x) 19 求高阶导数 diff(f(x),n) diff(f(x),x,n)或者:syms x diff(f(x),n)syms x
26、 diff(f(x), x,n) 20 在MATLAB中没有直接求隐函数导数的命令,但是我们可以根据数学中求隐函数导数的方法,在中一步一步地进行推导;也可以自己编一个求隐函数导数的小程序;不过,最简便的方法是调用Maple中求隐函数导数的命令,调用格式如下: maple(implicitdiff(f(x,y)=0,y,x) 在MATLAB中,没有直接求参数方程确定的函数的导数的命令,只能根据参数方程确定的函数的求导公式 一步一步地进行推导;或者,干脆自己编一个小程序,应用起来会更加方便。21 求不定积分 int(f(x) int (f(x),x)或者:syms x int(f(x) syms
27、x int(f(x), x) 22 求定积分、广义积分 int(f(x),a,b) int (f(x),x,a,b)或者:syms x int(f(x),a,b) syms x int(f(x), x,a,b) 23 进行换元积分的计算自身没有提供这一功能,但是可以调用Maple函数库中的changevar命令,调用方法如下:maple( with(student) ) 加载student函数库后,才能使用changevar命令maple( changevar( m(x)=p(u), Int(f(x),x) ) ) 把积分表达式中的m(x)代换成p(u)24 进行分部积分的计算自身没有提供这一
28、功能,但是可以调用Maple函数库中的intparts命令,调用方法如下: maple( with(student) ) 加载student函数库后,才能使用intparts命令maple(intparts(Int(f(x),x),u) ) 指定u,用分部积分公式 进行计算25 对数列和级数进行求和 syms n symsum(f(n), n a ,b )26 进行连乘 maple(product(f(n),n=a.b)27 展开级数syms x taylor(f(x), x, n, a )28 进行积分变换syms s t laplace( f(t), t, s ) 拉普拉斯变换 ilapl
29、ace( F(s), s, t ) 拉普拉斯变换的逆变换 syms t fourier( f(t), t, ) 傅立叶变换 ifourier( F(), , t ) 傅立叶变换的逆变换 syms n z ztrans( f(n), n, z) Z变换 iztrans( F(z), z, n ) Z变换的逆变换 在matlab中,矩形法、梯形法和辛普森法求近似积分可以用自身的命令,也可调用Maple的相应命令。调用方法如下: maple(with(student) ) maple(Maple中求定积分近似值的命令)29 解微分方程dsolve(微分方程,自变量) dsolve(微分方程,初始条件或边界条件,自变量)30 解微分方程组dsolve(微分方程组,自变量) dsolve(微分方程组,初始条件或边界条件,自变量)