乱斗西游第23章第六关:matlab实验报告
来源:百度文库 编辑:偶看新闻 时间:2024/05/02 08:49:21
第一次上机练习:
1. 求下列表达式的值,显示MATLAB工作空间的使用情况并保存全部变量:
(1)
>> w=sqrt(2)*(1+0.34245e-6)
w =
1.4142
(2)
>> a=3.5;b=5;c=9.8;x=(2*pi*a+(b+c)/(pi+a*b*c)-exp(2))/(tan(b+c)+a)
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.0007i 0.0049 - 0.0027i
1.9884 - 0.3696i 1.7706 - 1.0539i
2. 已知
(1)
>> 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 =
47 23 -10
12 37 26
-15 73 7
>> A^2-B+I
ans =
-18 -217 17
22 533 109
21 867 526
(2)A*B、A.*B、B*A、B.*A;
>> A*B
ans =
14 14 16
-10 51 21
125 328 180
>> A.*B
ans =
-8 15 4
0 35 24
-9 122 0
>> B*A
ans =
-11 0 -15
7 228 53
3 -1 28
>> B.*A
ans =
-8 15 4
0 35 24
-9 122 0
(3)A/B、B\A;
>> A/B
ans =
1.2234 -0.9255 2.9787
-0.9468 2.3511 -0.9574
4.6170 3.8723 13.8936
>> B\A
ans =
-0.5106 -8.6170 -1.1277
0.7340 17.5745 1.8085
-0.8830 -21.2128 0.4043
(4)[A, B]、[A([1 3],:);B^2]。
>> [A,B]
ans =
-1 5 -4 8 3 -1
0 7 8 2 5 3
3 61 7 -3 2 0
>> [A([1 3],:);B^2]
ans =
-1 5 -4
3 61 7
73 37 1
17 37 13
-20 1 9
3. 已知
>>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;
>> E
ans =
0 1
0 0
0 1
>> E&D
ans =
1 1
0 1
1 1
>> E|D
ans =
1 1
1 1
1 1
>> ~E|~D
ans =
0 0
1 0
0 0
4. 产生均值为3,方差为1 的5阶正态分布的随机方阵。
>> 3+sqrt(1)*randn(5)
ans =
1.9894 2.3564 3.0000 3.8956 3.5689
3.6145 3.3803 2.6821 3.7310 2.7444
3.5077 1.9909 4.0950 3.5779 2.6225
4.6924 2.9805 1.1260 3.0403 2.7041
3.5913 2.9518 3.4282 3.6771 1.5249
5. 使用函数,实现方阵A左旋
>> A=[1,4,7,10;2,5,8,11;3,6,9,12;4,7,10,13]
A =
1 4 7 10
2 5 8 11
3 6 9 12
4 7 10 13
>> rot90(A)
ans =
10 11 12 13
7 8 9 10
4 5 6 7
1 2 3 4
>> rot90(A,-1)
ans =
4 3 2 1
7 6 5 4
10 9 8 7
13 12 11 10
第二次上机练习:
1、完成操作:求[100,999]之间能被21整除的个数。
>> count=0;
for n=100:999
if rem(n,21)==0
count=count+1;
end
end
disp(k)
43
2. 编写脚本文件,实现
用magic(6)产生一矩阵,用for循环指令求解其所有元素的和。
>> m=0;n=0;
A=magic(6)
for k=A
m=m+k;
end
for B=m'
n=n+B;
end
disp(n)
A =
35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
666
3. 定义一个函数文件,求
函数文件hycf.m
function y=hycf(m,n)
i=1:n;
y=sum(i.^m);
>> y=hycf(1,100)+hycy(2,50)+hycf(-1,10)
y =
4.7978e+004
4. 已知
1) 求各点的函数值;
function y=fyx(x)
y=sin(x+1.7).*log((pi+x)/2)./(1+cos(x+1.7));
>> x=-3.0:0.1:3.0;y=fyx(x)
y =
Columns 1 through 12
2.0130 1.4460 1.0835 0.8252 0.6311 0.4807 0.3621 0.2678 0.1924 0.1322 0.0847 0.0478
Columns 13 through 24
0.0200 0 -0.0130 -0.0198 -0.0209 -0.0167 -0.0076 0.0064 0.0250 0.0482 0.0762 0.1090
Columns 25 through 36
0.1469 0.1904 0.2398 0.2958 0.3594 0.4317 0.5141 0.6086 0.7178 0.8453 0.9962 1.1774
Columns 37 through 48
1.3996 1.6789 2.0418 2.5340 3.2431 4.3588 6.3853 11.2510 39.4306 -28.8207 -10.8760 -6.8045
Columns 49 through 60
-4.9934 -3.9630 -3.2935 -2.8202 -2.4653 -2.1871 -1.9614 -1.7731 -1.6124 -1.4725 -1.3487 -1.2373
Column 61
-1.1359
2) 将函数值输出到一个数据文件中保存(文件名自定);
x=-3.0:0.1:3.0;y=fyx(x)
fid = fopen('dataf.txt','w');
fprintf(fid,'%
fclose(fid);
3) 从上述数据文件中读出数据,求这些数据的平均值;
fid = fopen('dataf.txt');
a = fscanf(fid,'%f %f',[1 61])
aver=mean(a)
fclose(fid);
a =
Columns 1 through 7
2.0130 1.4460 1.0835 0.8252 0.6311 0.4807 0.3621
Columns 8 through 14
0.2678 0.1924 0.1322 0.0847 0.0478 0.0200 0
Columns 15 through 21
-0.0130 -0.0198 -0.0209 -0.0167 -0.0076 0.0064 0.0250
Columns 22 through 28
0.0482 0.0762 0.1090 0.1469 0.1904 0.2398 0.2958
Columns 29 through 35
0.3594 0.4317 0.5141 0.6086 0.7178 0.8453 0.9962
Columns 36 through 42
1.1774 1.3996 1.6789 2.0418 2.5340 3.2431 4.3588
Columns 43 through 49
6.3853 11.2510 39.4306 -28.8207 -10.8760 -6.8045 -4.9934
Columns 50 through 56
-3.9630 -3.2935 -2.8202 -2.4653 -2.1871 -1.9614 -1.7731
Columns 57 through 61
-1.6124 -1.4725 -1.3487 -1.2373 -1.1359
aver =
0.1616
4) 将平均值添加到数据文件末尾。
fid = fopen('dataf.txt','a+');
a = fscanf(fid,'%f %f',[1 61]); aver=mean(a);
a=[a;aver];
fclose(fid);
5、求分段函数的值。
用if语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5时的值。
函数文件fy.m
function y=fy(x)
if x<0&x~=-3
y=x^2+x-6;
elseif x>=0&x<5&x~=2&x~=3
y=x^2-5*x+6;
else
y=x^2-x-1;
end
>> y1=fy(-5), y2=fy(-3),y3= fy(1), y4=fy(2),y5= fy(2.5)
y1 =
14
y2 =
11
y3 =
2
y4 =
1
y5 =
-0.2500
6、输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。其中90分~100分为A,80分~89分为B,70分~79分为C,60分~69分为D,60分以下为E。
要求:分别用if语句和switch语句实现。
Switch语句
function y=fcjdjswitch(x)
switch fix(x/10)
case {9,10}
y='A';
case {8}
y='B';
case {7}
y='C';
case {6}
y='D';
case {0,1,2,3,4,5}
y='E';
otherwise '输入错误'
end
if语句
function y=fcjdjif(x)
x=fix(x/10);
if x==9||x==10
y='A';
elseif x==8
y='B';
elseif x==7
y='C';
elseif x==6
y='D';
elseif x==0||x==1||x==2||x==3||x==4||x==5
y='E';
end
7、根据
循环结构
function y=fqp(n)
s=0;
for i=1:n;
s=s+1/i^2;
y=sqrt(6*s);
end
>> y=fqp(100)
y =
3.1321
>> y=fqp(1000)
y =
3.1406
>> y=fqp(10000)
y =
3.1415
向量运算
function y=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
第三次次上机练习:
1. 设
x=0:pi/50:2*pi;
y=(0.5+3*sin(x)/(1+x.^2))*cos(x);
plot(x,y)
2. 已知
(1) 在同一坐标系下用不同的颜色和线型绘制三条曲线。
x=0:pi/50:2*pi;
y1=x.^2;y2=cos(2*x);y3=y1.*y2;
plot(x,y1,'r-.',x,y2,':g',x,y3,'--b')
(2) 以子图形式绘制三条曲线。
x=0:pi/50:2*pi;
y1=x.^2;y2=cos(2*x);y3=y1.*y2;
subplot(3,1,1);
plot(x,y1,'r-.');
subplot(3,1,2);
plot(x,y2,':g');
subplot(3,1,3);
plot(x,y3,'--b');
(3) 分别用条形图、阶梯图和填充图绘制三条曲线。
x=0:pi/50:2*pi;
y1=x.^2;y2=cos(2*x);y3=y1.*y2;
subplot(3,1,1);
bar(x,y1,'r');
subplot(3,1,2);
stairs(x,y2,'g');
subplot(3,1,3);
fill(x,y3,'b');
3. 编写函数绘制三维球面,允许用户指定球面圆心位置及半径;
a=input('请输入球心X的坐标a=');
b=input('请输入球心Y的坐标b=');
c=input('请输入球心Z的坐标c=');
R=input('请输入球的半径R=');
[x,y,z]=sphere;
X=x*R+a;
Y=y*R+b;
Z=z*R+c;
surf(X,Y,Z)
请输入球心X的坐标a=5
请输入球心Y的坐标b=9
请输入球心Z的坐标c=12
请输入球的半径R=35
4. 使用子图,在一个图形窗口分图绘制函数
的三维网格图和曲面图,要求:
1) 第一个子图直接用mesh函数绘图,不加任何修饰;
2) 第二个子图直接用surf函数绘图,去掉网格线;
3) 第三个子图在第二个子图的基础上使用颜色插值,平滑表面;
4) 从课本P110表5-4中选择一函数生成色图矩阵,并对上述图形进行着色;
5) 为所有子图添加标题、坐标轴说明及适当的文本标注。
[x,y]=meshgrid(-5:0.2:5);
z=cos(x).*cos(y).*exp(sqrt(x.^2+y.^2)/4);
colormap(hot);
subplot(2,2,1);
mesh(x,y,z);
title('用mesh画的三维曲面图');
xlabel('x');ylabel('y');zlabel('z');
text(2,1,4,'网格图');
subplot(2,2,2);
surf(x,y,z);
title('用surf画的三维曲面图');
xlabel('x');ylabel('y');zlabel('z');
text(2,1,4,'去掉网格线');
subplot(2,4,[6,7]);
surf(x,y,z);shading interp;
title('平滑表面三维曲面图');
xlabel('x');ylabel('y');zlabel('z');
text(2,1,4,'颜色插值,平滑表面');