数值分析实验报告
77712
《数值分析》
实验报告
学院:计算机科学与软件学院姓名:XXX
班级:计算机XX班
学号:XXXXXX
实验一:舍入误差与数值稳定性
实验目的:
1、 通过上机编程,复习巩固以前所学程序设计语言;
2、 通过上机计算,了解舍入误差所引起的数值不稳定性。
3、 通过上机计算,了解运算次序对计算结果的影响,从而尽量避免大数吃小数的现象。
实验内容:用两种不同的顺序计算644834.11000012
≈∑=-n n ,分析其误差
的变化。
实验流程图:
实验源程序:
#include
#include
void main()
{ int i;
float s1=0,s2=0,d1,d2;
for (i=1;i<=10000;i++)
s1=s1+1.0f/(i*i);
for (i=10000;i>=1;i--)
s2=s2+1.0f/(i*i);
d1=(float)(fabs(1.644834-s1));
d2=(float)(fabs(1.644834-s2));
printf("正向求和结果为%f\n 误差为%f\n\n",s1,d1);
printf("反向求和结果为%f\n 误差为%f\n\n",s2,d2);
if(d1 printf("正向求和误差小于负向求和误差\n"); else if(d1==d2) printf("正向求和误差等于负向求和误差\n"); else printf("正向求和误差大于负向求和误差\n"); } 实验结果: 实验分析:第一次做数值实验,又一次使用C语言编程,没有了刚学习C语言的艰难,能够将实验步骤转换成流程图并编写出完整的实验代码,在经过多次调试、改正后得到正确的程序和结果。这个实验较简单,计算误差时如果输入数据有误差,而在计算过程中舍入误差不增长,则称此算法是稳定的,否则称此算法是数值不稳定的,减少运算次数可以减小舍入误差。在运算中,如果参加运算的数的数量级相差很大,而计算机位数有限,如不注意运算次序就可能出现大数“吃掉”小数的现象,进而影响计算结果的可靠性,所以计算过程中要注意运算次序,避免出现这种现象。 实验二:拉格朗日插值法和牛顿插值法 实验目的:分别用拉格朗日差值和牛顿插值解决数学问题,并比较各方法的优略。 1、拉格朗日插值 实验内容: 按下列数据 -3.0 -1.0 1.0 2.0 3.0 x i y i 1.0 1.5 2.0 2.0 1.0 作二次插值,并求x 1=-2,x 2 =0,x 3 =2.75时的函数近似值。 实验流程图: 实验源程序: #include float lagrange(int,float,float[],float[]); void main() { float a,x[50],y[50],l; int m,n; printf("题目:按下列数据\n"); printf("x:-3.0 -1.0 1.0 2.0 3.0\n"); printf("y:1.0 1.5 2.0 2.0 1.0\n"); printf("作二次插值,并求x=-2,x=0,x=2.75时的函数近似值.\n\n"); printf("输入插值次数:"); scanf("%d",&n); printf("输入计算次数:"); scanf("%d",&m); for(int i=0;i<=m;i++) { for (int j=0;j<=n;j++) { printf("输入要计算的第%d个数的第%d个节点及其函数值:",i+1,j+1); scanf("%f,%f",&x[j],&y[j]); } printf("输入要计算的x的值:");