文档介绍:毕节学院实验报告
实验名称: 误差分析、误差传播及算法稳定性实验报告序号: 1
组别
姓名
王朝春
同组实验者
李亚杨凯
实验项目
计算并估计误差
实验日期
2012年10月5日
实验类别
1、验证性实验或基础性实验; □ 2、综合性实验
□ 3、设计性实验; □ 4、创新性实验和研究性实验;
教师评语
实验成绩
指导教师(签名)
赖志柱
年月日
实验目的:
通过本实验对求解问题的算法进行好坏判断有一个初步了解,并加强对设计一个好算法的理解,体验数值计算稳定性,从而了解数值计算方法的必要性,体会数值计算的收敛性与收敛速度。
实验任务与要求:
计算并估计误差
(1)建立若干个(不少于两个)计算公式;
(2)分析计算公式的理论误差;
(3)编写程序(推荐MATLAB)实现(1)中的计算公式、输出结果并比较实际误差;
(4)任选正整数,要求既从计算,又从计算,并分析您的结果。这里且。
小组分工合作说明:王朝春查找资料;李亚负责编辑,杨凯协助完成。
实验过程及内容:
解:
由分部积分可得计算的递推公式
(1)
若计算出,代入(1)式,可逐次求出的值。要算出就要先算出,若用泰勒多项式展开部分和
并取k=19,用4位小数计算,则得,,由此产生的舍入误差这里先不讨论。当初值取为时,用(1)式递推的计算公式为
,n=1,2,…。
计算结果见表1的列。用近似产生的误差就是初值误差,它对后面计算结果是有影响的.
从表1中看到出现负值,这与一切相矛盾。实际上,由积分估值得
(2)
因此,当n较大时,用近似显然是不正确的。这里计算公式与每步计算都是正确的,那么是什么原因合计算结果出现错误呢?主要就是初值有误差,由此引起以后各步计算的误差满足关系
由此容易推得
,
这说明有误差,则就是的n!倍误差。例如,n=19,若,则。这就说明完全不能近似了。它表明计算公式(A)是数值不稳定的。
我们现在换一种计算方案。由(2)式取n=19,得
,
我们粗略取,然后将公式(1)倒过来算,即由算出,,…,,公式为
计算结果见表1的列。我们发现与的误差不超过。记,则,比缩小了n!倍,因此,尽管较大,但由于误差逐步缩小,故可用近似。反之,当用方案(A)计算时,尽管初值相当准确,由于误差传播是逐步扩大的,因而计算结果不可靠。此例说明,数值不稳定的算法是不能使用的。
程序如下:
function x11 = facto(n)
%这个函数的功能是求 n 的阶乘;
x11 = 1;
if n == 0
x11 = 1;
else
for i = 1:n
x11 = x11*i;
end
end
function e_1 = telor(k)
%这个函数的功能是求e^(-1);用泰勒多项式展开式进行计算的,
% k是代表展开到第 k+1 项
e_1 = 1;
if k == 1
e_1 = 1;
else
for i=1:k
e_1 = e_1 +(-1)^i/facto(i);
end
end
function jifen(m)
I0=1-telor(19);
%第一种算法