文档库 最新最全的文档下载
当前位置:文档库 › matlab基础与指导应用部分习题问题详解

matlab基础与指导应用部分习题问题详解

matlab基础与指导应用部分习题问题详解
matlab基础与指导应用部分习题问题详解

作业一

4、写出完成下列操作的命令。

(1)将矩阵A第2~5行中第1,3,5列元素赋给矩阵B。>> M=[0:1:48];

>> A=reshape(M,7,7)

A =

0 7 14 21 28 35 42

1 8 15 2

2 29 36 43

2 9 16 2

3 30 37 44

3 10 17 2

4 31 38 45

4 11 18 2

5 32 39 46

5 12 19 2

6 33 40 47

6 13 20 2

7 34 41 48

>> B=A(2:5,1:2:5)

B =

1 15 29

2 16 30

3 17 31

4 18 32

(2)删除矩阵A的第七行元素。

>> A(7,:)=[]

A =

0 7 14 21 28 35 42

1 8 15 2

2 29 36 43

2 9 16 2

3 30 37 44

3 10 17 2

4 31 38 45

4 11 18 2

5 32 39 46

5 12 19 2

6 33 40 4

7 (3)将矩阵A的每个元素值加30。

>> A=A+30

A =

30 37 44 51 58 65 72

31 38 45 52 59 66 73

32 39 46 53 60 67 74

33 40 47 54 61 68 75

34 41 48 55 62 69 76

35 42 49 56 63 70 77

(4求矩阵A的大小和维素。

sizeA = size(A)

dA = ndims(A)

sizeA =

6 7

dA =

2

(5)将向量t的0元素用机器零来代替。

>> t=[1 2 3 4 0 5];

t =

1 2 3 4 0 5

>> find(t==0)

ans =

5

>> t(5)=eps

t =

1.0000

2.0000

3.0000

4.0000 0.0000

5.0000

(6)将含有12个元素的向量x转换成3*4矩阵。

>> x=[0:11]

x =

0 1 2 3 4 5 6 7 8 9 10 11 >> y=reshape(x,3,4)

y =

0 3 6 9

1 4 7 10

2 5 8 11

(7)求一个字符串的ASCII。

>> abs('a')

ans =

97

(8)求一个ASCII所对应的字符。

>> char(99)

ans =

c

5、已知A[97 67 34 10

-78 75 65 5

32 5 -23 -59

0 = -12 54 7]

写出完成下列操作的命令。

(1)取出A的前3列构成矩阵B,前两列构成矩阵C,右下角3*2子矩阵构成矩阵D,B与C的乘积构成矩阵E。

>> B=A(1:3,:)

B =

97 67 34 10

-78 75 65 5

32 5 -23 -59

>> C=A(:,1:2)

C =

97 67

-78 75

32 5

0 -12

>> D=A(2:4,3:4)

D =

65 5

-23 -59

54 7

>> E=B*C

E =

5271 11574

-11336 664

1978 3112

(2)输出【50,100】围的全部元素。>> find(A>=50 & A<=100)

ans =

1

5

6

10

12

>> output = [A(1) A(5) A(6) A(10) A(12)]

output =

97 67 75 65 54

二、实验题

>> x = -74*pi/180;y=-27*pi/180;

sin((x*x+y*y))/(sqrt(tan((abs(x+y))))+pi) ans =

0.1987 - 0.1434i

>> a = -3.0:0.1:3.0,

exp(-0.3.*a).*sin(a+0.3)

>> x=[2 4;-0.45 5];

0.5*log(x+sqrt(1+x.*x))

ans =

0.7218 1.0474

-0.2180 1.1562

>> A = [3 54 2;34 -45 7;87 90 15],

B = [1 -2 67;2 8 74;9 3 0]

>> A*B

A.*B

ans =

129 432 4197

7 -407 -1052

402 591 12489

ans =

3 -108 134

68 -360 518

783 270 0

>> A^3

A.^3

>> A/B

B\A

>> [A,B]

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

>> a=1+2i,b=3+4i,c=exp(pi/6*i)

c+a*b/(a+b)

作业二

1、从键盘输入一个4位整数,按如下规则加密后输出。加密规则:

每位数字都加上7,然后用和除以10的余数取代该数字;然后将第1位数和第3位数交换,第2位数和第4位数交换。

M 文件名为:Untitled1.m

程序:x=input('输入一个四位整数:');

y=[fix(x/1000),mod(fix(x/100),10),mod(fix(x/10),10),mod(x,10)]

z=mod((y+7),10)

x=z(3)*1000+z(4)*100+z(1)*10+z(2)

结果:输入一个四位整数:1234

y =

1 2 3 4

z =

8 9 0 1

x =

189

2、硅谷公司员工的工资计算方法如下。

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

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

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

试编程按输入的工号和该号员工的工时数,计算应发工资。程序:gonghao=input('输入工号');

hour=input('输入工时');

every=84;

if hour>120

gongzi=every*120+1.15* every *(hour-120);

elseif hour<60

gongzi=every*hour-700;

else

gongzi=devery*hour;

end

format bank;

display([gonghao,gongzi])

(1)结果:输入工号12

输入工时130

ans =

12.00 11046.00 (2)结果:输入工号12

输入工时56 ans =

12.00 4004.00

(3)结果:输入工号12

输入工时80

ans =

12.00 6720.00

3、 根据n

2

2

2

2

2

1

1

1

1

6

3

21++++=

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

1000、10000时,结果是多少?

要求:分别用循环结构和向量运算(使用sun 函数)来实现。 (1)程序:(循环结构): n=input('input n:'); s=0; for i=1:n s=s+1/i^2; pai= sqrt(s*6); end display(pai)

input n:100 pai = 3.1321

(2)程序:(向量结构): n=input('input n:'); i=1:n;

pai= sqrt(sum(1./i.^2)*6); display(pai); 结果: input n:100 pai = 3.1321

4、 根据1

21

5

13

1

1-+

+++=n y ,求: (1) y ﹤3时的最大n 值; (2) 与(1)的n 值对应的y 值。 y=0;k=0; while y<3 k=k+1; y=y+1/(2*k-1); end

display([k-1,y-1/(2*k-1)]) 结果:ans =

56.00 2.99 5、 考虑一下迭代公式:

x x n

n b a

+=

+1 其中,a 、b 为正的常数。

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

|x x n n -+1|≤105-,迭代初值0.10=x ,迭代次数不超过500次。 程序:x0=1.0; a=input('a='); b=input('b='); x= a/(b+x0); m=1;

while abs(x-x0)>1e-5 & m<500 x0=x; x=a/(b+x0); m=m+1; end

display([m,x]);

display([(-b+sqrt(b^2+4*a))/2,(-b-sqrt(b^2+4*a))/2]); 结果: a=5 b=5 ans =

7.0000 0.8541 ans =

0.8541 -5.8541

(2)如果迭代过程收敛于r,那么r的准确值是

2

4 2a

b b+

+

-

,当(a,b)的值取(1,1)、(8,3)、(10,0.1)时,分别对

迭代结果和准确值进行比较。

a=1

b=1

ans =

13.0000 0.6180

ans =

0.6180 -1.6180

a=8

b=3

ans =

13.0000 1.7016

ans =

1.7016 -4.7016

a=10

b=0.1

ans =

424.0000 3.1127 ans =

3.1127 -3.2127

6、已知)

20()30()

40(f f f y +=

(1) 当)5(10)(2++=n l n n f n 时,y 的值是多少? 程序:该题使用了function 的调用。 函数文件f.m function b=f(n); b=n+10*log(n^2+5); 结果:

y=f(40)/(f(30)+f(20)) y = 0.6390

(2) 当)1(433221)(+?++?+?+?=n n n f 时,y 的值是多少? 程序:函数文件fun.m function f=fun(n) f=sum([1:n].*([1:n]+1));

结果:

y=fun(40)/(fun(30)+fun(20)) y =

1.7662

作业三

1、

绘制下列曲线。

(1)!

33

x x y -= (2)e

x

y 2

2

21

-=π

(3)6422

2=+y

x

(4)??

?==t

t y t

t x cos sin

解:(1)程序:x=-5:0.001:5;

y=x-x.^3/(3*2*1);

plot(x,y);

(2)程序:x=-10:0.01:10;

y= exp(-x.*x/2)/(2*pi); >> plot(x,y); (3) 程序:

f='x.^2+2*y.^2-64';ezplot(f,[-10,10,-10,10]); ezplot('x.^2+2*y.^2-64',[-10,10,-10,10]); (4)程序:t=0:0.1:8*pi; >> x=t.*sin(t); >> y=t.*cos(t); >> plot(x,y);

已知??

?==-=(t)

sin(3t)sin y (3t)cos(t)

sin 5.02x x y 和,π≤≤t 0,完成下列操作:

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

线添加文字说明;

解:程序:

x1=linspace(0,1,100);

>> y1=2*x1-0.5;

>> t=linspace(0,pi,100);

>> x=sin(3*t).*cos(t);

>> y=sin(3*t).*sin(t);

>> plot(x1,y1,'k:',x,y,'bp');

>> text(0.5,1,'y=2x-0.5');

>> text(-0.5,0.5,'x=sin(3t)cos(t)');

>> text(-0.5,0.4,'x=sin(3t)sin(t)');

(2)以子图形式,分别用条形图和散点图绘制两条曲线,并为各子图添加函数标题。

程序:

subplot(1,2,1);

bar(x1,'group');

title('y1=2x-0.5');

subplot(1,2,2);

barh(t,'stack');

title('stack');

subplot(1,2,1);

>> scatter(x1,y1,10);

>> title('y=2x-0.5');

>> scatter(x,y,10);

>> title('x=sin(3t)cos(t),y=sin(3t)cos(t)');

2、 分别用plot 和fplot 函数绘制函数x

y 1sin =的曲线,分别分

析两条曲线的差别。

解:程序: subplot(1,2,1); x=1:1:100; y=sin(1./x); plot(x,y); subplot(1,2,2);

>> fplot('sin(1/x)',[1,100]);

3、 设e

t

y -+=

11,ππ≤≤-t ,在同一图形窗口采用子图的形式

绘制条形图、阶梯图、杆图和对数坐标图。

解:程序:t=-pi:0.01:pi; >> y=1./(1+exp(-t)); >> bar(t,y); >> subplot(2,2,2); >> stairs(t,y); >> subplot(2,2,3); >> stem(t,y);

>> semilogy(t,y); 结果:

4、 绘制下列极坐标图。

(1)4cos 5+=θρ (2))cos 1(?+=a r ,

]2,0[,1π?∈=a

解:(1)程序:theta=linspace(-pi,pi,100); ro=5.*cos(theta)+4; polar(theta,ro);

(2)程序:fi=linspace(0,2*pi,100);a=1 r=a.*(1+cos(fi)); polar(fi,r);

6、绘制下列三维图线。

(1)???

??

??=≤≤==--t z t t y t

x e e t

t π20,sin cos 2020

(2)???

????=≤≤==t t z t y t x 3210, 解:(1)程序:t=0:pi/20:2*pi; x=exp(-t./20).*cos(t); y=exp(-t./20).*sin(t);z=t; plot3(x,y,z); 结果:

(3) 程序:t=0:0.01:1; x=t;y=t.^2; z=t.^3; plot3(x,y,z); 结果:

7、已知y

x y x z 2

2

2

2

1sin

10+++

=,绘制其在30y 30 和-x 围的曲面图和等

高线。

解:程序:x=-30:0.1:0; y=0:0.1:30; [x,y]=meshgrid(x,y);

z=10.*sin(sqrt(x.^2+y.^2))./sqrt(1+x.^2+y.^2); meshc(x,y,z); 结果:

8、已知

3

,3,15y)(x,2

2

x ≤≤+

+=

y x f y

,绘制其曲面图,并将

5.0,8.0≤≤y x 部分镂空。

解:程序:x=linspace(-3,3,100); y=linspace(-3,3,100); [x y]=meshgrid(x,y); fxy=-5./(1+x.^2+y.^2);

i=find(abs(x)<=0.8 & abs(y)<=0.5); fxy(i)=NaN;

surf(x,y,fxy)

9、绘制???

??

??===u z u y u x 24cos 2sin 3ν

ν曲面图形,应用插值着色处理,并设置光照效

果。

解:程序:u=linspace(1,0.1,100); v=linspace(-pi,pi,1000); [u,v]=meshgrid(u,v);

x=3.*u.*sin(v);y=2.*u.*cos(v); z=4*u.^2;x=3*u.*sin(v);y=2*u.*cos(v); z=4*u.^2;surf(x,y,z); shading interp;

light('position',[1,1,1]);

10、设计一个蓝色球体沿正弦曲线运动的动画。

解:程序:t=0:pi/250:10*pi; y=sin(t); plot(t,y,'m');

h=line('color',[0,0,1],'marker','.','markersize',50); for i=1:length(t);

set(h,'xdata',t(i),'ydata',y(i)); M(i)=getframe; end

movie(M);

第四次作业

P103 思考题

5、写出完成下列操作的命令。

(1)建立3阶单位矩阵A。

A=eye(3)

A =

1 0 0

0 1 0

0 0 1

(2)建立5*6随机矩阵A,其元素为[100,200]围的随机整数。a=100;

b=200;

A=fix(a+(b-a)*rand(5,6))

A =

195 176 161 140 105 120

123 145 179 193 135 119

160 101 192 191 181 160

148 182 173 141 100 127

189 144 117 189 113 119

(3)产生均值为1、方差为0.2的500个正态分布的随机数。y=1+sqrt(0.2)*randn(25,20)

(4)产生和A同样大小的幺矩阵。

B=ones(size(A))

(5)将矩阵A的对角线的元素加30。

A=[1,2,3,4,5,6;5,6,2,1,3,5;7,8,9,4,5,6]

A =

1 2 3 4 5 6

5 6 2 1 3 5

7 8 9 4 5 6

>> A=A+30*eye(size(A))

A =

31 2 3 4 5 6

5 3

6 2 1 3 5

7 8 39 4 5 6

(6)从矩阵A提取主对角线元素,并以这些元素构成对角阵B。C=diag(diag(A))

C =

31 0 0

0 36 0

0 0 39

实验题:

4、分别用矩阵求逆、左除运算符、矩阵分解等方法求下列对角方程组b

Ax ,并分析程序的执行时间。其中

A =

2 -1 0 0 0

-1 2 -1 0 0

0 -1 2 -1 0

0 0 -1 2 -1

0 0 0 -1 2

>> b=[1;0;0;0;0]

相关文档