文档详情

数值分析实验报告五.doc

发布:2018-02-28约1.29千字共3页下载文档
文本预览下载声明
数值分析实验报告(五) 一.实验名称: lagrange和newton插值法 二.实验目的: 掌握用Lagrange和Newton方法解决未知的问题。 三.题目: 已知 x 0.4 0.5 0.6 0.7 0.8 0.9 lnx -0.916291 -0.693147 -0.510826 -0.357762 -0.223144 -0.105361 分别用lagrange插值法和牛顿插值法来求ln0.78的近似值。 四.程序: Lagrange插值法: #include stdio.h #include math.h double Langrage(x,y,n,a) double *x,*y,a; int n; { int i,j; double t=0,k; for (i=0;i=n;i++) { k=1; for (j=0;j=n;j++) { if (j==i)j++; k*=(a-x[j])/(x[i]-x[j]); } t+=k*y[i]; } return t; } main() { double x[20]={0.4,0.5,0.6,0.7,0.8,0.9}, y[20]={-0.916291,-0.693147,-0.510826,-0.357765,-0.223144,-0.105361}, a=0.78; clrscr(); printf(ln0.78=%10.5f\n,Langrage(x,y,5,a)); } 牛顿插值法: #include stdio.h #include math.h #define N 5 double Newton(x,y,a) double *x,*y,a; { int i,j; double t,k=1; for (i=0;iN;i++) { for (j=N;ji;j--) y[j]=(y[j]-y[j-1])/(x[j]-x[j-1]); } t=y[0]; for (i=1;i=N;i++) { k*=(a-x[i-1]); t+=y[i]*k; } return t; } main() { double x[10]={0.4,0.5,0.6,0.7,0.8,0.9}, y[10]={-0.916291,-0.693147,-0.510826,-0.357765,-0.223144,-0.105361}, a=0.78; clrscr(); printf(ln0.78=%10.5f\n,Newton(x,y,a)); } 五.运行结果: Lagrange插值法结果显示: ln0.78= -0.24923 牛顿插值法结果显示: ln.78= -0.26666 六.体会: 通过本次练习我体会到了lagrange和newton插值法在实际解题中的应用,也方便了我以能 更好的应用。 信计050213 孟松见
显示全部
相似文档