2015.
上机作业题报告
1
题目
设,其精确值为
1311(??)。 22NN?1(1)编制按从大到小的顺序SN?(2)编制按从小到大的顺序SN?111,计算SN的通用程序。 ?????2222?13?1N?1111,计算SN的通用程?????N2?1(N?1)2?122?1序。
(3)按两种顺序分别计算S102,S104,S106,并指出有效位数。(编制程序时用单精度) (4)通过本次上机题,你明白了什么?
clear; N=input('请输入N值:'); Ac=single((3/2-1/N-1/(N+1))/2); Snl2s=single(0); Sns2l=single(0); for i=2:N Snl2s=Snl2s+1/(i*i-1); end for i=N:-1:2 Sns2l=Sns2l+1/(i*i-1); end fprintf('精确值为: %f\\n',Ac); fprintf('从大到小的顺序累加得SN=%f\\n',Snl2s); fprintf('从小到大的顺序累加得SN=%f\\n',Sns2l); disp('========================================================'); 程序 运行结果
>> P20T17 请输入N值:10^2 精确值为: 从大到小的顺序累加得SN= 从小到大的顺序累加得SN= ============================================================ >> P20T17 请输入N值:10^4 精确值为: 从大到小的顺序累加得SN= 从小到大的顺序累加得SN= ============================================================ >> P20T17 请输入N值:10^6 精确值为: 从大到小的顺序累加得SN= 从小到大的顺序累加得SN= ============================================================ 结果分析
按从大到小的顺序,有效位数分别为:6,4,3。 按从小到大的顺序,有效位数分别为:5,6,6。
可以看出,不同的算法造成的误差限是不同的,好的算法可以让结果更加精确。当采用从大到小的顺序累加的算法时,误差限随着N的增大而增大,可见在累加的过程中,误差在放大,造成结果的误差较大。因此,采取从小到大的顺序累加得到的结果更加精确。
2
题目
(1)给定初值x0及容许误差?,编制牛顿法解方程f(x)=0的通用程序。
3(2)给定方程f(x)?x3?x?0,易知其有三个根x1???3,x2??0,x3??3
??)时,Newton迭代序列收敛○1由牛顿方法的局部收敛性可知存在??0,当x0?(??,于根x2*。试确定尽可能大的。
?1),(?1,??),(??,??),(?,1),(1,??)时Newton○2试取若干初始值,观察当x0?(??,序列的收敛性以及收敛于哪一个根。
(3)通过本上机题,你明白了什么?
程序
函数m文件: function Fu=fu(x) Fu=x^3/3-x; end 用Newton法求根的通用程序 clear; x0=input('请输入初值x0:'); ep=input('请输入容许误差:'); flag=1; while flag==1 x1=x0-fu(x0)/dfu(x0); if abs(x1-x0)