matlab实验报告.docx
《matlab实验报告.docx》由会员分享,可在线阅读,更多相关《matlab实验报告.docx(27页珍藏版)》请在冰豆网上搜索。
matlab实验报告
《MATLAB程序设计教程》
实验报告
姓名:
学号:
专业:
班级:
201年月日星期日
第一次作业
1.求下列表达式的值。
(1)
w=sqrt
(2)*(1+0.34245*power(10,-6))
w=
1.4142
(2)
其中a=3.5,b=5,c=9.8。
。
x=(2*pi*3.5+(5+(-9.8))/(pi+3.5*5*(-9.8))-exp
(2))/(tan(5+(-9.8))+3.5)
x=
6.6186
(3)
,其中
,
>>alpha=3.32;beta=-7.9;
y=2*pi*alpha*alpha*((1-pi/4)*beta-(0.8333-pi/4)*alpha)
y=
-128.4271
(4)
,其中
>>t=[2,1-3i;5,-0.65];
z=exp(2*t)*log(t+sqrt(1+t*t))/2
z=
1.0e+004*
0.0057-0.0007i0.0049-0.0027i
1.9884-0.3696i1.7706-1.0539i
2.已知
,
,求下列表达式的值:
(1)
、
(其中I为单位阵);
>>A=[-1,5,-4;0,7,8;3,61,7];B=[8,3,-1;2,5,3;-3,2,0];I=eye(size(A));
>>A+6*B
ans=
4723-10
123726
-15737
>>A^2-B+I
ans=
-18-21717
22533109
21867526
(2)A*B、A.*B、B*A、B.*A;
>>A*B
ans=
141416
-105121
125328180
>>A.*B
ans=
-8154
03524
-91220
>>B*A
ans=
-110-15
722853
3-128
>>B.*A
ans=
-8154
03524
-91220
(3)A/B、B\A;
>>A/B
ans=
1.2234-0.92552.9787
-0.94682.3511-0.9574
4.61703.872313.8936
>>B\A
ans=
-0.5106-8.6170-1.1277
0.734017.57451.8085
-0.8830-21.21280.4043
(4)[A,B]、[A([13],:
);B^2]。
>>[A,B]
ans=
-15-483-1
078253
3617-320
>>[A([13],:
);B^2]
ans=
-15-4
3617
73371
173713
-2019
3.已知
1)取出A的前三行构成矩阵B,其前两列构成矩阵C,其右下角3×2子矩阵构成的矩阵D,B与C的乘积构成矩阵E。
>>A=[23,10,-0.778,0;41,-45,65,5;32,5,0,32;6,-9.54,54,3.14];
B=A(1:
3,:
);
C=A(:
1:
2);
D=A([2:
4],3:
4);
E=B*C;
2)分别求E>>Eans=
01
00
01
>>E&D
ans=
11
01
11
>>E|D
ans=
11
11
11
>>~E|~D
ans=
00
10
00
4.产生均值为3,方差为1的5阶正态分布的随机方阵。
>>3+sqrt
(1)*randn(5)
ans=
1.98942.35643.00003.89563.5689
3.61453.38032.68213.73102.7444
3.50771.99094.09503.57792.6225
4.69242.98051.12603.04032.7041
3.59132.95183.42823.67711.5249
5.使用函数,实现方阵A左旋
、右旋
的功能,
。
>>A=[1,4,7,10;2,5,8,11;3,6,9,12;4,7,10,13]
A=
14710
25811
36912
471013
>>rot90(A)
ans=
10111213
78910
4567
1234
>>rot90(A,-1)
ans=
4321
7654
10987
13121110
6.建立一个字符串向量,删除其中的大写字母。
>>ch='abcdefghiJK1234'
ch=abcdefghiJK1234
>>k=find(ch>='A'&ch<='Z')
k=
1011
>>ch(k)=[]
ch=abcdefghi1234
7.分别建立一个结构矩阵和一个单元矩阵来存储自己班上5名同学的基本情况数据,每名学生的数据包括学号、姓名、专业和6门课程的成绩。
并查询自己的所有信息以及女生的成绩。
a
(1).x1=12345678;a
(1).x2='一二三';a
(1).x3='自动化';a
(1).x4=[97,66,88,79,90,81];
a
(2).x1=12345677;a
(2).x2='二三四';a
(2).x3='自动化';a
(2).x4=[87,86,88,89,90,91];
a(3).x1=12345676;a(3).x2='三四五';a(3).x3='自动化';a(3).x4=[97,86,78,89,90,91];
a(4).x1=12345675;a(4).x2='四五六';a(4).x3='自动化';a(4).x4=[87,86,88,89,90,91];
a(5).x1=12345674;a(5).x2='七八九';a(5).x3='自动化';a(5).x4=[87,86,98,89,90,91]
a=
1x5structarraywithfields:
x1
x2
x3
x4
>>a
(1)
ans=
x1:
12345678
x2:
'一二三'
x3:
'自动化'
x4:
[97,66,88,79,90,81]
第二次作业
1.分析脚本M文件及函数M文件的区别。
分别编写脚本文件,实现以下要求:
(1)M脚本文件名不必与函数名相同;
(2)M函数文件调用时需要提供函数参数,而M脚本文件只需要提供文件名;(3)M脚本文件创建的每个变量都会保存到Matlab工作区,而M函数文件只有输出结果才保存到Matlab工作区中;(4)文件格式上的一些区别。
1)求[100,999]之间能被21整除的个数。
s=0;
forn=100:
999
ifrem(n,21)==0
s=s+1;
end
end
s
s=
43
2)用magic(6)产生一矩阵,用至少两种方法求解其所有元素的和。
(提示:
1、for循环;2、sum函数)
m=0;n=0;
A=magic(6)
fork=A
m=m+k;
end
forB=m'
n=n+B;
end
disp(n)
A=
3516261924
3327212325
3192222720
82833171015
30534121416
43629131811
666
Sum函数
A=magic(6)
sum(sum(A))
A=
3516261924
3327212325
3192222720
82833171015
30534121416
43629131811
ans=
666
2.编写函数文件,实现从键盘输入一个3位整数,将它反向输出。
如639,输出为936。
调用该函数,输出结果。
m=input('请输入一个三位数:
');
m1=fix(m/100);
m2=rem(fix(m/10),10);
m3=rem(m,10);
m=m1+m2*10+m3*100;
disp(m);
请输入一个三位数:
123
321
3.定义一个函数文件,求
,要求在函数文件中包含能够通过help查询到的说明。
然后调用该函数文件求
的值。
函数名:
abcdefghijk12345678
functiony=abcdefghijk12345678(m,n)
i=1:
n;
y=sum(i.^m);
>>y=abcdefghijk12345678(1,100)+abcdefghijk12345678(2,50)+abcdefghijk12345678(-1,10)
y=
4.7978e+004
4.已知
,当x取-3.0,-2.9,-2.8,…,2.8,2.9,3.0时,
1)求各点的函数值;
函数名ysin
functiony=ysin(x)
y=sin(x+1.7).*log((pi+x)/2)./(1+cos(x+1.7));
>>x=-3.0:
0.1:
3;
y=ysin(x)
y=
Columns1through12
2.01301.44601.08350.82520.63110.48070.36210.26780.19240.13220.08470.0478
Columns13through24
0.02000-0.0130-0.0198-0.0209-0.0167-0.00760.00640.02500.04820.07620.1090
Columns25through36
0.14690.19040.23980.29580.35940.43170.51410.60860.71780.84530.99621.1774
Columns37through48
1.39961.67892.04182.53403.24314.35886.385311.251039.4306-28.8207-10.8760-6.8045
Columns49through60
-4.9934-3.9630-3.2935-2.8202-2.4653-2.1871-1.9614-1.7731-1.6124-1.4725-1.3487-1.2373
Column61
-1.1359
2)求这些数据的平均值;
w=sum(y)/61
w=
0.1616
6.求分段函数的值。
用if语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5时的值。
x=input('请输入x的值');
ifx<0&x~=-3
y=x*x+x-6;
elseifx>=0&x<5&x~=2&x~=3
y=x*x-5*x+6;
else
y=x*x-x-1
end
y
请输入x的值:
-5.0
y=
14
请输入x的值:
-3.0
y=
11
请输入x的值:
1.0
y=
2
请输入x的值:
2.0
y=
1
请输入x的值:
2.5
y=
-0.2500
7、输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。
其中90分~100分为A,80分~89分为B,70分~79分为C,60分~69分为D,60分以下为E。
要求:
分别用if语句和switch语句实现。
students=input('请输入一个学生的成绩');
switchfix(students/10)
case{9,10}
dengji='A';
case{8}
dengji='B';
case{7}
dengji='C';
case{6}
dengji='D';
case{0,1,2,3,4,5}
dengji='E';
otherwise
'输入错误'
end
dengji
if语句
students=input('请输入一个学生的成绩:
');
num=fix(students/10);
ifnum==9||num==10
dengji='A';
elseifnum==8
dengji='B';
elseifnum==7
dengji='C';
elseifnum==6
dengji='D';
elseifnum==0||num==1||num==2||num==3||num==4||num==5
dengji='E';
end
dengji
8、根据
的近似值。
当n分别取100、1000、10000时,结果是多少?
(要求:
分别用循环结构和向量运算来实现)
循环结构
functiony=fqp(n)
s=0;
fori=1:
n;
s=s+1/i^2;
y=sqrt(6*s);
end
向量运算
functiony=fqpxl(n)
i=1:
n;
s=sum(1./i.^2);
y=sqrt(6*s);
end
>>y=fqpxl(100)
y=
3.1321
>>y=fqpxl(1000)
y=
3.1406
>>y=fqpxl(10000)
y=3.1415
9、已知n=1时,f1=1;n=2时,f2=0;n=3时,f3=1;n>3时,fn=fn-1-2fn-2+fn—3;
求f1~f100中,最大值、最小值以及各数之和。
f
(1)=1;f
(2)=0;f(3)=1;
forn=4:
100
f(n)=f(n-1)-2*f(n-2)+f(n-3);
end
f;
fmax=max(f)
fmin=min(f)
sumf=sum(f)
fmax=
4.3776e+011
fmin=
-8.9941e+011
sumf=
-7.4275e+011
10、某公司员工的工资计算方法如下:
1)工作时数超过120小时者,超过部分加发15%;
2)工作时数低于60小时者,扣发700元;
3)其余按每小时84元计发。
试编程按输入的工号和该号员工的工时数,计算应发工资。
n=input('ÇëÊäÈ빤ºÅ£º');
a=input('ÇëÊäÈ빤×÷СʱÊý£º');
ifa>=120
y=a*84+(a-120)*84*0.15;
elseifa<120&a>=60
y=a*84;
elseifa<60
y=a*84-700;
end
disp([n,'员工的工资',y]);
y
请输入工号:
001
请输入工作小时数:
100
001员工的工资?
y=
8400
第三次作业
作业:
1.
(1).以向量x=[0:
0.1:
1]为横坐标,y=[2.3,4.3,2.5,6,4.9,1.5,1,4.6,5,6.7,0]为纵坐标绘制x-y的图形。
x=[0:
0.1:
1];
y=[2.3,4.3,2.5,6,4.9,1.5,1,4.6,5,6.7,0];
plot(x,y)
(2).当x为向量,y为M×N的矩阵时,plot以y的每一列为纵坐标,以x为横坐标绘图,在一个图形窗口同时绘制多条曲线,这些曲线具有相同的横坐标。
t=linspace(0,2*pi,100);
x=[t;t]';
y=[sin(t);cos(t)]';
plot(x,y)
(3).当输入参数有矩阵形式时,配对的x、y按对应列元素为横、纵坐标分别绘制曲线,曲线条数相当于矩阵的列数。
x1=linspace(0,2*pi,100);
y1=sin(x1);
y2=2*sin(x1);
y3=3*sin(x1);
x=[x1;x1;x1]';
y=[y1;y2;y3]';
plot(x,y,x1,cos(x1))
1.设
区间取101点,绘制函数的曲线。
x=0:
pi/50:
2*pi;
y=(0.5+3*sin(x)/(1+x.*x)).*cos(x);
plot(x,y)
运行结果:
2.已知
,完成下列操作:
(1)在同一坐标系下用不同的颜色和线型绘制三条曲线。
x=linspace(0,2*pi,100);
y1=x.*x;
y2=cos(2*x);
y3=y1.*y2;
plot(x,y1,x,y2,'g:
',x,y3,'r-.')
(2)在不同的窗口用不同的颜色和线型绘制三条曲线。
x=linspace(0,2*pi,100);
y1=x.*x;
y2=cos(2*x);
y3=y1.*y2;
plot(x,y1)
figure
(2)
plot(x,y2,'g:
')
figure(3)
plot(x,y3,'r-.')
(3)以子图形式用不同的颜色和线型制三条曲线。
x=linspace(0,2*pi,100);
y1=x.*x;
y2=cos(2*x);
y3=y1.*y2;
subplot(3,1,1);
plot(x,y1);
subplot(3,1,2);
plot(x,y2,'g:
');
subplot(3,1,3);
plot(x,y3,'r-.');
(4)为(3)所有子图添加标题、坐标轴说明及适当的文本标注。
x=linspace(0,2*pi,100);
y1=x.*x;
y2=cos(2*x);
y3=y1.*y2;
subplot(3,1,1)
plot(x,y1)
xlabel('variableX','FontWeight','bold');
ylabel('variableY','FontWeight','bold');
title('y=x^2','FontWeight','bold');
subplot(3,1,2)
plot(x,y2,'g:
')
xlabel('variableX','FontWeight','bold');
ylabel('variableY','FontWeight','bold');
title('y=cos2x','FontWeight','bold');
subplot(3,1,3)
plot(x,y3,'r-.')
xlabel('variableX','FontWeight','bold');
ylabel('variableY','FontWeight','bold');
title('y=x^2*cos2x','FontWeight','bold');
3.编写函数绘制三维球面,允许用户指定球面圆心位置及半径;并调用函数文件绘制圆心在(2,3,2.5)处,半径为2的三维球面。
a=input('请输入球心X的坐标=');
b=input('请输入球心Y的坐标=');
c=input('请输入球心Z的坐标=');
R=input('请输入球的半径R=');
[x,y,z]=sphere(100);
X=x*R+a;
Y=y*R+b;
Z=z*R+c;
surf(X,Y,Z)
4.使用子图,在一个图形窗口分图绘制函数
(-5≤x,y≤5)
的三维网格图和曲面图,要求:
1)第一个子图直接用mesh函数绘图,不加任何修饰;
2)第二个子图直接用surf函数绘图,去掉网格线;
3)第三个子图在第二个子图的基础上使用颜色插值,平滑表面;
4)为所有子图添加标题、坐标轴说明及适当的文本标注。
[x,y]=meshgrid(-5:
0.1:
5);
z=cos(x).*cos(y).*exp(sqrt(x.^2+y.^2)/4);
colormap(hot);
subplot(3,1,1);
mesh(x,y,z)
xlabel('variableX');
ylabel('variableY');
zlabel('variableZ');
title('不加任何修饰');
subplot(3,1,2);
surf(x,y,z);
xlabel('variableX');
ylabel('variableY');
zlabel('variableZ');
title('去掉网格线');
subplot(3,1,3);
surf(x,y,z);
shadinginterp;
xlabel('variableX');
ylabel('variableY');
zlabel('variableZ');
title('使用颜色插值,平滑表面');