1、计算机仿真实验解答实验一 Matlab使用方法和程序设计 一、 实验目的: 1、掌握Matlab软件使用的基本方法; 2、熟悉Matlab的数据表示、基本运算和程序控制语句; 3、熟悉Matlab绘图命令及基本绘图控制; 4、熟悉Matlab程序设计的基本方法。 二、 实验内容: 1、帮助命令 使用help命令,查找 sqrt(开方)函数的使用方法; 2、矩阵运算 (1)矩阵的乘法 已知A=1 2;3 4; B=5 5;7 8;求A2*B解答: A=1 2;3 4; B=5 5;7 8;A2*Bans = 105 115 229 251 (2)矩阵除法 已知 A=1 2 3;4 5 6;7 8
2、 9; B=1 0 0;0 2 0;0 0 3;求AB,A/B 解答: A=1 2 3;4 5 6;7 8 9; B=1 0 0;0 2 0;0 0 3;AB,A/Bans = 1.0e+016 * -0.4504 1.8014 -1.3511 0.9007 -3.6029 2.7022 -0.4504 1.8014 -1.3511ans = 1.0000 1.0000 1.0000 4.0000 2.5000 2.0000 7.0000 4.0000 3.0000(3)矩阵的转置及共轭转置 已知A=5+i,2-i,1;6*i,4,9-i;求A., A 解答: A=5+i,2-i,1;6*i,
3、4,9-iA., A (注:A.是非共轭转置)A = 5.0000 + 1.0000i 2.0000 - 1.0000i 1.0000 0 + 6.0000i 4.0000 9.0000 - 1.0000ians = 5.0000 + 1.0000i 0 + 6.0000i 2.0000 - 1.0000i 4.0000 1.0000 9.0000 - 1.0000ians = 5.0000 - 1.0000i 0 - 6.0000i 2.0000 + 1.0000i 4.0000 1.0000 9.0000 + 1.0000i(4)使用冒号选出指定元素 已知:A=1 2 3;4 5 6;7
4、8 9; 求:A中第3列前2个元素;A中所有列第2,3行的元素;解答: A=1 2 3;4 5 6;7 8 9;b=A(1:2,3),c=A(2:3,:)A = 1 2 3 4 5 6 7 8 9b = 3 6c = 4 5 6 7 8 9(5)方括号 删除矩阵的元素用magic函数生成一个4阶魔术矩阵,删除该矩阵的第四列; 解答: d=magic(4),d(:,4)=d = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1d = 16 2 3 5 11 10 9 7 6 4 14 153、多项式 (1) 求多项式的根 解答: p=1 0 -2 -4,r=roots
5、(p)p = 1 0 -2 -4r = 2.0000 -1.0000 + 1.0000i -1.0000 - 1.0000i(2)已知A=1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4, 求矩阵A的特征多项式; 求特征多项式中未知数为20时的值; 把矩阵A作为未知数代入到多项式中;解答: A=1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4,p=poly(A)A = 1.2000 3.0000 5.0000 0.9000 5.0000 1.7000 5.0000 6.0000 3.0000 9.0000 0 1.0000 1.0000 2.
6、0000 3.0000 4.0000矩阵A的特征多项式:p =1.0 -6.9000 -77.2600 -86.1300 604.5500roots(p) 特征多项式的根ans = 13.0527 -4.1671 + 1.9663i -4.1671 - 1.9663i 2.1815 eig(A)矩阵的特征值(可见上、下两者一样)ans = 13.0527 -4.1671 + 1.9663i -4.1671 - 1.9663i 2.1815 求特征多项式中未知数为20时的值;解答: polyval(p,20)ans = 7.2778e+004把矩阵A作为未知数代入到多项式中解答: polyval
7、m(p,A)ans = 1.0e-010 * -0.0591 -0.0913 -0.0712 -0.0662 -0.0909 -0.1273 -0.1065 -0.1023 -0.0843 -0.1171 -0.0909 -0.0878 -0.0523 -0.0777 -0.0621 -0.0603若把数组A作为未知数代入到多项式中解答:polyval(p,A)ans = 1.0e+003 * 0.3801 -0.4545 -1.9951 0.4601 -1.9951 0.2093 -1.9951 -2.8880 -0.4545 -4.8978 0.6046 0.4353 0.4353 0.0
8、840 -0.4545 -1.16174、基本绘图命令 (1)绘制余弦曲线y=cos(t),t0,2 (2) 在同一坐标系中绘制余弦曲线y=cos(t-0.25)和正弦曲线y=sin(t-0.5),t0,2;(1)解答: t=0:pi/100:2*pi;y=cos(t);plot(t,y),grid on解答:t=0:pi/100:2*pi;y1=cos(t-0.25);y2=sin(t-0.5);plot(t,y1,t,y2),grid on5、基本绘图控制 绘制0,4区间上的x1=10sint曲线,并要求: (1)线形为点划线、颜色为红色、数据点标记为加号; (2)坐标轴控制:显示范围、刻
9、度线、比例、网络线; (3)标注控制:坐标轴名称、标题、相应文本;解答: t=0:0.5:4*pi;x1=10*sin(t);plot(t,x1,r-.+) axis(0,4*pi,-10,10) set(gca,Xtick,0,4,8,10,Ytick,-8,0,8,max(x1) grid on xlabel(x,fontsize,8)%坐标轴名称:X,字号8 ylabel(y,fontsize,12)%坐标轴名称:Y,字号12 title(Value of the 10*sin(t),fontsize,20)%标题名称6、基本程序设计 (1)编写命令文件:计算1+2+3+n sum=0;
10、for m=1:2000; if (sum2000),break; end sum=sum+m;endsum=sum-m,m=m-1sum = 1952m = 63(2)解答:M文件:function sum=La1(n)sum=0;for m=0:n; sum=sum+2m;endMATLAB窗口调用命令:la1(4)注:这里调用M文件,La1(n)中的n要用整正数例如4 Sum=31(3)解答:M文件:function keybutton= input(Do you want more? Y/N Y: ,s); switch button case y, x=1; case Y, x=1;
11、 case n, x=0; case N, x=0; otherwise, return; endx returnMATLAB命令窗口输入:key显示Do you want more? Y/N Y: yx = 1Do you want more? Y/N Y: nx = 0三、预习要求: 利用所学知识,编写实验内容中2到6的相应程序,并写在预习报告上。四、实验报告:要求全程记录所有实验的命令、编写的函数清单和执行结果数据;思考用另一种方法来解决问题并编写程序。 实验二 控制系统分析(一) 一、 实验目的 1、掌握如何使用Matlab进行系统的时域分析 2、掌握如何使用Matlab进行系统的频域
12、分析 3、掌握如何使用Matlab进行系统的根轨迹分析 二、 实验内容: 1、时域分析 (1)根据下面传递函数模型:绘制其单位阶跃响应曲线并从图上读取最 大超调量,绘制系统的单位脉冲响应、零输入响应曲线。 解答: num=5,25,30;den=1,6,10,8;g0=tf(num,den);t=0:0.01:10;y=initial(ss(g0),1 0 0,t);plot(t,y)hold onimpulse(g0)hold onstep(g0)grid ondelta=0.02;pos,tr,ts,tp=stepchar(g0,delta);%调用M文件stepchar(g0,delta
13、)pos,tr,ts,tp得到:pos = 7.2775tr = 1.4400ts = 3.6300tp = 2.2100(2)典型二阶系统传递函数为: 当=0.7,n取2、4、6、8、10、12的单位阶跃响应。解答: w=2:2:12;kos=0.7;figure(1)hold onfor wn=w num=wn2; den=1,2*kos*wn,wn2; step(num,den) endtitle(step Response)hold offgrid on (3)典型二阶系统传递函数为: 当n =6,取0.2、0.4、0.6、0.8、1.0、1.5、2.0的单位阶跃响应。解答: wn=6
14、;kosi=0.2:0.2:1,1.5,2;figure(2)hold onfor kos=kosi num=wn2; den=1,2*kos*wn,wn2; step(num,den) endtitle(step Response)hold offgrid on2、频域分析 (1)典型二阶系统传递函数为: 当=0.7,n取2、4、6、8、10、12的伯德图 解答1: kos=0.7;wni=2:2:12;w=logspace(-2,4,100);figure(4)for wn=wni num=wn2; den=1,2*kos*wn,wn2; bode(num,den,w); hold ong
15、rid onend当kos=0.1改后:解答2:(以下的BODE图不夠漂亮可能用了subplot命令有关) kos=0.7;wni=2:2:12;w=logspace(-4,2,100);figure(4)for wn=wni num=wn2; den=1,2*kos*wn,wn2; mag,pha,w1=bode(num,den,w); subplot(2,1,1); hold on semilogx(w1,mag); subplot(2,1,2); hold on semilogx(w1,pha); endsubplot(2,1,1);grid on title(Bode plot);xl
16、abel(Frequency(rad/sec);ylabel(Gain db);subplot(2,1,2);grid on xlabel(Frequency(rad/sec);ylabel(phase deg);hold off(2)典型二阶系统传递函数为: 当n =6,取0.2、0.4、0.6、0.8、1.0、1.5、2.0的伯德图。解答1: wn=6;kosi=0.2:0.2:1,1.5,2;w=logspace(-1,3,1000);figure(3)hold onnum=wn2;for kos=kosi den=1,2*kos*wn,wn2; bode(num,den,w);endg
17、rid on hold off解答2: wn=6;kosi=0.2:0.2:1,1.5,2;w=logspace(-1,1,1000);figure(3)hold onnum=wn2;for kos=kosi den=1,2*kos*wn,wn2; mag,pha,w1=bode(num,den,w); subplot(2,1,1); hold on semilogx(w1,mag); subplot(2,1,2); hold on semilogx(w1,pha); endsubplot(2,1,1);grid on title(Bode plot);xlabel(Frequency(rad
18、/sec);ylabel(Gain db);subplot(2,1,2);grid on xlabel(Frequency(rad/sec);ylabel(phase deg);hold offgrid on 3、根轨迹分析 根据下面负反馈系统的开环传递函数,绘制系统根轨迹,并分析系统稳定的K值范围。 解答: num=1;den=conv(1,1,1,2),0;figure(4)rlocus(num,den);title(Root locus)k,p=rlocfind(num,den)grid onden=conv(1,1,1,2),0; num=k; g=tf(num,den); gg=fe
19、edback(g,1,-1);figure(5) step(gg) Select a point in the graphics windowselected_point = -0.0190 + 1.3789ik = 5.6327p = -2.9660 -0.0170 + 1.3780i -0.0170 - 1.3780i三、预习要求: 利用所学知识,编写实验内容中1到3的相应程序,并写在预习报告上。 四、实验报告:要求全程记录所有实验的命令、编写的函数清单和执行正确的结果数据;思考用另一种方法来解决问题并编写程序。 实验三 控制系统分析(二) 一、实验目的 1、掌握如何使用Matlab进行系
20、统的稳定性分析 2、掌握如何使用Matlab进行系统的能观测性、能控性分析 3、掌握如何使用Matlab进行离散系统分析 二、实验内容 1、系统稳定性分析 (1)代数法稳定性判据:(用求分母多项式的根和routh函数两种方法) 已知系统的开环传递函数为:试对系统闭环判别其稳定性 解答: num=100,200;den=1,21,20,0;g=tf(num,den);gg=feedback(g,1,-1);r=roots(gg.den1)说明:den=g.den1用来求g的分母多项式系数向量num=g.num1用来求g的分子多项式系数向量得闭环特征根:r = -12.8990 -5.0000 -
21、3.1010den=gg.den1den = 1 21 120 200rtab,info=routh(gg.den1)%调用routh M文件得劳斯表:rtab = 1 120 21 0 120 0 0 0info =All elements in row 4 are zeros;劳斯判据:劳斯行列表中第一列元素全为正,特征方程的所有根的实部均在S平面的左边。若第一列中出现小于零的元素系统就不稳定,且符号变化的次数等于特征根在S右半平面的个数。(2)根轨迹法判断系统稳定性: 已知一个单位负反馈系统开环传递函数为:试在系统的闭环根轨迹图上选择一点,求出该点的增益及其系统的闭环极点位置, 并判断在
22、该点系统闭环的稳定性。 解答: g=tf(1,3,conv(conv(1,5,1,6),1,2,2),0);rlocus(g)k,p=rlocfind(g)Select a point in the graphics windowselected_point = -0.5746 + 0.8385ik = 8.4094p =-5.7838 -5.2529 -0.5716 + 0.8281i -0.5716 - 0.8281i -0.8201 Select a point in the graphics windowselected_point = 2.5652 + 4.4410ik = 1.96
23、50e+003p = -7.5871 + 4.2754i -7.5871 - 4.2754i 2.5645 + 4.4416i 2.5645 - 4.4416i -2.9548 (3)Bode图法判断系统稳定性: 已知两个单位负反馈系统的开环传递函数分别为: ; 用Bode图法判断系统闭环的稳定性。可以用Gm,Pm,Wc,Wg=margin(sys)% margin-计算增益和相位裕度函数% Gm-增益裕度(即相位-180度处所对应的幅频特性绝对值的倒数)% Wg-增益裕度对应的频率(即相位-180度处的频率)% Wc-剪切频率(即幅频特性增益为0时的频率)% Pm-相角裕度(即剪切频率处,使
24、系统达到临界稳定状态时所需的附加相移)解答: clear clf hold off g1=tf(2.7,1,5,4,0); g2=tf(2.7,1,5,-4,0); gg1=feedback(g1,1); gg2=feedback(g2,1); figure(1) bode(g1,r) Gm1,Pm1,Wc1,Wg1=margin(g1) hold on margin(g2) Gm2,Pm2,Wc2,Wg2=margin(g2) grid on figure(2) step(gg1,r) grid on figure(3) step(gg2,g) grid on 2、系统能控性、能观性分析已知
25、连续系统的传递函数模型, 当分别取1,0,1时,判别系统的能控性与能观性 解答:M文件:for i=-1,0,1a,b,c,d=tf2ss(1,i,1,10,27,18);tc=ctrb(a,b);%求能控性矩阵rtc=rank(tc);%能控性矩阵的秩to=obsv(a,c);%求能观性矩阵rtw=rank(to);i if (rtc=3)&(rtw=3) disp(能控能观!);else disp(不能控或不能观!); end rtc rtwend运行结果显示:i = -1能控能观!rtc = 3rtw = 3i = 0能控能观!rtc = 3rtw = 3i = 1不能控或不能观!rtc
26、 = 3rtw = 23、已知离散系统传递函数 自动选择频率范围,绘制出系统的频率响应曲线,包括Bode图和Nyquist图,并求出幅值裕度和相角裕度。 解答:num=2,3,4,0;den=1,3,3,2;g1=tf(num,den,ts,0.01)% ts,0.01表示采样时间为0.1秒figure(1)bode(g1)% g1是离散模型gridfigure(2)dbode(num,den,0.01)% num和den传递函数连续模型gridz=tf(z,ts,0.01);%下面是另外一种模型的直接输入方法和格式h=(2*z3+3*z2+4*z)/. %最后.表示可另起行(z3+3*z2+
27、3*z+2);zpk(h);figure(3)bode(h)gridGm,Pm,Wc,Wg=margin(h)figure(4)nyquist(g)gridfigure(5)hb=feedback(h,1)step(hb,0.5) Transfer function: 2 z3 + 3 z2 + 4 z-z3 + 3 z2 + 3 z + 2 Sampling time: 0.1figure(1)和figure(2)bode(g)图奈氏图:4、设系统的传递函数为研究采样周期对系统离散化的影响,选择采样周期为T0.01,0.1,0.5,1.2秒,求出离散化传递函数模型,求STEP()响应对比分析。解:g=tf(1,1 0.2 1,ioDelay,1);%输入連续函数模型,ioDelay为迟后g1=c2d(g,0.01,zoh);g2=c2d(g,0.1,zoh);g3=c2d(g,0.5,zoh); g4=c2d(g,1.2,zoh);step(g,g1,g2,g3,g4,10) 4、連续线性系统的传递函数为:s=tf(s); G=(s+8)/(s*(s2+0.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1