⎰⎰⎰
=<=+<=10101
0205
/140^*5/1)5/(40^x 40^x *6/1dx x x dx 182322
.05ln 6ln 5/11
≈-=+⎰dx x )(⎰+1
0)5/(^dx
x n x 实验报告名称 舍入误差和数值稳定性 班级: 学号: 姓名: 成绩:
1实验目的
1)通过上机编程,复习巩固以前所学程序设计语言及上机操作指令;
2)通过上机计算,了解舍入误差所引起的数值不稳定性。
2 实验内容
对n=0,1,2,3,......,40计算定积分 3实验步骤 算法一 利用递推公式
yn=1/n-5yn-1 n=1,2,3,...,40
取y0= 算法二 利用递推公式
yn-1=1/5n-1/5yn n=40,39.....,1
注意到 1/246=
取y40≈1/2*(1/205+1/246)≈0.0044715 4 程序设计
算法一的c 语言程序:
/*数值不稳定算法*/
#include<stdio.h>
#include<math.h>
void main()
{
double y0=log(6.0/5.0),y1;
int n=1;
printf("y[0]=%-20f",y0);
while(1)
{
y1=1.0/n-5*y0;
printf("y[%d]=%-20f",n,y1);
if(n>=40)break;
y0=y1;
n++;
if(n%3==0)printf("\n");
}
}
算法二的c语言程序
#include<stdio.h>
#include<math.h>
void main()
{
double y0=(1/205.0+1/246.0)/2,y1;
int n=40;
printf("y[40]=%-20f",y0);
while(1)
{
y1=1/(5.0*n)-y0/5.0;
printf("y[%d]=%-20f",n-1,y1);
if(n<=1)break;
y0=y1;
n--;
if(n%3==0)printf("\n");
}
}
5实验结果及分析算法1的输出结果:
算法2的输出结果:
实验分析:从计算结果可以看出,算法一是数值不稳定的,而算法二是数值稳定的。
6总结
通过这次上机,学习了解了舍入误差在不同算法时对结果的影响不同,稳定的算法才能获得正确的结果。
7参考资料
【1】孙志忠,吴宏伟,袁慰平,闻震初,计算方法与实习.第四版.南京:东南大学出版社【2】谭浩强.C程序设计.第四版.北京:清华大学出版社。