仿真实验.docx
《仿真实验.docx》由会员分享,可在线阅读,更多相关《仿真实验.docx(39页珍藏版)》请在冰豆网上搜索。
仿真实验
《计算机控制技术及仿真》实验指导
攀枝花学院机电工程学院
二○○八年十月
实验一Matlab环境语法及数学运算
(验证性实验)
一、实验目的
1、掌握Matlab软件使用的基本方法;
2、熟悉Matlab的数据表示、基本运算方法;
3、熟悉Matlab绘图命令及基本绘图控制。
二、实验仪器与软件
1.PC机1台
2.MATLAB6.X环境
三、实验原理
MATLAB环境是一种为数值计算、数据分析和图形显示服务的交互式的环境。
MATLAB有3种窗口,即:
命令窗口(TheCommandWindow)、m-文件编辑窗口(TheEditWindow)和图形窗口(TheFigureWindow),而Simulink另外又有Simulink模型编辑窗口。
1.命令窗口(TheCommandWindow)
当MATLAB启动后,出现的最大的窗口就是命令窗口。
用户可以在提示符“>>”后面输入交互的命令,这些命令就立即被执行。
在MATLAB中,一连串命令可以放置在一个文件中,不必把它们直接在命令窗口内输入。
在命令窗口中输入该文件名,这一连串命令就被执行了。
因为这样的文件都是以“.m”为后缀,所以称为m-文件。
2.m-文件编辑窗口(TheEditWindow)
我们可以用m-文件编辑窗口来产生新的m-文件,或者编辑已经存在的m-文件。
在MATLAB主界面上选择菜单“File/New/M-file”就打开了一个新的m-文件编辑窗口;选择菜单“File/Open”就可以打开一个已经存在的m-文件,并且可以在这个窗口中编辑这个m-文件。
四、实验内容:
1、帮助命令
使用help命令,查找sqrt(开方)函数的使用方法;
SyntaxB=sqrt(X)
DescriptionB=sqrt(X)returnsthesquarerootofeachelementofthearrayX.FortheelementsofXthatarenegativeorcomplex,sqrt(X)producescomplexresults.RemarksSeesqrtmforthematrixsquareroot.Examplessqrt((-2:
2)')
ans=
0+1.4142i
0+1.0000i
0
1.0000
1.4142
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=
5.0000+1.0000i2.0000-1.0000i1.0000
0+6.0000i4.00009.0000-1.0000i
>>A.'
ans=
5.0000+1.0000i0+6.0000i
2.0000-1.0000i4.0000
1.00009.0000-1.0000i
>>A'
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]
A=
123
456
789
>>A(1:
2,3)
ans=
3
6
>>A(2:
3,:
)
ans=
456
789
(5)方括号[]
用magic函数生成一个4阶魔术矩阵,删除该矩阵的第四列
A=magic(4)
A=
162313
511108
97612
414151
>>A(:
1:
3)
ans=
1623
51110
976
41415
3、多项式
(1)求多项式p(x)=x3+2x+4的根
p=[10-2-4]
p=
10-2-4
>>r=roots(p)
r=
2.0000
-1.0000+1.0000i
-1.0000-1.0000i
(2)已知A=[1.2350.9;51.756;3901;1234],
A=[1.2350.9;51.756;3901;1234]
A=
1.20003.00005.00000.9000
5.00001.70005.00006.0000
3.00009.000001.0000
1.00002.00003.00004.0000
>>poly(A)
ans=
1.0000-6.9000-77.2600-86.1300604.5500
>>polyval(ans,20)
ans=
7.2778e+004
求矩阵A的特征多项式;
求特征多项式中未知数为20时的值;
把矩阵A作为未知数代入到多项式中;
4、基本绘图命令
(1)绘制余弦曲线y=cos(t),t∈[0,2π]
t=0:
pi/100:
2*pi;
plot(t,cos(t))
(2)在同一坐标系中绘制余弦曲线y=cos(t-0.25)和正弦曲线y=sin(t-0.5),t∈[0,2π]
t=0:
pi/100:
2*pi
y1=plot(t,cos(t-0.25));
holdon
y2=plot(t,sin(t-0.5));
5、基本绘图控制
绘制[0,4π]区间上的x1=10sint曲线,并要求:
(1)线形为点划线、颜色为红色、数据点标记为加号;
(2)坐标轴控制:
显示范围、刻度线、比例、网络线
(3)标注控制:
坐标轴名称、标题、相应文本;
t=0:
0.1:
4*pi;
y=10*sin(t);
plot(t,y,'r=.+')
gridon;
title('y=10*sin(t)');
xlabel('t')
ylabel('y')
五、实验要求
利用所学知识,完成上述各项实验内容,并将实验过程和实验步骤和结果写在报告中。
实验二MATLAB数值运算与绘图
(验证性实验)
一、实验目的
l.熟悉Matlab中各类数据,尤其是矩阵的定义、赋值和运用。
2.了解Matlab的矩阵分析函数以及求线性方程组的数值解;
3.熟悉多项式运算函数、数值插值。
二、实验仪器与软件
1.PC机1台
2.MATLAB6.X环境
三、实验原理
1.创建矩阵的方法
a.直接输入法规则:
矩阵元素必须用[]括住;矩阵元素必须用逗号或空格分隔;在[]内矩阵的行与行之间必须用分号分隔。
逗号和分号的作用:
逗号和分号可作为指令间的分隔符,matlab允许多条语句在同一行出现。
分号如果出现在指令后,屏幕上将不显示结果。
b.用matlab函数创建矩阵:
空阵[]—matlab允许输入空阵,当一项操作无结果时,返回空阵;rand——随机矩阵;eye——单位矩阵;zeros——全部元素都为0的矩阵;ones——全部元素都为1的矩阵
c.矩阵的修改:
可用键找到所要修改的矩阵,用键移动到要修改的矩阵元素上即可修改;指令修改:
可以用A(,)=来修改。
2.矩阵运算
a.矩阵加、减(+,-)运算规则:
(1)相加、减的两矩阵必须有相同的行和列两矩阵对应元素相加减。
(2)允许参与运算的两矩阵之一是标量。
标量与矩阵的所有元素分别进行加减操作。
b.矩阵乘(,./,.\)运算规则:
A矩阵的列数必须等于B矩阵的行数
标量可与任何矩阵相乘。
c.矩阵乘方——a^n,a^p,p^a
a^p——a自乘p次幂,对于p的其它值,计算将涉及特征值和特征向量,如果p是矩阵,a是标量,a^p使用特征值和特征向量自乘到p次幂;如a,p都是矩阵,a^p则无意义。
d.多项式运算
matlab语言把多项式表达成一个行向量,该向量中的元素是按多项式降幂排列的。
f(x)=anxn+an-1xn-1+……+loa0
可用行向量p=[anan-1……a1+a0]表示;poly——产生特征多项式系数向量
e.代数方程组求解
matlab中有两种除运算左除和右除。
四、实验内容
1.输入下列向量(矩阵)
>>g=[1234];h=[4321];
2.分别执行以下数组点运算
>>s1=g+h,s2=g.*h,s3=g.^h,s4=g.^2,s5=2.^h
g=[1234]
g=
1234
>>h=[4321]
h=
4321
>>s1=g+h
s1=
5555
>>s2=g.*h
s2=
4664
>>s3=g.^h
s3=
1894
>>s4=g.^2
s4=
14916
>>s5=2.^h
s5=
16842
3.输入下列特殊矩阵
〉〉A=[]
〉〉A=eye(10)
〉〉A=ones(5,10)
>>A=rand(10,15)
>>A=randn(5,10)
>>A=zeros(5,10)
A=[]
A=
[]
>>A=eye(10)
A=
1000000000
0100000000
0010000000
0001000000
0000100000
0000010000
0000001000
0000000100
0000000010
0000000001
>>A=ones(5,10)
A=
1111111111
1111111111
1111111111
1111111111
1111111111
>>A=rand(10,15)
A=
Columns1through6
0.95010.61540.05790.01530.83810.1934
0.23110.79190.35290.74680.01960.6822
0.60680.92180.81320.44510.68130.3028
0.48600.73820.00990.93180.37950.5417
0.89130.17630.13890.46600.83180.1509
0.76210.40570.20280.41860.50280.6979
0.45650.93550.19870.84620.70950.3784
0.01850.91690.60380.52520.42890.8600
0.82140.41030.27220.20260.30460.8537
0.44470.89360.19880.67210.18970.5936
Columns7through12
0.49660.72710.79480.13650.58280.2091
0.89980.30930.95680.01180.42350.3798
0.82160.83850.52260.89390.51550.7833
0.64490.56810.88010.19910.33400.6808
0.81800.37040.17300.29870.43290.4611
0.66020.70270.97970.66140.22590.5678
0.34200.54660.27140.28440.57980.7942
0.28970.44490.25230.46920.76040.0592
0.34120.69460.87570.06480.52980.6029
0.53410.62130.73730.98830.64050.0503
Columns13through15
0.41540.21400.6833
0.30500.64350.2126
0.87440.32000.8392
0.01500.96010.6288
0.76800.72660.1338
0.97080.41200.2071
0.99010.74460.6072
0.78890.26790.6299
0.43870.43990.3705
0.49830.93340.5751
>>A=randn(5,10)
A=
Columns1through6
-0.43261.1909-0.18670.11390.29440.8580
-1.66561.18920.72581.0668-1.33621.2540
0.1253-0.0376-0.58830.05930.7143-1.5937
0.28770.32732.1832-0.09561.6236-1.4410
-1.14650.1746-0.1364-0.8323-0.69180.5711
Columns7through10
-0.39990.6686-1.60410.5287
0.69001.19080.25730.2193
0.8156-1.2025-1.0565-0.9219
0.7119-0.01981.4151-2.1707
1.2902-0.1567-0.8051-0.0592
>>A=zeros(5,10)
A=
0000000000
0000000000
0000000000
0000000000
0000000000
4.输入下列矩阵及矩阵函数
>>A=[20–1;132];B=[17–1;423;201];
>>M=A*B%矩阵A与B按矩阵运算相乘
>>det_B=det(B)%矩阵A的行列式
>>rank_A=rank(A)%矩阵A的秩
>>inv_B=inv(B)%矩阵B的逆矩阵
>>[V,D]=eig(B)%矩阵B的特征值矩阵V与特征向量构成的矩阵D
>>X=A/B%A/B=A*B-1,即XB=A,求X
>>Y=B\A%B\A=B-1*A,即BY=A,求Y
A=[20-1;132]
A=
20-1
132
>>B=[17-1;423;201]
B=
17-1
423
201
>>M=A*B
M=
014-3
171310
>>det_B=det(B)
det_B=
20
>>rank_A=rank(A)
rank_A=
2
>>inv_B=inv(B)
inv_B=
0.1000-0.35001.1500
0.10000.1500-0.3500
-0.20000.7000-1.3000
>>[V,D]=eig(B)
V=
-0.70940.74440.7444
-0.6675-0.3599+0.0218i-0.3599-0.0218i
-0.2263-0.5587-0.0607i-0.5587+0.0607i
D=
7.268000
0-1.6340+0.2861i0
00-1.6340-0.2861i
>>X=A/B
X=
0.4000-1.40003.6000
0.00001.5000-2.5000
Y=B/A
Y=
0.60001.4286
1.00001.1429
0.60000.2857
5.多项式运算
>>p=[120-56]%表示多项式
>>rr=roots(p)%求多项式p的根
>>pp=poly(rr)%由根的列向量求多项式系数
>>s=[00123]%表示多项式
>>c=conv(p,s)%多项式乘积
>>d=polyder(p)%多项式微分
>>x=-1:
0.1:
2;
>>y=polyval(p,x)%计算多项式的值
p=[120-56]
p=
120-56
>>rr=roots(p)
rr=
-1.8647+1.3584i
-1.8647-1.3584i
0.8647+0.6161i
0.8647-0.6161i
>>pp=poly(rr)
pp=
1.00002.00000.0000-5.00006.0000
>>s=[00123]
s=
00123
>>c=conv(p,s)
c=
001471-4-318
>>d=polyder(p)
d=
460-5
>>x=-1:
0.1:
2;
>>y=polyval(p,x)
y=
Columns1through6
10.00009.69819.38569.05418.69768.3125
Columns7through12
7.89767.45416.98566.49816.00005.5021
Columns13through18
5.01764.56214.15363.81253.56163.4261
Columns19through24
3.43363.61414.00004.62615.52966.7501
Columns25through30
8.329610.312512.745615.678119.161623.2501
Column31
28.0000
6.有理多项式:
>>n=conv([10],[13])%定义分子多项式
>>d=conv([11],[113])%定义分母多项式
>>[r,p,k]=residue(n,d)%进行部分分式展开
>>p1=[1-p
(1)],p2=[1-p2]%定义两个极点多项式p1(s)=s-p
(1),p2(s)=s-p
(2)
>>den=conv(p1,p2)%求分母多项式den=p1(s)*p2(s)
>>num=conv(r1,p2)+conv(r2,p1)%求分子多项式
〉〉[num,den]=residue(r,p,k)%根据r,p,k的值求有理多项式
n=conv([10],[13])
n=
1030
>>d=conv([11],[113])
d=
1243
>>[r,p,k]=residue(n,d)
r=
-3.3333-4.0202i
-3.3333+4.0202i
6.6667
p=
-0.5000+1.6583i
-0.5000-1.6583i
-1.0000
k=
[]
p1=[1-p
(1)],p2=[1-p2]
p1=
1.5000-1.6583i
p2=
-0.5000-1.6583i
>>den=conv(p1,p2)
den=
-3.5000-1.6583i
num=conv(r,p2)+conv(r,p1)
num=
-16.6667+7.0353i
10.0000+15.0756i
6.6667-22.1108i
>>[num,den]=residue(r,p,k)
num=
0.000010.000030.0000
den=
1.00002.00004.00003.0000
7.函数插值运算
(1)线形样条插值
〉〉x=0:
10
>>y=sin(x)
>>x0=[3.44.76.58.2]
>>y0=interp1(x,y,x0)%线形插值
>>x1=0:
0.1:
10
>>y1=sin(x1)
>>plot(x1,y1,'r:
',x,y,'b*',x0,y0,'g.')%插值比较
x=0:
10
x=
Columns1through10
0123456789
Column11
10
>>y=sin(x)
y=
Columns1through6
00.84150.90930.1411-0.7568-0.9589
Columns7through11
-0.27940.65700.98