admin 管理员组

文章数量: 1086019


2024年4月26日发(作者:讨论常量元素)

Matlab上机实验答案

实验一 MATLAB运算基础

1. 先求下列表达式的值,然后显示MATLAB工作空间的使用情

况并保存全部变量。

2sin85

0

(1)

z

1

1e

2

>> z1=2*sin(85*pi/180)/(1+exp(2))

z1 =

0.2375

(2)

z

2

12i



2

1

ln(x1x

2

)

,其中

x



5

2

0.45

>> x=[2 1+2i;-0.45 5];

>> z2=1/2*log(x+sqrt(1+x^2))

z2 =

0.7114 - 0.0253i 0.8968 + 0.3658i

0.2139 + 0.9343i 1.1541 - 0.0044i

e

0.3a

e

0.3a

0.3a

zsin(a0.3)ln,a3.0,2.9,

(3)

3

22

,2.9,3.0

>> a=-3.0:0.1:3.0;

>> z3=(exp(0.3.*a)-exp(-0.3.*a))./2.*sin(a+0.3)+log((0.3+a)./2)

(>> z33=(exp(0.3*a)-exp(-0.3*a))/2.*sin(a+0.3)+log((0.3+a)/2)

可以验证z3==z33,是否都为1)

z3 =

Columns 1 through 5

0.7388 + 3.1416i 0.7696 + 3.1416i

0.7913 + 3.1416i 0.7822 + 3.1416i

Columns 6 through 10

0.7602 + 3.1416i 0.7254 + 3.1416i

0.6196 + 3.1416i 0.5496 + 3.1416i

Columns 11 through 15

0.4688 + 3.1416i 0.3780 + 3.1416i

0.1680 + 3.1416i 0.0497 + 3.1416i

0.7871 + 3.1416i

0.6784 + 3.1416i

0.2775 + 3.1416i

Columns 16 through 20

-0.0771 + 3.1416i -0.2124 + 3.1416i -0.3566 + 3.1416i -

0.5104 + 3.1416i -0.6752 + 3.1416i

Columns 21 through 25

-0.8536 + 3.1416i -1.0497 + 3.1416i -1.2701 + 3.1416i

1.5271 + 3.1416i -1.8436 + 3.1416i

Columns 26 through 30

-2.2727 + 3.1416i -2.9837 + 3.1416i -37.0245 + 0.0000i

3.0017 + 0.0000i -2.3085 + 0.0000i

Columns 31 through 35

-1.8971 + 0.0000i -1.5978 + 0.0000i -1.3575 + 0.0000i

1.1531 + 0.0000i -0.9723 + 0.0000i

Columns 36 through 40

-

-

-

-0.8083 + 0.0000i -0.6567 + 0.0000i -0.5151 + 0.0000i -

0.3819 + 0.0000i -0.2561 + 0.0000i

Columns 41 through 45

-0.1374 + 0.0000i -0.0255 + 0.0000i

0.1766 + 0.0000i 0.2663 + 0.0000i

Columns 46 through 50

0.3478 + 0.0000i 0.4206 + 0.0000i

0.5379 + 0.0000i 0.5815 + 0.0000i

Columns 51 through 55

0.6145 + 0.0000i 0.6366 + 0.0000i

0.6470 + 0.0000i 0.6351 + 0.0000i

Columns 56 through 60

0.6119 + 0.0000i 0.5777 + 0.0000i

0.4774 + 0.0000i 0.4126 + 0.0000i

0.0792 + 0.0000i

0.4841 + 0.0000i

0.6474 + 0.0000i

0.5327 + 0.0000i

Column 61

0.3388 + 0.0000i

t

2

0t1

2

(4)

z

4

1t2

,其中t=0:0.5:2.5

t1

t

2

2t12t3

>> t=0:0.5:2.5;

>> z4=(t>=0&t<1).*(t.^2)+(t>=1&t<2).*(t.^2-

1)+(t>=2&t<3).*(t.^2-2.*t+1)

z4 =

0 0.2500 0 1.2500 1.0000

2.2500

2. 已知:

12344



131

,B

203

A

34787





3657



327

求下列表达式的值:

(1) A+6*B和A-B+I(其中I为单位矩阵)

(2) A*B和A.*B

(3) A^3和A.^3

(4) A/B及BA

(5) [A,B]和[A([1,3],:);B^2]

>> A=[12 34 -4;34 7 87;3 65 7];

>> B=[1 3 -1; 2 0 3;3 -2 7];

>> A+6*B

ans =

18 52 -10

46 7 105

21 53 49

>> I=eye(3);

>> A-B+I

ans =

12 31

32 8

0 67

(2)

>> A*B

ans =

68 44

309 -72

154 -5

>> A.*B

ans =

12 102

68 0

9 -130

(3)

>> A^3

ans =

37226

247370

78688

>> A.^3

-3

84

1

62

596

241

4

261

49

233824

149188

454142

48604

600766

118820

ans =

1728 39304 -64

39304 343 658503

27 274625 343

(4)

>> A/B

ans =

16.4000 -13.6000 7.6000

35.8000 -76.2000 50.2000

67.0000 -134.0000 68.0000

>> BA

ans =

109.4000 -131.2000 322.8000

-53.0000 85.0000 -171.0000

-61.6000 89.8000 -186.2000

(5)

>> [A,B]

ans =

12 34 -4 1 3

34 7 87 2 0

3 65 7 3 -2

>> [A([1,3],:);B^2]

ans =

12 34 -4

3 65 7

4 5 1

11 0 19

20 -5 40

3. 设有矩阵A和B

-1

3

7

1

6

A

11

16

21

5



3

1778910



12131415

,B

0



17181920



9

22232425



4

23416

69

234

70

1311

0

(1) 求它们的乘积C。

(2) 将矩阵C的右下角3×2子矩阵赋给D。

(3) 查看MATLAB工作空间的使用情况。

>> A=(reshape(1:25,5,5))';

>> B=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11];

>> C=A*B

C =

93 150 77

258 335 237

423 520 397

588 705 557

753 890 717

>> D=C(3:5,2:3)

D =

520 397

705 557

890 717

>> whos

Name Size Bytes Class Attributes

A 5x5 200 double

B 5x3 120 double

C 5x3 120 double

D 3x2 48 double

4. 完成下列操作:

(1) 求[100,999]之间能被21整除的数的个数。

(2) 建立一个字符串向量,删除其中的大写字母。

>> n=100:999;

>> l=find(rem(n,21)==0);

>> length(l)

ans =

43

>> ch='aegbBOIEG0je23RGnc';

>> wz=find(ch>='A'&ch<='Z');

>> ch(wz)=[]

ch =

aegb0je23nc

实验二 MATLAB矩阵分析与处理

1. 设有分块矩阵

A

E

33

O

23

R

32

,其中E、R、O、S分别为单位矩阵、随机矩阵、零矩

S

22

阵和对角阵,试通过数值计算验证

A

2

>> E=eye(3);

>> R=rand(3,2);

>> O=zeros(2,3);

>> S=diag(1:2);

>> A=[E,R;O,S]

A =

ERRS

2

OS



1.0000 0 0 0.8147 0.9134

0 1.0000 0 0.9058 0.6324

0 0 1.0000 0.1270 0.0975

0 0 0 1.0000 0

0 0 0 0 2.0000

>> A^2

ans =

1.0000 0 0 1.6294 2.7401

0 1.0000 0 1.8116 1.8971

0 0 1.0000 0.2540 0.2926

0 0 0 1.0000 0

0 0 0 0 4.0000

>> [E,R+R*S;O,S^2]

ans =

1.0000 0 0 1.6294 2.7401

0 1.0000 0 1.8116 1.8971

0 0 1.0000 0.2540 0.2926

0 0 0 1.0000 0

0 0 0 0 4.0000

>> A^2==[E,R+R*S;O,S^2]

ans =

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

ERRS

通过验证,矩阵

A



成立。

2

OS



2

2. 产生5阶希尔伯特矩阵H和5阶帕斯卡矩阵P,且求其行列式的值Hh和Hp以及它们

的条件数Th和Tp,判断哪个矩阵性能更好。为什么?

>> H=hilb(5)

H =

1.0000 0.5000 0.3333 0.2500 0.2000

0.5000 0.3333 0.2500 0.2000 0.1667

0.3333 0.2500

0.2500 0.2000

0.2000 0.1667

>> P=pascal(5)

P =

1 1 1

1 2 3

1 3 6

1 4 10

1 5 15

>> Hh=det(H)

Hh =

3.7493e-12

>> Hp=det(P)

Hp =

1

>> Th=cond(H)

Th =

0.2000

0.1667

0.1429

1 1

4 5

10 15

20 35

35 70

0.1667 0.1429

0.1429 0.1250

0.1250 0.1111

4.7661e+05

>> Tp=cond(P)

Tp =

8.5175e+03

答:5阶帕斯卡矩阵P的性能好。矩阵的性能是由条件数决定的,条件数越接近于1其性

能就越好。由上机操作求得Th=4.7661e+005,Tp=8.5175e+003。Tp的值更接近于1则其性

能要好。所以5阶帕斯卡矩阵P的性能好。

3. 建立一个5×5矩阵,求它的行列式值、迹、秩和范数。

>> A=rand(5)

A =

0.2785 0.9706 0.4218 0.0357 0.7431

0.5469 0.9572 0.9157 0.8491 0.3922

0.9575 0.4854 0.7922 0.9340 0.6555

0.9649 0.8003 0.9595 0.6787 0.1712

0.1576 0.1419 0.6557 0.7577 0.7060

>> det(A)

ans =

-0.1322

>> trace(A)

ans =

3.4127

>> rank(A)

ans =

5

>> norm(A)

ans =

3.2759

4. 已知

29618

A

20512



885

求A的特征值及特征向量,并分析其数学意义。

>> A=[-29,6,18;20,5,12;-8,8,5]

A =

-29 6 18

20 5 12

-8 8 5

>> [V,D]=eig(A)

V =

0.7130 0.2803 0.2733

-0.6084 -0.7867 0.8725

0.3487 0.5501 0.4050

D =

-25.3169 0 0

0 -10.5182 0

0 0 16.8351

在数学上,特别是线性代数中,对于一个给定的线性变换,它的特征向量(本征向

量或称正规正交向量)是这样一个非零的向量v:当v 经过这个线性变换的作用之后,

得到的新向量(长度也许改变)仍然与原来的v 保持在同一条线上。一个特征向量的长

度在该线性变换下缩放的比例称为其特征值(本征值)。如果特征值为正,则表示v 在

经过线性变换的作用后方向也不变;如果特征值为负,说明方向会反转;如果特征值为

0,则是表示缩回零点。但无论怎样,仍在同一条直线上。

5. 下面是一个线性方程组:

1

2

1

3

1

4

1

3

1

4

1

5

1

4

x



0.95

1

1



x0.67

2

5



x



0.52

1

3



6

(1) 求方程的解。

(2) 将方程右边向量元素b

3

改为0.53再求解,并比较b

3

的变化和解的相对变化。

(3) 计算系数矩阵A的条件数并分析结论。

>> format rat %用分数格式显示

>> A=[1/2,1/3,1/4;1/3,1/4,1/5;1/4,1/5,1/6]

A =

1/2 1/3 1/4

1/3 1/4 1/5

1/4 1/5 1/6

>> format %恢复默认格式

>> b=[0.95;0.67;0.52]

b =

0.9500

0.6700

0.5200

>> X=Ab

X =

1.2000

0.6000

0.6000

>> b2=[0.95;0.67;0.53]

b2 =

0.9500

0.6700

0.5300

>> X2=Ab2

X2 =

3.0000

-6.6000

6.6000

>> D=cond(A)

D =

1.3533e+03

矩阵的条件数决定矩阵的性能,条件数越接近于1其性能越好,系数矩阵A的条件数为

1.3533e+003,和1相差很大,则其性能不好。因此b矩阵个别元素的微小变动,对方程的

解(X值)影响很大。

6. 建立A矩阵,试比较sqrtm(A)和sqrt(A),分析它们的区别。

实验三 选择结构程序设计

1. 求分段函数的值。

x

2

x6x0且x3

y

x

2

5x60x5且x2及x3

x

2

x1其他

用if语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y值。

程序设计:

clear;

x=[-5.0 -3.0 1.0 2.0 2.5 3.0 5.0];

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

y

运行结果:

y =

29.0000 11.0000 -1.0000 1.0000 2.7500 5.0000 19.0000

2. 输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。其中90分~100分为A,80

分~89分为B,79分~79分为C,60分~69分为D,60分以下为E。

要求:

(1) 分别用if语句和switch语句实现。

程序设计:

(一) 用if语句

clear;

score=input('请输入百分制成绩:');

a=fix(score/10);

if a==9 | a==10

grade='A';

elseif a==8

grade='B';

elseif a==7

grade='C';

elseif a==6

grade='D';

else

grade='E';

end

grade

(二) 用if语句

clear;

score=input('请输入百分制成绩:');

if score>=90&score<=100

grade='A';

elseif score>=80&score<90

grade='B';

elseif score>=70&score<80

grade='C';

elseif score>=60&score<70

grade='D';

else

grade='E';

end

grade

(三) 用switch语句

clear;

score=input('请输入百分制成绩:');

switch fix(score/10)

case {9,10}

grade='A';

case 8

grade='B';

case 7

grade='C';

case 6

grade='D';

otherwise

grade='E';

end

grade

(2) 输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。

clear;

score=input('请输入百分制成绩:');

if score>=0&score<=100 %判断成绩合理性

switch fix(score/10)

case {9,10}

grade='A';

case 8

grade='B';

case 7

grade='C';

case 6

grade='D';

otherwise

grade='E';

end

grade

else

disp('error') %成绩不合理时输出出错信息

end

3. 硅谷公司员工的工资计算方法如下:

(1) 工作时数超过120小时者,超过部分加发15%。

(2) 工作时数低于60小时者,扣发700元。

(3) 其余按每小时84元计发。

试编程按输入的工号和该号员工的工时数,计算应发工资。

程序设计:

clear;

num=input('请输入员工工号:');

time=input('请输入员工工时数:');

if time<60

wages=time*84-700;

elseif time>120

wages=84*120+(time-120)*84*(1+0.15);

else

wages=time*84;

end

disp=(['员工工号:' num2str(num) ' 应发工资:' num2str(wages)])

运行结果:

请输入员工工号:4

请输入员工工时数:35

disp =

员工工号:4 应发工资:2240

4. 设计程序,完成两位数的加、减、乘、除四则运算,即产生两个两位随机整数,再输入一

个运算符号,做相应的运算,并显示相应的结果。

解:

程序设计:

clear;

a=floor(rand(1)*90+10)

b=floor(rand(1)*90+10)

c=input('请输入运算符号:','s');

if c=='+'

s=a+b

elseif c=='-'

s=a-b

elseif c=='*'

s=a*b

elseif c==''

s=ab

else

disp('error')

end

运行结果:

a =

30

b =

77

请输入运算符号:-

s =

-47

5. 建立5×6矩阵,要求输出矩阵第n行元素。当n值超过矩阵的行数时,自动转为输出矩

阵最后一行元素,并给出出错信息。

程序设计:

clear;

A=rand(5,6)

n=input('n=?')

if n>=1&n<=5

B=A(n,1:6);

else

disp('erro!')

B=A(5,1:6);

end

B

运行结果:

A =

0.7792 0.0119 0.5285 0.6892 0.9133 0.0782

0.9340 0.3371 0.1656 0.7482 0.1524 0.4427

0.1299 0.1622 0.6020 0.4505 0.8258 0.1067

0.5688 0.7943 0.2630 0.0838 0.5383 0.9619

0.4694 0.3112 0.6541 0.2290 0.9961 0.0046

n=?3

n =

3

B =

0.1299 0.1622 0.6020 0.4505 0.8258 0.1067

实验四 循环结构程序设计

2

111

2

2

2

1. 根据

6123

时,结果是多少?

要求:分别用循环结构和向量运算(使用sum函数)来实现。

程序设计(一):

clear;

for n=[100,1000,10000]

sum=0;

for x=1:n

sum=sum+1/(x.^2);

end

result=sqrt(6*sum)

end

1

,求π的近似值。当n分别取100、1000、10000

n

2

运行结果:

result =

3.1321

result =

3.1406

result =

3.1415

程序设计(二):

clear;

for n=[100,1000,10000]

x=1:n;

result=sqrt(6*sum(1./x./x))

end

运行结果:

result =

3.1321

result =

3.1406

result =

3.1415

2. 根据

y1

11



35

1

,求:

2n1

(1) y<3时的最大n值。

(2) 与(1)的n值对应的y值。

程序设计:

y=0;n=1;

while y<3

y=y+1/(2*n-1);

n=n+1;

end

n=n-1;

y=y-1/(2*n-1)

n=n-1

运行结果:

y =

2.9944

n =

56

%验证n=56时的y值

clear all;clc;

n=56;

i=1:n;

f=1./(2*i-1);

y=sum(f)

3. 考虑以下迭代公式:

x

n1

a

bx

n

其中a、b为正的学数。

(1) 编写程序求迭代的结果,迭代的终止条件为|x

n+1

-x

n

|≤10

-5

,迭代初值x

0

=1.0,迭代

次数不超过500次。

bb

2

4a

(2) 如果迭代过程收敛于r,那么r的准确值是,当(a,b)的值取(1,1)、

2

(8,3)、(10,0.1)时,分别对迭代结果和准确值进行比较。

程序设计:

clear;

a=input('a=?');

b=input('b=?');

x0=1;

x1=a/(b+x0);

y=abs(x1-x0);

n=1;

while y>10^(-5)&n<=499

x0=x1;

x1=a/(b+x0);

y=abs(x1-x0);

n=n+1;

end

x1

%比较收敛准确值和迭代结果

r1=(-b+sqrt(b^2+4*a))/2

r2=(-b-sqrt(b^2+4*a))/2

运行结果:

a=?1

b=?1

x1 =

0.6180

r1 =

0.6180

r2 =

-1.6180

a=?8

b=?3

x1 =

1.7016

r1 =

1.7016

r2 =

-4.7016

a=?10

b=?0.1

x1 =

3.1127

r1 =

3.1127

r2 =

-3.2127

4. 已知

f

1

1

f0

2

f

3

1

f

n

f

n1

2f

n2

f

n3

求f

1

~f

100

中:

(1) 最大值、最小值、各数之和。

(2) 正数、零、负数的个数。

程序设计:

clear;

f1=1;f2=0;f3=1;

f=[f1,f2,f3];

for n=4:100

f4=f3-2*f2+f1;

f=[f f4];

f1=f2;

f2=f3;

f3=f4;

end

maxf=max(f)

minf=min(f)

sumf=sum(f)

positivenum=length(find(f>0))

negtivenum=length(find(f<0))

zeronum=length(find(f==0))

n1

n2

n3

n3

运行结果:

maxf =

4.3776e+11

minf =

-8.9941e+11

sumf =

-7.4275e+11

positivenum =

49

negtivenum =

49

zeronum =

2

5. 若两个连续自然数的乘积减1是素数,则称这两个边疆自然数是亲密数对,该素数

是亲密素数。例如,2×3-1=5,由于5是素数,所以2和3是亲密数,5是亲密素数。求

[2,50]区间内:

(1) 亲密数对的对数。

(2) 与上述亲密数对对应的所有亲密素数之和。

程序设计(一):

clear

pair=[];

for m=2:49

f=(m+1)*m-1;

signf=0; %标记为0表示f为素数

for k=2:sqrt(f)

if (rem(f,k)==0)

signf=1; %标记为1表示f不是素数

end

end

if signf==0

pair=[pair;m m+1]; %亲密数对矩阵

end

end

num=size(pair);

susum=sum(pair(:,1).*pair(:,2)-1);

disp(['亲密数对的对数',num2str(num(1))])

disp(['亲密素数之和',num2str(susum)])

运行结果:

亲密数对的对数28

亲密素数之和21066

程序设计:

clear

susum=0;num=0;

for m=2:49

f=(m+1)*m-1;

n=fix(sqrt(f));

for k=2:n

if (rem(f,k)==0)

break; %f不是素数时跳出循环

end

end

if k==n

num=num+1; %亲密数对个数

susum=susum+f; %亲密素数和累加

end

end

disp(['亲密数对的对数',num2str(num)])

disp(['亲密素数之和',num2str(susum)])

运行结果:

亲密数对的对数28

亲密素数之和21066

实验五 函数文件

1. 定义一个函数文件,求给定复数的指数、对数、正弦和余弦,并在命令文件中调用该

函数文件。

建立函数文件fushu.m:

function [e,ln,s,c]=fushu(x)

e=exp(x);

ln=log(x);

s=sin(x);

c=cos(x);

建立命令文件fushu2.m

A=input('请输入任意一个复数A');

[a,b,c,d]=fushu(A); %调用fushu.m的函数文件

a

b

c

d

fushu2.m运行结果:

>> fushu2

请输入任意一个复数A:4i

a =

-0.6536 - 0.7568i

b =

1.3863 + 1.5708i

c =

0.0000 +27.2899i

d =

27.3082

2. 一物理系统可用下列方程组来表示:

m

1

cos

msin

1

0

0

m

1

0

m

2

0

sin

cos

sin

cos

0

a

1



0

a



mg

0

2

1

0

N

1



0



1

N

2



m

2

g

从键盘输入m

1

、m

2

和θ的值,求a

1

、a

2

、N

1

和N

2

的值。其中g取9.8,输入θ时以角度

为单位。

要求:定义一个求解线性方程组AX=B的函数文件,然后在命令文件中调用该函数文

件。

建立函数文件xxfcz.m

function [a1,a2,N1,N2]=xxfcz(m1,m2,t)

t=t*pi/180;

A=[m1*cos(t) -m1 -sin(t) 0; m1*sin(t) 0 cos(t) 0; 0 m2 -sin(t) 0; 0 0

-cos(t) 1];

g=9.8;

B=[0;m1*g;0;m2*g];

X=inv(A)*B;

a1=X(1);

a2=X(2);

N1=X(3);

N2=X(4);

建立命令文件xxfcz2.m

clear

m1=input('请输入m1:');

m2=input('请输入m2:');

t=input('请输入角度t:');

[a1,a2,N1,N2]=xxfcz(m1,m2,t);

a1

a2

N1

N2

运行结果:

>> xxfcz2

请输入m1:5

请输入m2:3

请输入角度t:90

a1 =

9.8000

a2 =

3.7505e-16

N1 =

1.1251e-15

N2 =

29.4000

3. 一个自然数是素数,且它的数字位置经过任意对换后仍为素数。例如13是绝对素数。试

求所有两位绝对素数。

要求:定义一个判断素数的函数文件。

建立判断素数的函数文件sushu.m

function [x]=sushu(m)

%判断数m是否为素数

for M=2:(m/2)

if rem(m,M)==0

b=0;

break

else

b=1;

end

end

if b==1

x=m; %判断数m为素数,并返回

else

x=[]; %数m不为素数

end

end

建立命令文件sushu2.m

clear;

js=[]; %初始绝对素数

for m=10:99

x=sushu(m);

if x

x=fix(x/10)+rem(x,10)*10;

y=sushu(x);

js=[js,y]; %绝对素数

else

continue

end

end

js

执行命令文件sushu2.m

>> sushu2

js =

11 31 71 13 73 17 37 97 79

法二:

建立函数文件sushu3.m

function p=sushu3(m)

b=m(end); p=m;

for i=2:sqrt(b)

n=find(rem(p,i)==0&p~=i);%将m中能被i整除,且不等于i的元素的下标找出,即n

p(n)=[]; %将下标为n的元素剔除,其余的即为素数

end

建立命令文件sushu4.m

clear;

m=10:99;

p=sushu3(m); %找出10到99内所有素数

p=10*rem(p,10)+(p-rem(p,10))/10; %将p素数矩阵每个元素个位十位调换顺序

p=sushu3(p) %再对调换顺序后的素数矩阵找出其中的素数

执行命令文件sushu4.m

>> sushu4

p =

11 31 71 13 73 17 37 97 79

4. 设

f(x)

11

,编写一个MATLAB函数文件fx.m,使得

(x2)

2

0.1(x3)

4

0.01

调用f(x)时,x可用矩阵代入,得出的f(x)为同阶矩阵。

建立函数文件fx.m

function [f]=fx(x)

f=1./((x-2).^2+0.1)+1./((x-3).^4+0.01);

end

5. 已知

y

f(40)

f(30)f(20)

(1) 当f(n)=n+10ln(n

2

+5)时,求y的值。

(2) 当f(n)=1×2+2×3+3×4+...+n×(n+1)时,求y的值。

建立函数文件fn1.m

function [fn]=fn1(n)

fn=n+10*log(n.^2+5);

end

建立函数文件fn2.m

function [fn]=fn2(n)

fn=0;

for x=1:n

fn=fn+x*(x+1);

end

求(1)(2)中y的值:

y1=fn1(40)/(fn1(30)+fn1(20));

y2=fn2(40)/(fn2(30)+fn2(20));

运行结果:

>> yfn

y1 =

0.6390

y2 =

1.7662

实验六 高层绘图操作

1. 设

y

0.5

3sinx

cosx

,在x=0~2π区间取101点,绘制函数的曲线。

1x

2

>> x=linspace(0,2*pi,101);

>> y=(0.5+3.*sin(x)./(1+x.^2)).*cos(x);

>> plot(x,y);

2. 已知y1=x

2

,y2=cos(2x),y3=y1×y2,完成下列操作:

(1) 在同一坐标系下用不同的颜色和线型绘制三条曲线。

>> x=linspace(0,2*pi,101);

>> y1=x.^2;

>> y2=cos(2*x);

>> y3=y1.*y2;

>> plot(x,y1,'k:',x,y2,'b--',x,y3,'m-.');

(2) 以子图形式绘制三条曲线。

x=linspace(0,2*pi,101);

y1=x.^2;

y2=cos(2*x);

y3=y1.*y2;

subplot(3,1,1);

plot(x,y1);

title('y1');

subplot(3,1,2);

plot(x,y2);

title('y2');

subplot(3,1,3);

plot(x,y3);

title('y3');

(3) 分别用条形图、阶梯图、杆图和填充图绘制三条曲线。

subplot(3,4,1);bar(x,y1,'y');title('bar(x,y1,"y")');

subplot(3,4,2);stairs(x,y1,'m');title('stairs(x,y1,"m")');

subplot(3,4,3);stem(x,y1,'g');title('stem(x,y1,"g")');

subplot(3,4,4);fill(x,y1,'c');title('fill(x,y1,"c")');

subplot(3,4,5);bar(x,y2,'y');title('bar(x,y2,"y")');

subplot(3,4,6);stairs(x,y2,'m');title('stairs(x,y2,"m")');

subplot(3,4,7);stem(x,y2,'g');title('stem(x,y2,"g")');

subplot(3,4,8);fill(x,y2,'c');title('fill(x,y2,"c")');

subplot(3,4,9);bar(x,y3,'y');title('bar(x,y3,"y")');

subplot(3,4,10);stairs(x,y3,'m');title('stairs(x,y3,"m")');

subplot(3,4,11);stem(x,y3,'g');title('stem(x,y3,"g")');

subplot(3,4,12);fill(x,y3,'c');title('fill(x,y3,"c")');

3. 已知

x

x0

e

2

y

1

ln(x1x

2

)x0

2

在-5≤x≤5区间绘制函数曲线。

x=-5:0.1:5;

if x<=0

y=(x+sqrt(pi))./(exp(2));

else y=1/2*(log(x+sqrt(1+x.^2)));

end

plot(x,y)

4. 绘制极坐标曲线ρ=asin(b+nθ),并分析参数a、b、n对曲线形状的影响。

a=input('a=');

b=input('b=');

n=input('n=');

theta=0:0.01:2*pi;

rho=a*sin(b+n*theta);

polar(theta,rho,'k')

运行结果:

a=1

b=1

n=1

5. 绘制函数的曲线图和等高线。

x

2

y

2

4

zcosxcosye

其中x的21个值均匀分布[-5,5]范围,y的31个值均匀分布在[0,10],要求使用

subplot(2,1,1)和subplot(2,1,2)将产生的曲面图和等高线图画在同一个窗口上。

x=-5:0.5:5;

y=0:1/3:10;

[x,y]=meshgrid(x,y);

z=cos(x).*cos(y).*exp(-(sqrt(x.^2+y.^2)/4));

subplot(2,1,1);

surf(x,y,z);

subplot(2,1,2);

contour3(x,y,z);

6. 绘制曲面图形,并进行插值着色处理。

xcosscost

3

ycosssint0s,0t

22

zsins

s=0:0.05:pi/2;

t=0:0.05:3*pi/2;

[s,t]=meshgrid(s,t);

[x,y,z]=peaks(30);

x=cos(s).*cos(t);

y=cos(s).*sin(t);

z=sin(s);

surf(x,y,z);shading flat;


本文标签: 矩阵 素数 函数 文件 输入