matlab答案第五章
- 格式:doc
- 大小:166.50 KB
- 文档页数:9
第5章频率特性法频域分析法是一种图解分析法,可以根据系统的开环频率特性去判断闭环系统的性能,并能较方便地分析系统参量对系统性能的影响,从而指出改善系统性能的途径,已经发展成为一种实用的工程方法,其主要内容是:1)频率特性是线性定常系统在正弦函数作用下,稳态输出与输入的复数之比对频率的函数关系。
频率特性是传递函数的一种特殊形式,也是频域中的数学模型。
频率特性既可以根据系统的工作原理,应用机理分析法建立起来,也可以由系统的其它数学模型(传递函数、微分方程等)转换得到,或用实验法来确定。
2)在工程分析和设计中,通常把频率特性画成一些曲线。
频率特性图形因其采用的坐标不同而分为幅相特性(Nyquist图)、对数频率特性(Bode图)和对数幅相特性(Nichols图)等形式。
各种形式之间是互通的,每种形式有其特定的适用场合。
开环幅相特性在分析闭环系统的稳定性时比较直观,理论分析时经常采用;波德图可用渐近线近似地绘制,计算简单,绘图容易,在分析典型环节参数变化对系统性能的影响时最方便;由开环频率特性获取闭环频率指标时,则用对数幅相特性最直接。
3)开环对数频率特性曲线(波德图)是控制系统分析和设计的主要工具。
开环对数幅频特性L(ω)低频段的斜率表征了系统的型别(v),其高度则表征了开环传递系数的大小,因而低频段表征系统稳态性能;L(ω)中频段的斜率、宽度以及幅值穿越频率,表征着系统的动态性能;高频段则表征了系统抗高频干扰的能力。
对于最小相位系统,幅频特性和相频特性之间存在着唯一的对应关系,根据对数幅频特性,可以唯一地确定相应的相频特性和传递函数。
4)奈奎斯特稳定性判据是利用系统的开环幅相频率特性G(jω)H(jω)曲线,又称奈氏曲线,是否包围GH平面中的(-l,j0)点来判断闭环系统的稳定性。
利用奈奎斯特稳定判据,可根据系统的开环频率特性来判断闭环系统的稳定性,并可定量地反映系统的相对稳定性,即稳定裕度。
稳定裕度通常用相角裕量和幅值裕量来表示。
目录第五章自定义函数 (1)5.1 MA TLAB函数简介 (1)5.2 在MA TLAB中传递变量:按值传递机制 (6)例5.3 (7)5.3 选择性参数 (14)测试5.1 (16)5.4 用全局内存分享数据 (17)例5.4 (18)5.5 在函数调用两次之间本地数据的存储 (22)例5.5 运行平均数 (22)5.6 函数的函数(function functions), (26)例5.6 (27)5.7 子函数和私有函数 (29)5.8 总结 (29)5.9 练习 (30)5.1 (30)5.2 (30)5.3 (31)5.4 (31)5.5 (31)5.6 (31)5.7 (31)5.8 (31)5.9 (31)5.10 (31)5.11 (31)5.12 (32)5.13 (32)5.14 (32)5.15 (33)5.16 (33)5.17 (33)5.18 (34)5.19 (35)5.20 (35)5.21 (35)5.22 (35)5.23 (36)5.24 (36)5.25 (37)5.26 (37)第五章自定义函数在第三章中,我们强调了好的编程习惯的重要性。
我们进行开发的基本手段是自上而下的编程方法。
在自上而下的编程方法中,它开始于对所要解决问题的精确陈述和定义输入量和输出量。
下一步,我们在大面上进行算法的描述,然后把算法分解成一个一个的子问题。
再然后,程序员把这一个个子问题进行再一次的分解,直到分解成简单而且能够清晰理解的伪代码。
最后把伪代码转化为MATLAB代码。
尽管我们在前面的例子中,按照上面的步骤进行了编程。
但是产生的结果在某种程度上还是受限制的。
因为我们必须把每一个子问题产生的MATLAB代码嵌入到一个单独的大程序中。
在嵌入之前我们无法对每一次子问题的代码进行独立地验证和测试。
幸运的是,MATLAB有一个专门的机制,在建立最终的程序之前用于独立地开发与调试每一个子程序。
第5章习题与答案5.1用矩阵三角分解方法解方程组123123123214453186920x x x x x x x x x +-=⎧⎪-+=⎨⎪+-=⎩ 解答:>>A=[2 1 -1;4 -1 3;6 9 -1] A =2 1 -1 4 -13 6 9 -1 >>b=[14 18 20]; b =14 18 20 >> [L, U, P]=lu(A) L =1.0000 0 0 0.6667 1.0000 0 0.3333 0.2857 1.0000 U =6.0000 9.0000 -1.0000 0 -7.0000 3.6667 0 0 -1.7143 P =0 0 1 0 1 0 1 0 0 >> y=backsub(L,P*b’) y =20.0000 4.6667 6.0000 >> x=backsub(U,y) x =6.5000 -2.5000 -3.5000 5.2 Cholesky 分解方法解方程组123121332352233127x x x x x x x ++=⎧⎪+=⎨⎪+=⎩ 解答:>> A=[3 2 3;2 2 0;3 0 12] A =3 2 32 2 03 0 12>> b=[5;3;7]b =537>> L=chol(A)L =1.7321 1.1547 1.73210 0.8165 -2.44950 0 1.7321>> y=backsub(L,b)y =-11.6871 15.7986 4.0415>> x=backsub(L',y)x =-6.7475 28.8917 49.93995.3解答:观察数据点图形>> x=0:0.5:2.5x =0 0.5000 1.0000 1.5000 2.0000 2.5000 >> y=[2.0 1.1 0.9 0.6 0.4 0.3]y =2.0000 1.1000 0.9000 0.6000 0.4000 0.3000 >> plot(x,y)图5.1 离散点分布示意图从图5.1观察数据点分布,用二次曲线拟合。
第5章MATLAB绘图习题5一、选择题1.如果x、y均为4×3矩阵,则执行plot(x,y)命令后在图形窗口中绘制()条曲线。
DA.12B.7C.4D.32.下列程序的运行结果是()。
Ax=0:pi/100:2*pi;forn=1:2:10plot(n*sin(x),n*cos(x))holdonendaxissquareA.5个同心圆B.5根平行线C.一根正弦曲线和一根余弦曲线D.5根正弦曲线和5根余弦曲线3.命令text(1,1,'{\alpha}+{\beta}')执行后,得到的标注效果是()。
C A.{\alpha}+{\beta}B.αβ}C.α+βD.αβ4.subplot(2,2,3)是指()的子图。
AA.两行两列的左下图B.两行两列的右下图C.两行两列的左上图D.两行两列的右上图x的曲线绘制成直线,应采用的绘图函数是()。
C5.要使函数y=2eA.polarB.semilogxC.semilogyD.loglog6.下列程序的运行结果是()。
B[x,y]=meshgrid(1:5);surf(x,y,5*ones(size(x)));A.z=x+y平面B.与xy平面平行的平面C.与xy平面垂直的平面D.z=5x平面7.下列函数中不能用于隐函数绘图的是()。
DA.ezmeshB.ezsurfC.ezplotD.plot38.下列程序运行后,看到的图形()。
Ct=0:pi/20:2*pi;[x,y]=meshgrid(-8:0.5:8);z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps);surf(x,y,z)view(0,90);axisequalA.像墨西哥帽子B.是空心的圆C.边界是正方形D.是实心的圆9.下列程序运行后得到的图形是()。
A[x,y]=meshgrid(-2:2);z=x+y;i=find(abs(x)<1&abs(y)<1);z(i)=NaN;surf(x,y,z);shadinginterpA.在一个正方形的正中心挖掉了一个小的正方形B.在一个正方形的正中心挖掉了一个小的长方形C.在一个正方形的上端挖掉了一个小的正方形D.在一个正方形的下端挖掉了一个小的正方形10.在使用MATLAB“绘图”选项卡中的命令按钮绘图之前,需要()。
第5章 MATLAB绘图习题5一、选择题1.如果x、y均为4×3矩阵,则执行plot(x,y)命令后在图形窗口中绘制()条曲线。
DA.12 B.7 C.4 D.32.下列程序的运行结果是()。
Ax=0:pi/100:2*pi;for n=1:2:10plot(n*sin(x),n*cos(x))hold onendaxis squareA.5个同心圆B.5根平行线C.一根正弦曲线和一根余弦曲线D.5根正弦曲线和5根余弦曲线3.命令text(1,1,'{\alpha}+{\beta}')执行后,得到的标注效果是()。
CA.{\alpha}+{\beta} B.{\α}+{\β} C.α+βD.\α+\β4.subplot(2,2,3)是指()的子图。
AA.两行两列的左下图B.两行两列的右下图C.两行两列的左上图D.两行两列的右上图5.要使函数y=2e x的曲线绘制成直线,应采用的绘图函数是()。
CA.polar B.semilogx C.semilogy D.loglog6.下列程序的运行结果是()。
B[x,y]=meshgrid(1:5);surf(x,y,5*ones(size(x)));A.z=x+y平面B.与xy平面平行的平面C.与xy平面垂直的平面D.z=5x平面7.下列函数中不能用于隐函数绘图的是()。
DA.ezmesh B.ezsurf C.ezplot D.plot38.下列程序运行后,看到的图形()。
Ct=0:pi/20:2*pi;[x,y]=meshgrid(-8:0.5:8);z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps);surf(x,y,z)view(0,90);axis equalA.像墨西哥帽子B.是空心的圆C.边界是正方形D.是实心的圆9.下列程序运行后得到的图形是()。
A[x,y]=meshgrid(-2:2);z=x+y;i=find(abs(x)<1 & abs(y)<1);z(i)=NaN;surf(x,y,z);shading interpA.在一个正方形的正中心挖掉了一个小的正方形B.在一个正方形的正中心挖掉了一个小的长方形C.在一个正方形的上端挖掉了一个小的正方形D.在一个正方形的下端挖掉了一个小的正方形10.在使用MA TLAB“绘图”选项卡中的命令按钮绘图之前,需要()。
第五章
1.绘制下列曲线。
(1)2
1100
x
y += (2)22
21x e y -=π (3)12
2
=+y x (4)⎩
⎨⎧==3
2
5t y t x 答:
(1) x=-10::10; y=100./(1+x.^2); plot(x,y)
(2) x=-10::10;
y=1/(2*pi)*exp(-x.^2/2); plot(x,y)
(3) ezplot('x^2+y^2=1')
(4) t=-10::10; x=t.^2; y=5*t.^3; plot(x,y)
2. 绘制下列三维图形。
(1)⎪⎩
⎪
⎨⎧===t z t y t x sin cos
(2)⎪⎩
⎪
⎨⎧=+=+=u z v u y v u x sin sin )cos 1(cos )cos 1(
(3)5=z (4)半径为10的球面(提示:用sphere 函数
答: (1)
t=0:pi/100:2*pi; x=cos(t); y=sin(t);
z=t;
plot3(x,y,z)
(2)
u=0:pi/100:2*pi;
v=0:pi/100:2*pi;
x=(1+cos(u)).*cos(v); y=(1+cos(u)).*sin(v); z=sin(u);
plot3(x,y,z)
(3)
[x,y]=meshgrid(-100:100);
z=5*ones(size(x));
mesh(x,y,z)
(4)
[x,y,z] = sphere; %等价于sphere(20) 20是画出来的球面的经纬分面数...20的话就是20个经度, 20个纬度,或者说“就是划出20╳20面的单位球体,把球的表面分成400个小网格”
surf(x,y,z); %绘制单位球面
x = 10*x;
y = 10*y;
z = 10*z;
surf(x,y,z); %绘制半径为10的球面
axis equal
3.在同一图形窗口中采用子图形式分别绘制正方形、圆、三角形和六边形。
答:
n=[3 4 6 2^10] for i=1:4
subplot(2,2,i)
theta=linspace(pi/n(i),2*pi+pi/n(i),n(i)+1); plot(cos(theta),sin(theta)); axis equal; end
4. 分别用plot 和fplot 绘制下列分段函数的曲线。
⎪⎩⎪⎨⎧<--+=>+++=0,510,00,51)(342x x x x x x x x f
答: plot 函数: 方法一:
x=linspace(-10,10,200); y=[]; for x0=x if x0>0
y=[y,x0.^2+(1+x0).^(1/4)+5]; elseif x0==0 y=[y,0]; elseif x0<0
y=[y,x0.^3+sqrt(1-x0)-5]; end
end
plot(x,y)
方法二:
x=linspace(-10,10,200);
y=(x<0).*(x.^3+sqrt(1-x)-5)+(x==0).*0+(x>0).*(x.^2+(1+x).^(1/4)+5); plot(x,y)
用fplot函数:
fplot('(x<0).*(x.^3+sqrt(1-x)-5)+(x==0).*0+(x>0).*(x.^2+(1+x).^(1/4)+ 5)',[-10,10])
5. 在同一坐标轴中绘制下列两条曲线并标注两曲线的交叉点。
(1)5.02-=x y
(2)⎪⎩
⎪
⎨
⎧=≤≤=t t y t t t x sin )3sin(0cos )3sin(π 答: 相邻两点x1、x2 曲线(1)相应的y 值为y11、y12, 曲线(2)y 相应的y 值y21、y22, 若(y11-y21)与(y12-y22)符号相反或等于0,则x1或x2就是一个交叉点。
方法一:
t=linspace(0,pi,300); x=sin(3*t).*cos(t);
y1=2*;
y2=sin(3*t).*sin(t); len=length(t); p=y1-y2;
x3=x((find(p(1:len-1).*p(2:len)<=0))); y3=2*;
plot(x,y1,x,y2,x3,y3,'rd')
方法二:用循环 %t=0::pi;
t=linspace(0,pi,100); x=sin(3*t).*cos(t); y1=2*;
y2=sin(3*t).*sin(t);
plot(x,y1,x,y2);grid;
delta_y=y1-y2;
% figure;stem(delta_y);
j=1;
for i=1:length(t)-1
if delta_y(i)*delta_y(i+1)<=0 position(j)=i+1;
j=j+1;
end end
hold on;
plot(x(position),y1(position),'r o');
title('两条曲线相交');
xlabel('x');ylabel('y');
h = legend('y1','y2');。