matlab实验内容答案解析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告说明:
matlab 课程实验需撰写8个实验报告,每个实验报告内容写每次实验内容中标号呈黑体大号字显示的题目。
第一次实验内容:
实验一 MATLAB 运算基础
一、实验目的
1.熟悉启动和退出MATLAB 的方法。
2.熟悉MATLAB 命令窗口的组成。
3.掌握建立矩阵的方法。
4.掌握MATLAB 各种表达式的书写规则以及常用函数的使用。
二、实验内容
1.先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存全部变量。
(1)2
2sin 8511z e ︒
=
+
(2)12ln(2z x =,其中2120.455i +⎡⎤
=⎢
⎥-⎣⎦
(3)0.30.33sin(0.3), 3.0, 2.9, 2.8,,2.8,2.9,3.02
a a
e e z a a --=
+=---
提示:利用冒号表达式生成a 向量,求各点的函数值时用点乘运算。
(4)22
20141
122123t t z t t t t t ⎧≤<⎪=-≤<⎨⎪--≤<⎩
,其中t =0:0.5:2.5 提示:用逻辑表达式求分段函数值。
2.已知
12344347873657A -⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦,131203327B -⎡⎤⎢⎥=⎢⎥⎢⎥-⎣⎦
求下列表达式的值:
(1) A+6=B 和A-B+I(其中I 为单位矩阵)。
(2) A*B 和A.*B 。
(3) A^3和A^.3 。
(4) A/B 和B\A 。
(5)[A ,B]和[A([1,3],;);B^2] 。
3.设有矩阵A 和B
1
234567891011
12131415161718192021
22232425A ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦, 30
161769023
497
0413
11B ⎡⎤
⎢⎥-⎢
⎥⎢⎥=-⎢
⎥⎢⎥⎢⎥⎣⎦
(1) 求它们的乘积C 。
(2) 将矩阵C 的右下角3×2子矩阵赋给D (3) 查看MATLAB 工作空间使用情况。
4.完成下列操作:
(1)求[100,999]之间能被21整除的数的个数。
提示:先利用冒号表达式,再利用find和length函数。
(2)建立一个字符串向量,删除其中的大写字母。
提示:利用find函数和空矩阵。
第二次实验内容:
实验三选择结构程序设计
一、实验目的
1.掌握建立和执行M文件的方法。
2.掌握利用if语句实现选择结构的方法。
3.掌握利用switch语句实现多分支选择结构的方法。
4.掌握try语句的使用。
二、实验内容
1.求下列分段函数的值。
22
26,03
56,
010,231x x x x y x x x x x x x ⎧+-<≠-⎪=-+≤<≠≠⎨⎪--⎩
且且其他
要求:
(1) 用if 语句实现,分别输出x= -5.0, -3.0, 1.0, 2.0, 2.5, 3.0, 5.0 时的y 值。
提示:x 的值从键盘输入,可以是向量。
(2) 仿照实验一第1题第4小题,用逻辑表达式实现,从而体会MATLAB 逻辑表达式的一种应
用。
clear
x=input('input the value of x :'); if x<0 & x~=3 y=x*x+x-6;
elseif x>=0 & x<10 & x~=2 &x~=3 y=x*x-5*x+6; else
y=x*x-x-1; end y
2.输入一个百分制成绩,要求输出成绩等级A,B,C,D,E 。
其中90~100分为A ,80~89分为B ,
70~79分为C ,60~69分为D ,60分以下为E 。
要求:
(1) 用switch 语句实现。
(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出错误信息。
if语句实现:
clear
x=input('input score:');
if x<0
disp('Sorry,The fail score!')
elseif x<60
disp('E')
elseif x<70
disp('D')
elseif x<80
disp('C')
elseif x<90
disp('B')
elseif x<=100
disp('A')
else
disp('Sorry,The fail score!')
end
switch语句实现:
clear
score=input('input the score:');
switch score
case num2cell(0:59)
disp('E')
case num2cell(60:69)
disp('D')
case num2cell(70:79)
disp('C')
case num2cell(80:89)
disp('B')
case num2cell(90:100)
disp('A')
otherwise
disp('Sorry!It''s the fail score,input the score again')
end
3. 建立5×6矩阵,要求输出矩阵第n行元素。
当n值超过矩阵的行数时,自动转为输出矩阵最后一行元素,并给出出错信息。
clear
A=[1,1,1,1,1,1;2,2,2,2,2,2;3,3,3,3,3,3;4,4,4,4,4,4;5,5,5,5,5,5];
n=input('请输入输出元素行数n=');
try
B=A(n,:); catch B=A(5,:); lasterr end B
实验四 循环结构程序设计
一、实验目的
1. 掌握利用for 语句实现循环结构的方法。
2. 掌握利用while 语句实现循环结构的方法。
3. 熟悉利用向量运算来代替循环操作的方法。
二、实验内容
1.根据
2
2
2221111
6
123
n
π=
++++
,求π的近似值。
当n 分别取100、1 000、10 000时,结果是多少?
要求:分别用循环结构和向量运算(使用sum 函数)来实现。
应用sum 的方法: clear n=100;i=1:n; y=1./i.^2; y1=sum(y);
pai=sqrt(6*y1)
第二种方法: clear y=0;
n=input('输入数据n :') for i=1:n y=y+1/(i*i); end
pai=sqrt(6*y)
2.根据. 111
135
21
y n =+++
+
-,求: (1)y<3时的最大n 值。
(2)于(1)的n 值对应的y 值。
clear y=0;n=1000; for i=1:1000 y=y+1/(2*i-1); if y>=3 break; end i=i+1;
end i 3. 已知
12
3123
1012,3
n n n n f f f f f f f n ---=⎧⎪=⎪⎨
=⎪⎪=-+>⎩
求1100f f -中:
(1) 最大值、最小值、各数之和。
(2) 正数、零、负数的个数。
------------------------------------------------- f=[1,0,1]; for n=4:100
f(n)=f(n-1)-2*f(n-2)+f(n-3); end
k=length(find(f<0)) k=length(find(f>0)) k=length(find(f==0))
-------------------------------------------------
4.若两个连续自然数的乘积减1是素数,则称这两个连续自然数是亲密数对,该素数是亲密素数。
求[2,50]区间内: (1)亲密数对的对数;
(2)与上述亲密数对对应的所有亲密素数之和。
实验五函数与文件
一、实验目的
1.掌握定义和调用,MATLAB函数的方法。
2.掌握MATLAB文件的基本操作。
二、实验内容
1. 定义一个函数文件,求给定复数的指数、对数、正弦和余弦,并在命令文件中调用该函数文件。
function [a,b,c,d]=susb(x)
a=exp(x);
b=sin(x);
c=log10(x);
d=cos(x);
调用:
x=1+2i
[a,b,c,d]=susb(x)
2. 一个自然数是素数,且它的各位数字位置经过任意对换后仍为素数,则称是绝对素数。
例如13是绝对素数。
试求所有两位的绝对素数。
要求:定义一个判断素数的函数文件。
function[q]=apnum(p); % 以下为函数文件,需单独保存 for i=2:9
n=find(rem(p,i)==0); % 找出能被i 整除的p 的位置 p(n)=[]; % 消去能被i 整除的p end
q=10*rem(p,10)+fix(p/10); % p 的个位和十位调换,调换后为q for j=2:9
m=find(rem(q,j)==0); % 找出能被j 整除的q 的位置 q(m)=[]; % 消去能被j 整除的q end 调用: clear all p=10:99; [q]=apnum(p) 3. 已知)
20()30()
40(f f f y +=
(1)当)5ln(10)(2
++=n n n f 时,求y 的值。
(2)当)1(433221)(+⨯++⨯+⨯+⨯=n n n f 时,求y 的值。
第三次实验内容:
实验六 高层绘图操作
一、实验目的
1. 掌握绘制二维图形的常用函数。
2. 掌握绘制三维图形的常用函数。
二、实验内容
1. 已知213),2cos(2,12
y y y x y x y ⨯===完成下列操作:
(1)在同一坐标系下用不同的颜色和线型绘制三条曲线。
(2)以子图形式绘制3条曲线。
(3)分别用条图形、阶梯图、杆图和填充图绘制3条曲线。
2. 分别用plot 和fplot 函数绘制函数1
sin y x
=的曲线,分析两曲线的差别。
3. 绘制函数的曲面图和等高线。
已知 2
22(2)x
y xy
z x x e ---=-
提示:绘制三维曲面图,首先要选定一平面区域并在该区域产生网络坐标矩阵。
在做本题前,先分析并上机验证下列命令的执行结果,从中体会产生网络坐标矩阵的方法。
[x,y]=meshgrid(-1:0.5:2,1:5)
3. 已知6<x<30,15<y<36,求不定方程2x+5y=126的整数解。
x=7:29; y=16:35;
[x,y]=meshgrid(x,y); %在[7,29]×[16,35]区域生成网格坐标 z=2*x+5*y;
k=find(z==126); %找出解的位置
x(k),y(k) %输出对应位置的x,y即方程的解
5. 裁掉表现函数z=sin(y)cos(x)三维曲面图中z>0.25部分。
x=0:0.1:2*pi;[x,y]=meshgrid(x);z=sin(y).*cos(x);
[I,J]=find(z>0.25);
for ii=1:length(I)
z(I(ii),J(ii))=NaN;
end
surf(x,y,z);
实验七低层绘图操作
一、实验目的
1.掌握图形对象属性的基本操作。
2.掌握利用图形对象进行绘图操作的方法。
二、实验内容
1. 建立一个图形窗口,使之背景颜色为红色,并在窗口上保留原有的菜单项,而且在按下鼠标器的左键之后显示出Left Button Pressed字样。
hf=figure('Color',[1,0,0],'WindowButtonDownFcn','disp(''Left Button Pressed.'')');
2. 先利用缺省属性绘制曲线22x
=,然后通过图形句柄操作来改变曲线的颜色、线型和线宽,
y x e
并利用文字对象给曲线添加文字标注22x
=。
y x e
实验十二菜单设计
一、实验目的
1. 了解图形用户界面的特点。
2. 掌握菜单设计的方法。
3.掌握对话框设计的方法。
二、实验内容
1. 设计菜单。
菜单条仅有File菜单项,File下有New、Plot和Exit等3个选项。
选择New时利用Edit命令建立一个新的M文件。
选择Plot将显示下一级菜单,其中有Sine Wave和Cosine Wave两个子菜单项,且若选择了其中的Sine Wave子菜单项,则将打开一个新的图形窗口并显示出正弦曲线。
若选择了其中的Cosine Wave 子菜单项,则将打开一个新的图形窗口并显示出余弦曲线。
如果选择Exit菜单项,则将关闭窗口并推出用户系统回到MATLAB命令窗口。
2. 为图形窗口建立快捷菜单,用以控制窗口的背景颜色和大小。
4.设计一个对话框,其中有一个编辑框和按钮,当单击按钮时,使编辑框的内容加5。
第四次实验内容:
实验二矩阵分析
一、实验目的
1.掌握生成特殊矩阵的方法。
2.掌握矩阵分析的方法。
二、实验内容
1. 产生5阶希尔伯特矩阵H 和5阶帕斯卡矩阵P ,且求其行列式的值Hh 和Hp 以及它们的条件数Th 和Tp ,判断哪个矩阵性能更好,为什么? H=hilb(5) %产生55阶希尔波特矩阵 P=pascal(5) %产生55阶帕斯卡矩阵 Hh=det(H); %计算行列式的值 Ph=det(P);
Th=cond(H); %计算条件数 Tp=cond(P); Hh Ph Th Tp
2. 建立一个5×5矩阵,求它的行列式值、迹、秩和范数。
A=[1 2 3 4 5;2 3 4 5 6;3 4 5 6 7;4 5 6 7 8;5 6 7 8 9]; det(A) trace(A) rank(A) norm(A)
3. 已知
2961820512885A -⎡⎤⎢⎥=⎢⎥⎢⎥-⎣⎦
求A的特征值及特征向量,并分析其数学意义。
实验八数据处理和多项式计算
一、实验目的
1.掌握数据统计和分析的方法。
2.掌握数值插值与曲线拟合的方法及其应用。
3.掌握多项式的常用运算。
二、实验内容
1. 将100个学生5门功课的成绩存入矩阵P中,进行如下处理:
(1)分别求每门课的最高分、最低分及相应学生序号。
(2)分别求每门课的平均分合标准方差。
(3)5门课总分的最高分、最低分及相应学生序号。
(4)将5门课总分按从大到小顺序存入zcj中,相应学生序号存入xsxh。
提示:上机调试时,为避免输入学生成绩的麻烦,可用取值范围在[45,95]之间的随机矩阵来表示学生成绩。
A=rand(5,100);
P=100*A;
[Y,U1]=max(P,[],2); % 求每门功课的最高分、序号
[X,U2]=min(P,[],2); % 求每门功课的最低分、序号
Y
U1
X U2
Z1=mean(P ,2) % 求每门功课的平均值 Z2=std(P ,1,2) % 求每门功课的标准方差 B1=cumsum(P); % 求五门功课的总成绩 B=B1(5,:);
[YZ,UZ1]=max(B,[],2) % 求总成绩的最高分 [XZ,UZ2]=min(B,[],2) % 求总成绩的最低分 zcj=-sort(-B,2)
2. 已知lg(x)在[1,101]区间11个整数采样点的函数值如表2所示。
试求lg(x)的5次拟合多项式p(x),并分别绘制出lg(x)和p(x)在[1,101]区间的函数曲线。
x=[1:10:101];
y=[0,1.0414,1.3222,1.4914,1.6128,1.7076,1.7853,1.8513,1.9085,1.9590,2.0043]; [P ,S]=polyfit(x,y,5)
plot(x,y,'k*',x,polyval(P ,x),'k-')
3. 有3个多项式4322123()245,()2,()23,p x x x x p x x p x x x =+++=+=++试进行下列操作:
求()p x =1()p x +2()p x 3()
p x 。
(1) 求()p x 的根。
(2) 当x 取矩阵A 的每一元素时,求P (x )的值。
其中
1 1.
2 1.40.752 3.505 2.5A --⎡⎤⎢⎥=⎢⎥
⎢⎥⎣⎦
(3) 当以矩阵A 为自变量时,求P (x )的值。
其中A 的值与(3)相同。
p1=[1,2,4,0,5]
p22=[1,2];p2=[0,0,0,p22]; p33=[1,2,3];p3=[0,0,p33]; p=p1+p2.*p3
x=roots(p) % 求多项式的根 A=[-1,1.2,-1.4;0.75,2,3.5;0,5,2.5];
G=poly(A) % X=A 时P(X)的值
第五次实验内容:
实验九 符号计算基础与符号微积分
一、实验目的
1. 掌握定义符号对象的方法。
2. 掌握符号表达式的运算法则以及符号矩阵运算。
3. 掌握求符号函数极限及导数的方法。
4. 掌握求符号函数定积分和不定积分的方法。
二、实验内容
1. 已知x=6,y=5,利用符号表达式求
z =
提示:定义符号常数x=sym(‘6’),y=sym(‘5’)。
x=sym('6'); y=sym('5');
z=(x+1)/(sqrt(3+x)-sqrt(y))
2. 用符号方法求下列极限或导数。
(1)sin tan 30(1)2(1)
lim sin x x x x e e x
→+--
syms x;
f=(x*(exp(sin(x))+1)-2*(exp(tan(x))-1))/(sin(x))^3; limit(f,x,0)
(2)已知3cos ln x
a t A t x
x ⎡⎤=⎢
⎥⎣⎦
,分别求222,,
dA d A d A
dx dt dxdt syms a t x;
A=[a^x,t^3;t*cos(x),log(x)];
diff(A,x) %求X 一阶导数 diff(A,x,2) %求X 二阶导数 diff(diff(A,x),t) %求X 导数的T 导数
3. 用符号方法求下列积分。
(1)
481dx
x x ++⎰
x=sym('x'); f=1/(1+x^4+x^8);
_
int(f) (2)
240
1
1
x dx x +∞
++⎰
x=sym('x');
f=(x^2+1)/(x^4+1); int(f,0,inf)
实验十 级数与方程符号求解
一、实验目的
1. 掌握级数求和的方法。
2. 掌握将函数展开为泰勒级数的方法。
3. 掌握微分方程符号求解的方法。
4. 掌握代数方程符号求解的方法。
二、实验内容
1. 级数符号求和。
计算10
11
21
n S n ==
-∑ n=sym('n');
S=symsum(1/(2*n-1),n,1,10)
(1) 求级数
21
1
n n n x
∞
-=∑之和函数,并求2
15
n n n ∞
=∑之和。
syms n x;
S2=symsum((n^2)*x^(n-1),n,1,inf) %求N 的从1到无穷的和函数
S3=symsum((n^2)/5^n)
2. 将ln(x)在x=1处按5次多项式展开为泰勒级数。
x=sym('x'); f=log(x); taylor(f,x,6,1)
2. 求微分方程的符号解。
22
20(0)'(0),,d y k y dx y a y b a b k ⎧+=⎪⎪⎪
=⎨⎪=⎪⎪⎩为任意常数
syms x y a b k;
m=dsolve('D2y+k^2*y','y(0)=a','Dy(0)=b','x')
4. 求下列方程和方程组的符号解。
(1)35sin 78.50x
xe x +-=
x=solve('3*x*exp(x)+5*sin(x)-78.5','x')
(2
)1000
3580
x y =+-=⎪⎩
[x y]=solve('sqrt(x^2+y^2)-100','3*x+5*y-8','x,y')
(3)5
ln(1)21sin x x
+-
=+
x=solve('log(1+x)-5/(1+sin(x))=2','x')
(4
)2
10x +=
x=solve('x^2+9*sqrt(x+1)-1','x')
第六次实验内容:
实验十三 Simulink 的应用
一、实验目的
1. 熟悉Simulink 的操作环境并掌握构建系统模型的方法。
2. 掌握Simulink 中子系统模块的建立与封装技术。
3. 对简单系统所给出的数学模型能转化为系统仿真模型并进行仿真分析。
二、实验内容
1. 假设从实际应用领域(力学、电学、生态或社会)中,抽象出有初始状态为0的二阶微分方程
0.20.40.2()x x u t '''++=,()u t 是单位阶跃函数。
用积分器直接构造求解微分方程的模型
exm1.mdl 并仿真。
2. 利用传递函数模块建模。
仍以下面的二阶微分方程为例0.20.40.2()x x u t '''++=
3. 利用状态方程模块建模。
仍以下面的二阶微分方程为例0.20.40.2()x x u t '''++=
第七次实验内容:
实验十四 综合实验(1)
一、实验目的
综合运用所学知识,掌握利用MATLAB 解决控制系统仿真分析与设计的方法。
二、实验内容
1.用Matlab 表示传递函数为 1234322
3++++s s s s 的系统。
2.用Matlab 表示传递函数为
)
2)(1()
3(2+++s s s s 的系统。
3. 用Matlab 表示状态空间表达式为⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢
⎢⎢⎣⎡+⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢
⎢⎢⎣⎡---=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡321321321]001[100321100010x x x y u x x x x x x
的系统。
A=[0 1 0;0 0 1;-1 -2 -3]; B=[0;0;1]; C=[1 0 0]; D=0;
Gf=ss(A,B,C,D)
4. 已知某控制系统的传递函数为2
31
)(2++=
s s s G ,求Matlab 描述的传递函数模型及零极点增
益模型。
num=[1]; den=[1 3 2]; Gtf=tf(num,den) Gzpk=zpk(Gtf)
5. 用MATLAB 绘制典型二阶系统的单位阶跃响应曲线。
Step :(Gtf)
6. 已知单位负反馈系统的开环传递函数为)
3)(1(2
)(+++=
s s s s s G ,试判断系统的闭环稳定性。
k=1; z=[-2];
p=[0 -1 -3]; G=zpk(z,p,k); Gtf=feedback(G,1) pzmap(Gtf)
7. 已知一单位负反馈系统的开环传递函数为
G(s)=
)
5.1)(5.0()
2.0(5+-+s s s s ,试求单位阶跃信号作为
参考输入时产生的稳态误差。
k=5; z=[-0.2]; p=[0 0.5 -1.5]; G=zpk(z,p,k); Gtf=feedback(G,1) step(Gtf)
[numk,denk]=tfdata(Gtf); Kp=dcgain(numk,denk)
第八次实验内容:
实验十四 综合实验(2)
一、实验目的
综合运用所学知识,掌握利用MATLAB 解决控制系统仿真分析与设计的方法。
二、实验内容
8. 已知系统开环传递函数为)
15.0)(13(2
)(++=
s s s s G ,试利用MATLAB 画出系统的奈奎斯特
图。
num=2;
den=conv([1 0],conv([3 1],[0.5 1])); G=tf(num,den); Nyquist(G)
9.已知一单位反馈系统开环传递函数为G(s)=2/(s^3+6s^2+5s),试绘制bode 图并计算系统
频域性 能指标。
num=[0 0 0 2]; den=[1 6 5 0]; G=tf(num,den); Gtf=feedback(G,1); bode(Gtf) sys=tf(num,den);
[mag,phase,w]=bode(sys);
[gm,pm,wcp,wcg]=margin(mag,phase,w)
Gm 是系统的幅值裕量; Pm 是系统的相角裕量; Wcp 是Gm 对应的角频率; Wcg 是Pm 对应的角频率;
10. 已知单位反馈系统被控对象的传递函数为G 0(s )=K 0/(0.0001s^3+0.101s^2+s),试用bode 图设计方法对系统进行超前串联校正,使之满足: (1)在速度信号作用下,系统的稳态误差小于等于0.001;
(2)系统校正后,相角稳定裕度介于43与48度之间。
11. 使用子系统封装实现下图所示的变化。
12. 若已知如上题图所示的系统,试利用系统线性化分析的方法求系统的闭环传递函数,并绘制系统的阶跃响应曲线。