计算机仿真实验解答.docx

上传人:b****5 文档编号:7600369 上传时间:2023-01-25 格式:DOCX 页数:68 大小:875.08KB
下载 相关 举报
计算机仿真实验解答.docx_第1页
第1页 / 共68页
计算机仿真实验解答.docx_第2页
第2页 / 共68页
计算机仿真实验解答.docx_第3页
第3页 / 共68页
计算机仿真实验解答.docx_第4页
第4页 / 共68页
计算机仿真实验解答.docx_第5页
第5页 / 共68页
点击查看更多>>
下载资源
资源描述

计算机仿真实验解答.docx

《计算机仿真实验解答.docx》由会员分享,可在线阅读,更多相关《计算机仿真实验解答.docx(68页珍藏版)》请在冰豆网上搜索。

计算机仿真实验解答.docx

计算机仿真实验解答

实验一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.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1