matlab基础与应用部分习题答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
结果: a=5 b=5 ans =
7.0000 ans = 0.8541
0.8541
-5.8541
b 2
(2)如果迭代过程收敛于 r,那么 r 的准确值是
b
2
4a
,
当(a,b)的值取(1,1) 、 (8,3) 、 (10,0.1)时,分别对 迭代结果和准确值进行比较。 a=1 b=1 ans = 13.0000 ans = 0.6180 a=8 b=3 ans = 13.0000 ans = 1.7016 -1.6180 0.6180
1.7016 a=10 b=0.1 ans =
-4.7016
424.0000 ans = 3.1127 6、已知 y
3.1127
-3.2127
f (40) f (30) f (20)
(1)当 f (n) n 10l n (n 2 5) 时,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)当 f (n) 1 2 2 3 3 4 n (n 1) 时,y 的值是多少? 程序:函数文件 fun.m function f=fun(n) f=sum([1:n].*([1:n]+1));
1 3 1 5 1 ,求: 2n 1
(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 5、 考虑一下迭代公式:
(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');
作业二
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 z= 2 3 4
ans = 12.00 11046.00
(2)结果:输入工号 12 输入工时 56 ans = 12.00 4004.00
(3)结果:输入工号 12 输入工时 80 ans = 12.00 3、 根据
2
6720.00
1
2
6
1
2
1 2 3
1
2
1
n
2
, 求π的近似值。 当 n 分别取 100、
已知 y 2 x 0.5和
x sin (3t)cos(t) ,0 t y sin(3t)sin (t)
,完成下列操作:
(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)');
4197
7 402 ans = 3 -108 68 -360 783 270 >> A^3 A.^3 134 518 0
-407 591
-1052 12489
>> 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)
结果:
y=fun(40)/(fun(30)+fun(20)) y= 1.7662
作业三
1、 绘制下列曲线。
3
(1) y x x (3) x2 2 y
2
3! 64
1 (2) y 2
e
x
2
2
(4)
x t sin t y t cos t
解: (1)程序:x=-5:0.001:5;
>> C=A(:,1:2) C= 97 -78 32 0 67 75 5 -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
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、 根据 y 1
33 40 47 54 34 41 48 55 35 42 49 56 (4 求矩阵 A 的大小和维素。 sizeA = size(A) dA = ndims(A) sizeA = 6 7
61 62 63
68 69 70
75 76 77
dA = 2 (5)将向量 t 的 0 元素用机器零来代替。 >> t=[1 2 3 4 0 5]; t= 1 2 3 4 0 5
8 x= 189 2、
9
0
1
硅谷公司员工的工资计算方法如下。
(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
>> 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 1 8 15 22 29 2 9 16 23 30 3 10 17 24 31 4 11 18 25 32 5 12 19 26 33 (3)将矩阵 A 的每个元素值加 30。 >> A=A+30 A= 30 31 32 37 38 39 44 45 46 51 52 53 58 59 60 65 66 67 72 73 74 35 36 37 38 39 40 42 43 44 45 46 47
>> 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 -78 32 67 75 5 34 65 -23 10 5 -59
>> find(t==0) ans = 5 >> t(5)=eps t= 1.0000 2.0000 3.0000 4.0000 0.0000 (6)将含有 12 个元素的向量 x 转换成 3*4 矩阵。 >> x=[0:11] x= 0 1 2 3 4 5 6 7 8 9 10 11 5.0000
Hale Waihona Puke Baidu
2.99
x
其中,a、b 为正的常数。
n 1
a b xn
(1)编 写 程 序 求 迭 代 的 结 果 , 迭 代 的 终 止 条 件 为 | xn 1 xn | 10 , 迭代初值 x0 1.0 , 迭代次数不超过 500 次。
5
程序: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]);
作业一
4、写出完成下列操作的命令。 (1)将矩阵 A 第 2~5 行中第 1,3,5 列元素赋给矩阵 B。 >> M=[0:1:48]; >> A=reshape(M,7,7) A= 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
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);