Matlab实验及答案.docx
- 文档编号:3893667
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:32
- 大小:465.85KB
Matlab实验及答案.docx
《Matlab实验及答案.docx》由会员分享,可在线阅读,更多相关《Matlab实验及答案.docx(32页珍藏版)》请在冰豆网上搜索。
Matlab实验及答案
-CAL-FENGHAI.-(YICAI)-CompanyOne1-CAL-本页仅作为文档封面,使用请直接删除
Matlab实验及答案(总32页)
实验一、MATLAB基本操作
一、实验目的
2.学习使用图形函数计算器命令funtool及其环境。
3.学习使用help命令进行帮助
4.掌握向量与矩阵的创建以及矩阵的基本操作
5.掌握数组与矩阵的概念
二、实验内容
熟悉Matlab操作环境,认识命令窗口、内存工作区窗口、历史命令窗口;学会使用format命令调整命令窗口的数据显示格式;学会使用变量和矩阵的输入,并进行简单的计算;掌握数组与矩阵的概念;学会使用help命令进行帮助;学会使用who和whos命令查看内存变量信息;学会使用图形函数计算器funtool;
1.命令窗口的简单使用
(1)简单矩阵的输入(自由创建)
x=[135;246]
x=
135
246
(2)求[12+2×(7-4)]÷32的算术运算结果,总结算术运算符先级
[12+2*(7-4)]/3^2
ans=
2
2.有关向量、矩阵或数组的一些运算
(1)设A=15;B=20;求C=A+B与c=a+b的区别
A=15;B=20;
>>C=A+B
C=
35
>>c=a+b
Undefinedfunctionorvariable'a'.
(2)设A=[123;456;789],B=[987;654;321];求A*B与A.*B,分析原因
(A*B是两个矩阵相乘,A.*B是对应元素相乘)
A=[123;456;789];
B=[987;654;321];
>>A*B
ans=
302418
846954
13811490
>>A.*B
ans=
91621
242524
21169
(3)设a=10,b=20;求i=a/b与j=a\b
a=10;
>>b=20;
>>i=a/b
i=
>>j=a\b
j=
2
(4)设a=[1-23;45-4;5-67]
请设计出程序,分别找出小于0的矩阵元素的线性索引以及行列索引(sub2ind/ind2sub)。
(find())
并将其单下标转换成全下标。
clear,clc
a=[1-23;45-4;5-67];
b=find(a<0)
[x,y]=ind2sub(size(a),find(a<0))
Y=sort(a,1,‘descend’)
2.对矩阵按列从大到小排列(sort())
(5)在MATLAB命令行窗口运行A=[1,2;3,4]+i*[5,6;7,8];看结果如何如果改成运行A=[1,2;3,4]+i[5,6;7,8],结果又如何
>>A=[1,2;3,4]+i*[5,6;7,8]
A=
>>A=[1,2;3,4]+i[5,6;7,8]
A=[1,2;3,4]+i[5,6;7,8]
Error:
Unbalancedormisusedparenthesesorbrackets.
前面那个是虚数矩阵,后面那个出错
(6)请写出完成下列计算的指令:
a=[123;342;523],求a^2=,a.^2=
a^2=221616
252623
262428
a.^2=
149
9164
2549
(7)有一段指令如下,请思考并说明运行结果及其原因
clear
X=[12;89;36];
X(:
)转化为列向量
>>clear
>>X=[1,2;8,9;3,6];
>>X(:
)
ans=
1
8
3
2
9
6
(8)使用help命令,明白什么是稀疏矩阵sparse(),并用采用两种方法创建下面的稀疏矩阵(其中一种方法采用help所提供的三元组方法创建稀疏矩阵
(S=SPARSE(i,j,s,m,n)))
2080
0001
0400
6000
另:
=该稀疏矩阵上下反转
2.该矩阵变维,C为2*8矩阵,D为3*8矩阵,CD
方法一:
clear,clc
data=[28146];
ir=[11234];
jc=[13421];
s=sparse(ir,jc,data,4,4);
full(s)
方法二:
不用三元组法
clear,clc
a=zeros(4,4);
a(1,[1,3])=[2,8];
a(2,4)=1;
a(3,2)=4;
a(4,1)=6;
a
B=flipud(a)
C=reshape(a,2,8)
(9)学会使用图形函数计算器(funtool命令),并进行下列计算:
1.求函数的符号导数
y=sin(x);
2.求下列函数的符号积分
(1)y=1/sqrt(1-x^2);
3.求两个函数之间的操作
求和
(1)sin(x)+cos(x)
乘积
(1)exp(-x)*sin(x)
商
(2)
(1)sin(x)/cos(x);
求复合函数
(1)y=exp(u)u=sin(x)
(10)总结who,whos,clc,clear命令
三、设计提示
1.初次接触Matlab应该注意函数表达式的文本式描述。
2.在使用图形函数计算器funtool时,注意观察1号和2号窗口中函数的图形。
3.help帮助命令的使用
3.向量与矩阵的创建
实验二:
数组运算及线型方程组的求解
二、实验内容
1.“:
”号的用法。
用“:
”号生成行向量a=[12345678910]、b=[531-1-3-5];用线性等分命令linspace重新生成上述的a和b向量。
另,在100和10000之间用对数等分命令logspace生成10维的向量c。
ak=logspace(2,4,10)linspace(1,10,10)linspace(5,-5,6)
2.已知多项式a(x)=x2+2x+3,b(x)=4x2+5x+6,求a,b的积并微分。
>>a=[1,2,3];b=[4,5,6];polyder(a,b)
ans=
16395627
>>poly2str(ans,'x')
ans=
16x^3+39x^2+56x+27
3.生成下列矩阵,取出方框内的数组元素
a(2,2:
3)
a(2:
4,4)
a(4:
5,1:
3)
4.生成一个9×9维的魔方矩阵,提取其中心的3×3维子矩阵M,利用sum函数检验其各行和各列的和是否相等。
并且实现上述中心矩阵左旋90°或右旋90°,左右翻转,上下翻转
a=magic(9)
>>b=a(4:
6,4:
6)
b=
203142
304152
405162
>>sum(b,1)
ans=
90123156
>>sum(b,2)
ans=
93
123
153
rot90(b)
rot90(b,-1)
fliplr(b)
flipud(b)
5.已知a=[123;456;780],求其特征多项式并求其根、特征值和特征多项式
>>a=[123;456;780]
a=
123
456
780
>>poly(a)
ans=
>>poly2sym(ans)
ans=
x^3-6*x^2-72*x-/28
>>[dv]=eig(a)
d=
v=
00
00
00
6.计算二重不定积分
>>symsxy
>>f=int(int(x*exp(-x*y),x),y)
或
>>x=sym('x')
x=
x
>>y=sym('y')
y=
y
>>f=int(int(x*exp(-x*y),x),y)
f=
1/y*exp(-x*y)
8.求解微分方程
。
y=dsolve('D2y+2*Dy+2*y=0','y(0)=1','Dy(0)=0')
9.求其解。
>>a=[6914-115;114-7-15-6;-21-712-1;61111-9-13]
a=
6914-115
114-7-15-6
-21-712-1
61111-9-13
>>b=[68294-441103]'
b=
68
294
-441
103
>>ra=rank(a)
ra=
4
>>rb=rank([a,b])
rb=
4
%4<5
>>x1=null(sym(a))
x1=
27713/253
-11117/506
-8394/253
1
1619/506
>>a\b
ans=
0
X=K*x1+ans
实验三:
二维图形和三维图形的创建
一、实验目的
1.掌握二维图形的绘制。
2.掌握图形的标注
3.了解三维曲线和曲面图形的绘制。
二、实验内容
1.生成1×10维的随机数向量a,在同一幅图片上分别用红、黄、蓝、绿色绘出其连线图、脉冲图、阶梯图和条形图,并分别标出标题“连线图”、“脉冲图”、“阶梯图”、“条形图”。
>>x=rand(1,10)
x=
Columns1through7
Columns8through10
>>subplot(141);
>>plot(x)
>>subplot(142);
>>stem(x)
>>subplot(143);
>>stairs(x)
>>subplot(144);
>>bar(x)
2.绘制向量x=[132]的饼形图,并把3对应的部分分离出来。
x=[132];
>>pie(x,[01000])
3.用holdon命令在同一个窗口绘制曲线y=sin(t),y1=sin(t+
y2=sin(t+,其中t=[010]。
t=0:
2*pi/100:
10;
y1=sin(t);
plot(t,y1)
holdon
y2=sin(t+;
plot(t,y2)
holdon
y3=sin(t+;
plot(t,y3)
4.绘制曲线x=tcos(3t)
y=tsin2t其中-π≤t≤π,步长取π/100。
要求:
要图形注解、标题、坐标轴标签,并在曲线上截取一点,将相对应的坐标值文本标注出来(ginput())。
;
t=-pi:
pi/100:
pi;
x=t.*cos(3*t);
y=t.*sin(t).^2;
plot(x,y);
title('曲线图');
legend('x=tcos(3t),y=tsin^2t');
xlabel('x轴数据');
ylabel('y轴数据');
>>holdon
>>[m,n]=ginput
(1)
m=
n=
>>plot(m,n,'or')
>>text(m,n,['m=',num2str(m),'n=',num2str(n)])
5.在三个子图像中,分别绘制三维曲线,三维曲面,三维网格的半径为6,坐标为(6,7,6)的由900个面构成的球面(sphere()),对每个图形标注标题
[x,y,z]=sphere(30);
Z=z*5+6;
X=x*5+6;
Y=y*5+7;
subplot(1,3,1)
mesh(X,Y,Z);
title('三维网格')
subplot(1,3,2)
plot3(X,Y,Z)
title('三维曲线')
subplot(1,3,3)
surf(X,Y,Z)
title('三维曲面')
6.
(1)绘一个圆柱螺旋线(形似弹簧)图。
圆柱截面直径为10,高度为5,每圈上升高度为1。
如左图所示。
2)利用
(1)的结果,对程序做少许修改,得到如右图所示图形。
(>>t=0:
:
5;
x1=5*cos(2*pi*t);
y1=5*sin(2*pi*t);
z=t;
subplot(121),plot3(x1,y1,z)
>>gridon
>>x2=t.*cos(2*pi*t);
>>y2=t.*sin(2*pi*t);
>>z=t;
>>subplot(122),plot3(x2,y2,z)
>>gridon
思考题:
如果要绘制出如图所示的图形,请先指出这四个图形分别对应哪副图,以及请正确填写下列空格
subplot(6,4,[234678]);plot(1:
10);gridon;
subplot(6,4,[10111415]);plot(peaks);gridon;
subplot(6,4,[59]);plot(membrane);gridon;
subplot(6,4,[17182122]);surf(membrane);gridon;
三、设计提示
1.Matlab允许在一个图形中画多条曲线:
plot(x1,y1,x2,y2,……)指令绘制
等多条曲线。
Matlab自动给这些曲线以不同颜色。
标注可用text函数,legend函数等,数据截取ginput函数,。
2.若干个图像在一副图像上显示,可以用holdon,子图像用subplot函数。
3.三维绘图函数为plot3,mesh(),surf()。
实验四:
函数编写与程序设计
一、实验目的
1.掌握M文件的创建。
2.掌握函数的编写规则。
3.掌握函数的调用。
4.掌握基本的输入输出函数以及显示函数的用法。
5.会用Matlab程序设计实现一些工程算法问题。
二、实验内容
1.设计程序,完成两位数的加、减、乘、除四则运算,即产生两个两位随机整数,再输入一个运算符号,做相应的运算,显示相应的结果,并要求结果显示类似于“a=x+y=34”。
解:
a=input('请输入一个数:
');
b=input('请再输入一个数:
');
fuhao=input('请输入一个运算符号(+-*/):
','s');
switchfuhao
case{'+'}
he=a+b;
disp(['和=',num2str(a),'+',num2str(b),'=',num2str(he)])
case{'-'}
he=a-b;
disp(['差=',num2str(a),'-',num2str(b),'=',num2str(he)])
case{'*'}
he=a*b;
disp(['积=',num2str(a),'*',num2str(b),'=',num2str(he)])
case{'/'}
he=a/b;
disp(['商=',num2str(a),'/',num2str(b),'=',num2str(he)])
otherwisedisp('请输入正确的符号')
end
2.求下列分段函数的值
要求:
用if语句实现,分别输出x=,,,,,,时的y值。
其中x的值以向量的形式从键盘输入。
(length())
解:
x=[];
y=[];
x=input('请输入x的值:
');
fork=1:
length(x)
ifx(k)<0&x(k)~=-3
y(k)=x(k).^2+x(k)-6;
elseifx(k)>=0&x(k)<10&x(k)~=2&x(k)~=3
y(k)=x(k).^2-5*x(k)+6;
else
y(k)=x(k).^2-x(k)-1;
end
end
fori=1:
length(y)
disp(['y(',num2str(x(i)),')','=',num2str(y(i))]);
end
[]
3.编写一个mcircle(r)函数,调用该函数时,根据给定的半径r,以
4.输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。
其中90分~100分为A,80分~分为B,70分~为C,60分~分为D,60分以下为E。
要求:
1)分别用if语句和switch语句实现
2)对不合理的成绩应输出出错信息“输入的成绩不合理”(若成绩出现小数,则只能是“.5”)
(num2cell函数:
将数值矩阵转化为单位矩阵
num2cell(1:
5)={12345})
解:
score=input('请输入您的分数:
');
ifrem(score,==0
switchscore
casenum2cell(90:
:
100)
disp('您的成绩等级为A')
casenum2cell(80:
:
89)
disp('您的成绩等级为B')
casenum2cell(70:
:
79)
disp('您的成绩等级为C')
casenum2cell(60:
:
69)
disp('您的成绩等级为D')
casenum2cell(0:
:
disp('您的成绩等级为E')
otherwise
disp('你输入的成绩不合理')
end
else
disp('你输入的成绩不合理,若出现小数只能是')
end
5.编写一个函数,实现对一个向量求以及求平均值的功能。
(要求实现函数中,输入若不是一个向量,则报错)
function[s,m]=qiu(v)
[m,n]=size(v);
if(m>1&n>1)|(m==1&n==1)
error('error')
end
s=sum(v);
m=s/length(v);
6.Fibonacci数组的元素满足Fibonacci规则:
a(k+2)=a(k)+a(k+1),(k=1,2,3,…);且a1=a2=1。
请设计一段程序,求出该数组中第一个大于10000的元素
要求显示的结果为:
i=21
a(i)=10946
或者
a(21)=10946
法一:
a
(1)=1;
a
(2)=1;
fork=1:
10000%不能是3:
10000
a(k+2)=a(k)+a(k+1);
ifa(k)>10000
break;
end
end
disp(['k=',num2str(k)])
disp(['a(k)=',num2str(a(k))])
8.编写一个阶乘函数,利用该函数找出最小的n值,使得n!
>10100,并求出n!
。
解:
functions=jiecheng(n)
s=1;
ifn==0
s=1;
elseifn<0
error('n必须大于等于0')
else
fori=1:
n
s=s*i;
end
end
forn=1:
1000
if(jiecheng(n)>10^100)
break;
end
end
str1=['n=',num2str(n)];
str2=['n!
=',num2str(s)];
disp(str1)
disp(str2)
9.程序设计:
公元前五世纪我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:
鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。
百钱买百鸡,问鸡翁、母、雏各几何x+y+z=100
5x+3y+z/3=100
这是一个欠定方程。
forx=0:
19
fory=0:
33
forz=0:
100
if(x+y+z==100)&(5*x+3*y+z/3==100)
d=[x,y,z]
end
end
end
end
三、设计提示
1.函数名和函数文件名应相同;对调用参数的取值范围要检验是否符合要求,如不符合要求,应给出出错信息(用if和error或disp函数实现)。
2.程序设计——“百鸡问题”答案不唯一。
提示:
设x:
鸡翁数,则x的范围:
0~19;y:
鸡母数,则y的范围:
0~33;z:
鸡雏数,则z的范围:
0~100。
实验五:
Matlab多项式和符号运算
二、实验内容
1.将多项式
化为x的降幂排列。
p=poly([2-37-1])
P=poly([2,-3,7,-1])
poly2str(P,'x')
结果:
ans=
x^4-5x^3-19x^2+29x+42
2.求一元高次方程的根。
P1=[1-5-30150273-1365-8204100576-2880];
x1=roots(P1)
结果:
x1=
4.对比用多项式函数的polyder函数及符号函数中的diff函数,求导x2+2x+3。
a=[123]%x2+2x+3
polyder(a)%ans=222x+2
symsx;
f=x^2+2*x+3;
diff(f)%ans=2*x+2
5.求多项式
在点2、4、5的值
A=[13-21];
>>polyval(A,[245])
ans=
17105191
6.计算a(x)=2x3+4x2+6x+8,b(x)=3x2+6x+9的多项式相加(试着编写一个polyadd的函数,实现多项式相加的功能)
a=[2468];
b=[0369];
c=a+b
functiony=polyadd(x1,x2)
n1=length(x1);
n2=length(x2);
ifn1>n2
x2=[zeros(1,n1-n2),x2];
end
ifn2>n1
x1=[zeros(1,n2-n1),x1];
end
y=x1+x2;
end
>>a=[2468];
b=[0369];
c=polyadd(a,b)
7.求多项式
和
的乘积
;并求
的商和余式。
(conv()deconv())
f1=sym('x^3+3*x^2+5*x+7');
f2=sym('8*x^3-6*x^2+4*x-2');
f=f1*f2
collect(f)
(f-f1)/f2
collect(ans)
结果:
f=
(x^3+3*x^2+5*x+7)*(8*x^3-6*x^2+4*x-2)
f=
8*x^6+18*x^5+26*x^4+36*x^3-28*x^2+18*x-14
h=
(-21+8*x^6+18*x^5+26*x^4+35*x^3-31*x^2+13*x)/(8*x^3-6*x^2+4*x-2)
h=
(-21+8*x^6+18*x^5+26*x^4+35*x^3-31*x^2+13*x)/(8
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 实验 答案