计算方法实验一舍入误差与数值稳定性实验报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一 舍入误差与数值稳定性
1、目的与要求
通过上机编程,复习巩固以前所学得程序设计语言及上机操作指令,切实感受舍入误差所引起的数值不稳定性。
2、算法与实例
对n=0,1,2,…,20计算定积分
dx x x I n n ⎰+=
105
算法1:利用递推公式
算法2:利用递推公式
n I I n n 51511+-=-
),,(01920Λ=n
008730.021*********≈+≈I
3、程序设计
(1)流程图
算法1流程图如左图,算法2流程图如右
1 (2)程序清单
算法1:
#include
1
main()
{
double y0=log(6.0/5.0),y1;
int n=1;
printf("y[0]=%f",y0);
while (1)
{
y1=1.0/n-5*y0;
printf("y[%d]=%f\n",n,y1); if (n>=20)
break;
y0=y1;
n++;
}
}
算法2:
#include
void main()
{
double y0=(1.0/126+1.0/105)/2,y1; int n;
printf("y[20]=%f\n",y0);
for (n=19;n>=0;n--)
{
y1=1/(5.0*n)-y0/5.0;
printf("y[%d]=%f\n",n,y1);
y0=y1;
}
4、结果与分析
算法1结果:
算法2结果
分析:
(1)在数值运算中,两相近数相减会严重损失有效数字。(2)若参加运算的数量级相差很大而计算机的位数有限,如不注意运算次序,可能出现大数“吃”小数现象,影响计算结果。
(3)避免使用绝对值较小的数做除数
(4)如果能够减少运算次数,即能节省计算机的运行时间,又能减少舍入误差。
(5)从结果可以看出,算法1是不稳定的,算法2是稳定的。