文档详情

牛顿插值法的分析与应用.doc

发布:2018-06-19约2.55千字共7页下载文档
文本预览下载声明
牛顿插值法的分析与应用 学生姓名: 班级: 学号: 电话: 指导教师: 成绩: 一.定义 关于的零阶差商 关于,的一阶差商 依次类推,关于,,……,的k阶差商 二. 牛顿插值多项式 设给定的n+1个互异点,,,, 称满足条件 , 的n次多项式 为Newton插值多项式,称 为插值余项。 三.算法 步骤1:输入节点(xj,yj),精度,计值点xx,f0p,1T,1i; 步骤2:对k=1,2,……,i依次计算k阶均差 f[xi-k,xi-k+1,…,xi] = (f[xi-k+1,…,xi]- f[xi-k,…,xi])/( xi -xi-k ) 步骤3:(1)、若| f[x1,…,xi]- f[x0,…,xi-1]| ,则p为最终结果Ni-1(x),余项Ri-1= f[x0,…,xi](xx-xi-1)T。 (2)、否则(xx-xi-1)*TT,p+ f[x0,…,xi]*Tp,转步骤4。 步骤4:若in,则i+1i,转步骤2;否则终止。 四.流程 i+1i YES NO YES i+1 i NO 五.程序清单#includestdio.h #define n 4//牛顿插值的次数 void main() { float a[n+1][n+2]={0},s=0,t=1,x; int i,j; printf(请输入xi及yi的值//要求先输入xi再输入yi然后输入下一组\n); for(i=0;in+1;i++) for(j=0;j2;j++) scanf(%f,a[i][j]); for(j=1;jn+2;j++)//计算各阶均差 for(i=j;in+1;i++) a[i][j+1]=(a[i][j]-a[i-1][j])/(a[i][0]-a[i-j][0]); printf(输出xi,yi及各阶均差\n); for(i=0;in+1;i++) { for(j=0;jn+2;j++) printf(%6.5f ,a[i][j]); printf(\n); } printf(输出牛顿插值表达式\n); printf(N%d(x)=,n); for(i=0;in+1;i++) { printf(%6.5f,a[i][i+1]); for(j=0;ji;j++) printf((x-%3.2f),a[j][0]); if(i==n) break; printf(+); } printf(\n); printf(输入插值点x=); scanf(%f,x); for(i=0;in+1;i
显示全部
相似文档