计算机仿真实验解答.docx
- 文档编号:7600369
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:68
- 大小:875.08KB
计算机仿真实验解答.docx
《计算机仿真实验解答.docx》由会员分享,可在线阅读,更多相关《计算机仿真实验解答.docx(68页珍藏版)》请在冰豆网上搜索。
计算机仿真实验解答
实验一Matlab使用方法和程序设计
一、实验目的:
1、掌握Matlab软件使用的基本方法;
2、熟悉Matlab的数据表示、基本运算和程序控制语句;
3、熟悉Matlab绘图命令及基本绘图控制;
4、熟悉Matlab程序设计的基本方法。
二、实验内容:
1、帮助命令
使用help命令,查找sqrt(开方)函数的使用方法;
2、矩阵运算
(1)矩阵的乘法
已知A=[12;34];B=[55;78];
求A^2*B
解答:
>>A=[12;34];B=[55;78];A^2*B
ans=
105115
229251
(2)矩阵除法
已知A=[123;456;789];B=[100;020;003];
求A\B,A/B
解答:
>>A=[123;456;789];B=[100;020;003];A\B,A/B
ans=
1.0e+016*
-0.45041.8014-1.3511
0.9007-3.60292.7022
-0.45041.8014-1.3511
ans=
1.00001.00001.0000
4.00002.50002.0000
7.00004.00003.0000
(3)矩阵的转置及共轭转置
已知A=[5+i,2-i,1;6*i,4,9-i];
求A.',A'
解答:
>>A=[5+i,2-i,1;6*i,4,9-i]
A.',A'(注:
A.'是非共轭转置)
A=
5.0000+1.0000i2.0000-1.0000i1.0000
0+6.0000i4.00009.0000-1.0000i
ans=
5.0000+1.0000i0+6.0000i
2.0000-1.0000i4.0000
1.00009.0000-1.0000i
ans=
5.0000-1.0000i0-6.0000i
2.0000+1.0000i4.0000
1.00009.0000+1.0000i
(4)使用冒号选出指定元素
已知:
A=[123;456;789];
求:
A中第3列前2个元素;A中所有列第2,3行的元素;
解答:
>>A=[123;456;789];b=A(1:
2,3),c=A(2:
3,:
)
A=
123
456
789
b=
3
6
c=
456
789
(5)方括号[]删除矩阵的元素
用magic函数生成一个4阶魔术矩阵,删除该矩阵的第四列;
解答:
>>d=magic(4),d(:
4)=[]
d=
162313
511108
97612
414151
d=
1623
51110
976
41415
3、多项式
(1)求多项式
的根
解答:
>>p=[10-2-4],r=roots(p)
p=
10-2-4
r=
2.0000
-1.0000+1.0000i
-1.0000-1.0000i
(2)已知A=[1.2350.9;51.756;3901;1234],
求矩阵A的特征多项式;
求特征多项式中未知数为20时的值;
把矩阵A作为未知数代入到多项式中;
解答:
>>A=[1.2350.9;51.756;3901;1234],p=poly(A)
A=
1.20003.00005.00000.9000
5.00001.70005.00006.0000
3.00009.000001.0000
1.00002.00003.00004.0000
矩阵A的特征多项式:
p=
1.0-6.9000-77.2600-86.1300604.5500
roots(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作为未知数代入到多项式中
解答:
>>polyvalm(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.99510.4601
-1.99510.2093-1.9951-2.8880
-0.4545-4.89780.60460.4353
0.43530.0840-0.4545-1.1617
4、基本绘图命令
(1)绘制余弦曲线y=cos(t),t∈[0,2π]
(2)在同一坐标系中绘制余弦曲线y=cos(t-0.25)和正弦曲线y=sin(t-0.5),t∈[0,2π];
(1)解答:
>>t=0:
pi/100:
2*pi;y=cos(t);plot(t,y),gridon
解答:
>>t=0:
pi/100:
2*pi;y1=cos(t-0.25);y2=sin(t-0.5);plot(t,y1,t,y2),gridon
5、基本绘图控制
绘制[0,4π]区间上的x1=10sint曲线,并要求:
(1)线形为点划线、颜色为红色、数据点标记为加号;
(2)坐标轴控制:
显示范围、刻度线、比例、网络线;
(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)])
>>gridon
>>xlabel('x','fontsize',8)%坐标轴名称:
X,字号8
>>ylabel('y','fontsize',12)%坐标轴名称:
Y,字号12
>>title('Valueofthe10*sin(t)','fontsize',20)%标题名称
6、基本程序设计
(1)编写命令文件:
计算1+2+3+…+n<2000时的最大n值;
(2)编写函数文件:
分别用for和while循环结构编写程序,求2的0到n次幂的和。
(3)如果想对一个变量x自动赋值。
当从键盘输入y或Y时(表示是),x自动赋为1;
当从键盘输入n或N时(表示否),x自动赋为0;输入其他字符时终止程序。
(1)解答:
>>sum=0;
form=1:
2000;
if(sum>2000),break;
end
sum=sum+m;
end
sum=sum-m,m=m-1
sum=
1952
m=
63
(2)解答:
M文件:
functionsum=La1(n)
sum=0;
form=0:
n;
sum=sum+2^m;
end
MATLAB窗口调用命令:
>>la1(4) 注:
这里调用M文件,La1(n)中的n要用整正数例如4
Sum=31
(3)解答:
M文件:
functionkey
button=input('Doyouwantmore?
Y/N[Y]:
','s');
switchbutton
case'y',
x=1;
case'Y',
x=1;
case'n',
x=0;
case'N',
x=0;
otherwise,
return;
end
x
return
MATLAB命令窗口输入:
key
显示
Doyouwantmore?
Y/N[Y]:
y
x=
1
Doyouwantmore?
Y/N[Y]:
n
x=
0
三、预习要求:
利用所学知识,编写实验内容中2到6的相应程序,并写在预习报告上。
四、实验报告:
要求全程记录所有实验的命令、编写的函数清单和执行结果数据;思考用另一种方法来解决问题并编写程序。
实验二控制系统分析
(一)
一、实验目的
1、掌握如何使用Matlab进行系统的时域分析
2、掌握如何使用Matlab进行系统的频域分析
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),[100],t);
plot(t,y)
holdon
impulse(g0)
holdon
step(g0)
gridon
delta=0.02;
[pos,tr,ts,tp]=stepchar(g0,delta);%调用M文件stepchar(g0,delta)
pos,tr,ts,tp
得到:
pos=7.2775
tr=1.4400
ts=3.6300
tp=2.2100
(2)典型二阶系统传递函数为:
当ζ=0.7,ωn取2、4、6、8、10、12的单位阶跃响应。
解答:
>>w=[2:
2:
12];
kos=0.7;
figure
(1)
holdon
forwn=w
num=wn^2;
den=[1,2*kos*wn,wn^2];
step(num,den)
end
title('stepResponse')
holdoff
gridon
(3)典型二阶系统传递函数为:
当ωn=6,ζ取0.2、0.4、0.6、0.8、1.0、1.5、2.0的单位阶跃响应。
解答:
>>wn=6;
kosi=[0.2:
0.2:
1,1.5,2];
figure
(2)
holdon
forkos=kosi
num=wn^2;
den=[1,2*kos*wn,wn^2];
step(num,den)
end
title('stepResponse')
holdoff
gridon
2、频域分析
(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)
forwn=wni
num=wn^2;
den=[1,2*kos*wn,wn^2];
bode(num,den,w);
holdon
gridon
end
当kos=0.1改后:
解答2:
(以下的BODE图不夠漂亮可能用了subplot命令有关)
>>kos=0.7;
wni=[2:
2:
12];
w=logspace(-4,2,100);
figure(4)
forwn=wni
num=wn^2;
den=[1,2*kos*wn,wn^2];
[mag,pha,w1]=bode(num,den,w);
subplot(2,1,1);
holdon
semilogx(w1,mag);
subplot(2,1,2);
holdon
semilogx(w1,pha);
end
subplot(2,1,1);gridon
title('Bodeplot');
xlabel('Frequency(rad/sec)');
ylabel('Gaindb');
subplot(2,1,2);gridon
xlabel('Frequency(rad/sec)');
ylabel('phasedeg');
holdoff
(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)
holdon
num=wn^2;
forkos=kosi
den=[1,2*kos*wn,wn^2];
bode(num,den,w);
end
gridon
holdoff
解答2:
>>wn=6;
kosi=[0.2:
0.2:
1,1.5,2];
w=logspace(-1,1,1000);
figure(3)
holdon
num=wn^2;
forkos=kosi
den=[1,2*kos*wn,wn^2];
[mag,pha,w1]=bode(num,den,w);
subplot(2,1,1);
holdon
semilogx(w1,mag);
subplot(2,1,2);
holdon
semilogx(w1,pha);
end
subplot(2,1,1);gridon
title('Bodeplot');
xlabel('Frequency(rad/sec)');
ylabel('Gaindb');
subplot(2,1,2);gridon
xlabel('Frequency(rad/sec)');
ylabel('phasedeg');
holdoff
gridon
3、根轨迹分析
根据下面负反馈系统的开环传递函数,绘制系统根轨迹,并分析系统稳定的K值范围。
解答:
>>num=[1];
den=[conv([1,1],[1,2]),0];
figure(4)
rlocus(num,den);
title('Rootlocus')
[k,p]=rlocfind(num,den)
gridon
den=[conv([1,1],[1,2]),0];
num=k;
g=tf(num,den);
gg=feedback(g,1,-1);
figure(5)
step(gg)
Selectapointinthegraphicswindow
selected_point=
-0.0190+1.3789i
k=5.6327
p=-2.9660
-0.0170+1.3780i
-0.0170-1.3780i
三、预习要求:
利用所学知识,编写实验内容中1到3的相应程序,并写在预习报告上。
四、实验报告:
要求全程记录所有实验的命令、编写的函数清单和执行正确的结果数据;思考用另一种方法来解决问题并编写程序。
实验三控制系统分析
(二)
一、实验目的
1、掌握如何使用Matlab进行系统的稳定性分析
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.den{1})说明:
den=g.den{1}用来求g的分母多项式系数向量
num=g.num{1}用来求g的分子多项式系数向量
得闭环特征根:
r=
-12.8990
-5.0000
-3.1010
den=gg.den{1}
den=121120200
[rtab,info]=routh(gg.den{1}) %调用routhM文件
得劳斯表:
rtab=
1120
210
1200
00
info=
Allelementsinrow4arezeros;
劳斯判据:
劳斯行列表中第一列元素全为正,特征方程的所有根的实部均在S平面的左边。
若第一列中出现小于零的元素系统就不稳定,且符号变化的次数等于特征根在S右半平面的个数。
(2)根轨迹法判断系统稳定性:
已知一个单位负反馈系统开环传递函数为:
试在系统的闭环根轨迹图上选择一点,求出该点的增益及其系统的闭环极点位置,
并判断在该点系统闭环的稳定性。
解答:
>>g=tf([1,3],[conv([conv([1,5],[1,6])],[1,2,2]),0]);
rlocus(g)
[k,p]=rlocfind(g)
Selectapointinthegraphicswindow
selected_point=-0.5746+0.8385i
k=8.4094
p=
-5.7838
-5.2529
-0.5716+0.8281i
-0.5716-0.8281i
-0.8201
Selectapointinthegraphicswindow
selected_point=
2.5652+4.4410i
k=1.9650e+003
p=
-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--相角裕度(即剪切频率处,使系统达到临界稳定状态时所需的附加相移)
解答:
>>clearclfholdoff
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)
holdon
margin(g2)
[Gm2,Pm2,Wc2,Wg2]=margin(g2)
gridon
figure
(2)
step(gg1,'r')
gridon
figure(3)
step(gg2,'g')
gridon
2、系统能控性、能观性分析
已知连续系统的传递函数模型,
当α分别取-1,0,+1时,判别系统的能控性与能观性
解答:
M文件:
fori=[-1,0,1]
[a,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
rtw
end
运行结果显示:
i=-1
能控能观!
rtc=3
rtw=3
i=0
能控能观!
rtc=3
rtw=3
i=1
不能控或不能观!
rtc=3
rtw=2
3、已知离散系统传递函数
自动选择频率范围,绘制出系统的频率响应曲线,包括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是离散模型
grid
figure
(2)
dbode(num,den,0.01)%num和den传递函数连续模型
grid
z=tf('z','ts',0.01);%下面是另外一种模型的直接输入方法和格式
h=(2*z^3+3*z^2+4*z)/...%最后...表示可另起行
(z^3+3*z^2+3*z+2);
zpk(h);
figure(3)
bode(h)
grid
[Gm,Pm,Wc,Wg]=margin(h)
figure(4)
nyquist(g)
grid
figure(5)
hb=feedback(h,1)
step(hb,0.5)
Transferfunction:
2z^3+3z^2+4z
---------------------
z^3+3z^2+3z+2
Samplingtime:
0.1
figure
(1)和figure
(2)
bode(g)图
奈氏图:
4、设系统的传递函数为
研究采样周期对系统离散化的影响,选择采样周期为T=0.01,0.1,0.5,1.2秒,求出离散化传递函数模型,求STEP()
响应对比分析。
解:
g=tf(1,[10.21],'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*(s^2+0.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机仿真 实验 解答