牛顿插值法插值法是利用函数 f (x) 在某区间中若干点的函数值,作出适当的特定函数,在这些点上取已知值,在区间的其他点上用这特定 函数的值作为函数 f (x) 的近似值如果这特定函数是 多项式,就称它为插值多项式 当插值节点增减时全部插值基函数均要随之变化, 这在实际计算中很不方便 为了克服这一缺点, 提出了牛顿插值 牛顿插值通过求各阶差商,递推得到的一个公式: f(x)=f[x0]+f[x0,x1](x-x0)+f[x0,x1,x2](x-x0)(x-x1)+...f[x0,...xn](x-x0)...(x-xn-1)+Rn(x) 插值函数插值函数的概念及相关性质 [1]定义:设连续函数 y-f(x) 在区间 [a,b] 上有定义,已知在 n+1 个互异的点 x0,x1, xn 上取值分别为 y0,y1, yn (设 a≤ x1 ≤x2 ≤ xn≤b) 若在函数类中存在以简单函数 P(x) ,使得 P(xi)=yi, 则称 P(x) 为 f(x) 的插值函数 .称 x1,x2, xn 为插值节点,称 [a,b] 为插值区间定理: n 次代数插值问题的解存在且唯一 ①牛顿插值法 C 程序程序框图 #includevoid main(){float x[11],y[11][11],xx,temp,newton;int i,j,n;printf("Newton 插值 :\n 请输入要运算的值 :x=");scanf("%f",&xx);printf(" 请输入插值的次数 (n<11):n=");scanf("%d",&n);printf(" 请输入 %d组值 :\n",n+1);for(i=0;i1)y[i][j]=(y[i-1][j]-y[i-1][j-1])/(x[j]-x[j-i]);elsey[i][j]=(y[i-1][j]-y[i-1][j-1])/(x[j]-x[j-1]);printf("%f\n",y[i][i]);}temp=1;newton=y[0][0];for(i=1;i
如果这特定函数是多项式, 就称它为插值多项式利用插值基函数很容易得到拉格朗日插值多项式, 公式结构紧凑,在理论分析中甚为方便, 但当插值节点增减时全部插值基函数均要随之变化,整个公式也将发生变化, 这在实际计算中是很不方便的,为了克服这一缺点,提出了牛顿插值牛顿插值通过求各阶差商,递推得到的一个公式:f(x)=f[x0]+f[x0,x1](x-x0)+f[x0,x1,x2](x-x0)(x-x1)+...f[x0,...xn](x-x0)...(x-xn-1)+Rn(x)关键词:牛顿插值法 流程图 程序实现一、 插值法的由来在许多实际问题及科学研究中, 因素之间往往存在着函数关系,然而,这种关系经常很难有明显的解析表达, 通常只是由观察与测试得到一些离散数值有时, 即使给出了解析表达式,却由于表达式过于复杂,不仅使用不便,而且不易于进行计算与理论分析解决这类问题的方法有两种:一种是插值法 ,另一种是拟合法插值法是一种古老的数学方法,它来自生产实践,早在一千多年前,我国科学家在⑤研究历法上就应用了线性插值与二次插值, 但它的基本理论却是在微积分产生之后才逐渐完善的, 其应用也日益增多, 特别是在计算机软件中,许多库函数,如等的计算实际上归结于它的逼近函数的计算。
逼近函数一般为只含有算术运算的简单函数, 如多项式、有理分式(即多项式的商)在工程实际问题当中,我们也经常会碰到诸如此类的函数值计算问题 被计算的函数有时不容易直接计算, 如表达式过于复杂或者只能通过某种手段获取该函数在某些点处的函数值信息或者导数值信息等因此,我们希望能用一个“简单函数”逼近被计算函数,然后用该简单函数的函数值近似替代被计算函数的函数值 这种方法就叫插值逼近或者插值法逐次线性插值法优点是能够最有效地计算任何给定点的函数值,而不需要写出各步用到的插值多项式的表达式 但如果解决某个问题时需要插值多项式的表达式, 那么,它的这个优点就成了它的缺点了能不能根据插值条件构造一个插值多项式, 它既有具体的表达式, 又很容易用它计算任何点的函数值呢?牛顿插值法能作到这一点二、牛顿插值法的概念牛顿插值多项式的表达式设n01(0)2(0)(1)n(0)(1) (n 1)N c cx x c x x x x cx x x xx x问题是如何根据插值条件N n xiyi ,i=0,1,2n来计算待定系数 c0 ,c1 , c2cn ?⑥由知,由知N n ( x0)c0 y0N n ( x1)y0 f ( x0)f ( x )0 。
y1 f ( x1)c0 c1 ( x1 x0) y1因而c1y1y0f ( x1)f ( x0)f x0 , x1x1x0x1x0,其中f x0 , x1 称为函数 f(x) 在 x0 , x1 点的一阶商由N n ( x2)y2f (x2)知c0 c1( x1x0)c2 ( x2 x0 )( x2 x1) y2因而⑦c2y2 y0f [ x0 , x1]( x2x0)( x2 x0 )( x2x1)y2y1y1y0f [ x0 , x1]( x2 x0)y2y1( x2x0)( x2x1)f [ x0 , x1]( x1x0)f [ x0 , x1]( x2x0)y2y1(x2x0)( x2x1)f [ x0 , x1]x2x1(x2x0)f [ x1 , x2 ]f [ x0 , x1]f [ x0 , x1, x2]( x2x0 )其中 f [ x0 , x1, x2] 称为函数 f (x) 在 x0 , x1, x2 点的二阶差商实际上,它是一阶差商的差商一般地,如果已知一阶差商f [ xi 1 , xi ], f [ xi , xi 1] ,那么就可以计算二f [ xi 1 , xif [ xi , xi 1] f [ xi 1, xi ], xi 1]阶差商xi 1 _ xi 1类似于上述过程不断地推导下去,可得c3f [ x1 , x2 , x3]f [ x0 , x1 , x2]f [ x0 ,x1 , x2 , x3],(x3x0)c4f [ x1 , x2 , x3 , x4]f [ x0 , x1 , x2 , x3]f [ x0 , x1 , x2 , x3 , x4],( x4x0)c4f [ x1 , x2 xn]f [ x0 , x1, x2 xn 1]xn ],( xnx0 )f [ x0 , x1 , x2其中,f [ x , x , x , x ], f [ x , x , x , x ,。