乱斗西游第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

>> 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 (其中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 =

 

    47    23   -10

    12    37    26

   -15    73     7

 

>> A^2-B+I

 

ans =

 

   -18  -217    17

    22   533   109

    21   867   526

 

2A*BA.*BB*AB.*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

 

3A/BB\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.         已知 ,取出其前三行构成矩阵B,其前两列构成矩阵C,其右下角3×2子矩阵构成的矩阵DBC的乘积构成矩阵E,分别求EE&DE|D~E|~D

>>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、完成操作:求[100999]之间能被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.         定义一个函数文件,求 ,要求在函数文件中包含能够通过help查询到的说明;然后调用该函数文件求 的值。

函数文件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.         已知 ,当x-3.0-2.9-2.82.82.93.0时,

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,'%.4f %.4f\n',y);

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.01.02.02.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、输入一个百分制成绩,要求输出成绩等级ABCDE。其中90~100分为A80~89分为B70~79分为C60~69分为D60分以下为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、根据 的近似值。当n分别取100100010000时,结果是多少?(要求:分别用循环结构和向量运算来实现)

循环结构

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.         区间取101点,绘制函数的曲线。

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.         使用子图,在一个图形窗口分图绘制函数

-5xy5

的三维网格图和曲面图,要求:

1)  第一个子图直接用mesh函数绘图,不加任何修饰;

2)  第二个子图直接用surf函数绘图,去掉网格线;

3)  第三个子图在第二个子图的基础上使用颜色插值,平滑表面;

4)  从课本P1105-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,'颜色插值,平滑表面');