数值分析喻文健部分习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一题:
>> clear;
>> x=logspace(_16,0); >> loglog(x,x/2,'r--'); >> hold on
>> loglog(x,1./(mldivide(2*10A-17,x)),'b--'); >> loglog(x,x/2+1./(mldivide(2*10A -17,x)),'g-'); >> xlabel('步长 h'); >> ylabel('误差');
>> text(10A-12,10A-13,'截断误差'); >> text(10A-5.5,10A-13,'舍入误差'); >> text(10A-10,10A-6,'总误差限');
第四题:
>> clear; >> k=1:20; >> n=10.Ak; >> e=(1+1./n).An
1至9列 2.5937 2.7048
2.7169
2.7181
2.7183
2.7183
2.7183
2.7183
2.7183 10至18列
10r
10
10
10 7
;L ■- < h
1012
1020 10
2.7183
2.7183 2.7185 2.7161 2.7161
3.0350 1.0000 1.0000 1.0000
19 至20 列
1.0000 1.0000
>> y=e-exp(1)
y =
1 至9 列
-0.1245
-0.0135 -0.0014 -0.0001 -0.0000 -0.0000 -0.0000 -0.0000 0.0000
10 至18 列
0.0000 0.0000 0.0002 -0.0022 -0.0022 0.3168 -1.7183 -1.7183 -1.7183
19 至20 列
-1.7183 -1.7183
>> plot(k,y)
>> grid on
由图可知,误差并不是随n的增大而降低。第五题
(1 )
>> clear;
>> x=in put('e nter a nu mber:');
en ter a nu mber:1
>> y1=1+x+x A2/factorial(2);
>> y2=exp(1);
>> f1=y1-exp(1);
>> e1=abs(f1)/exp(1);
>> disp(f1)
-0.2183
>> disp(e1)
0.0803
>> y3=1+x+xA2/factorial(2)+xA3 /factorial(3); >> f2=y3-exp(1);
>> e2=abs(f2)/exp(1);
>> disp(f2)
-0.0516
>> disp(e2)
0.0190
>> y4=1+x+x A2/factorial(2)+x A3 /factorial(3)+x A4 /factorial(4);
>> f3=y4-exp(1);
>> e3=abs(f3)/exp(1);
>> disp(f3)
-0.0099
>> disp(e3)
0.0037
>> y5=1+x+xA2/factorial(2)+xA3 /factorial(3)+xA4 /factorial(4)+xA5 /factorial(5); >> f4=y5-exp(1);
>> e4=abs(f4)/exp(1);
>> disp(f4)
-0.0016
>> disp(e4)
5.9418e-04
根据以上绝对误差和相对误差的数据分析选四阶泰勒展开式为判停标准。
(2)
>> for x=-20:20;if rem(x,5)==0
f1=1+x+xA2/factorial(2)+xA3 /factorial(3)+xA4 /factorial(4);
f2=exp(1);
f=f1-f2;
disp(f);
end
end
5.5116e+03
1.6427e+03
288.2817
10.9901
-1.7183
62.6567
641.6151
2.7977e+03
8.2183e+03
(3)
不能,正负交替出现抵消现象,计算结果误差较大。 (改程序在琢磨中)
(4)
当x<0 时,能通过级数项的重新排列或分组得到较准确的结果。因为重新排列或分组后可以有效地减少抵消现象的影响,从而使得计算结果较准确。
例1.21
>> clear;
>> tic;
>> p=input('please input p(x)=');
please input p(x)=[7 6 2 6 3]
>> x=input('please input x=');
please input x=2
>> n=length(p);
>> s(1)=p(1);
>> for i=1:n-1
s(i+1)=s(i)*x+p(i+1);
end
>> p=s(n);
>> toc;
时间已过196.889093 秒。