牛顿插值法的C语言实现001.doc
文本预览下载声明
牛顿插值法的C语言实现
摘要:拉格朗日插值法具有明显的对称性,公式中的每一项与所有的插值节点有关。因此,如果需要增加一个插值节点,则拉格朗日插值公式中的每一项都要改变,在有的应用中就显得不太方便。因此,可以利用另外一种差值方法来弥补这种缺陷,就牛顿插值法。本文通过对牛顿插值法的数学分析,主要给出其C语言实现方法。
关键字:差商 差分 C语言算法
1差商及其牛顿插值公式
1.1 差商及其主要性质
定义 若已知函数在点处的函数值。则称:
为函数在点的阶差商;
为函数过点的阶差商;
为函数过点的阶差商;
以此类推,一般地称
为函数过点的阶差商。
性质1 阶差商表示为函数值的线性组合。即
性质2 若函数在包含节点的区间上存在阶导数,则阶差商与导数的关系为
1.2 牛顿插值公式
通过个互异点上的次数不超过的插值多项式可以表示如下形式:
这种形式的插值多项式称为牛顿插值多项式,一般记为
由牛顿插值多项式可以看出,当增加一个插值点时,当前已有的各项不变,只需要在后面增加一项即可。并且,在牛顿插值公式中,每一项的系数就是各阶差商,比拉格朗日插值公式计算量小,且便于程序设计。
根据差商性质2,即
就可以将拉格朗日插值公式的余项转化成牛顿插值公式的余项,即
牛顿插值公式余项更具有一般性,它对于列表函数或者导数不存在的情形都适用。
2 差分与等距结点插值公式
2.1 差分及其主要性质
定义 设函数在等距结点
上的函数值为
其中,为常熟,称为步长。则
称为函数在处以为步长的一阶向前差分,并简记为
;
称为函数在处以为步长的一阶向后差分,并简记为
称为函数在处以为步长的一阶向中心差分,并简记为
性质1 各阶差分可以表示成函数值的线性组合。即
性质2 差商与差分具有如下关系:
2.2 等距结点插值公式
2.2.1 牛顿前插公式
其余项公式为
2.2.2 牛顿后插公式
其余项公式为
在用牛顿前插和后插公式计算时候,要涉及到各阶前插和后插计算,下面是各阶向前和向后差分 的计算格式,如下图所示。
表1 各阶向前差分和向前差分的计算公式
1阶差分 2阶差分 3阶差分 4阶差分 用于前插公式
用于后插公式
3 牛顿差值公式的C程序设计和应用实例
3.1 牛顿差值法的应用步骤
步骤 首先我们按照表1,求得各点的差商.然后利用牛顿前差或后差公式,把数值带入.即可以求得n次多项式。
它在计算机上的应用步骤如下:
步骤1 输入所要求的牛顿多项式的次数,并依次输入个节点.
for : i=0 to n+1
{
scanf(%f,x[i])
scanf(%f,y[0][i]);
}
步骤2 计算各阶差商
for : i=1 to n+1
{
for : j=i to n+1
if(i1)
y[i][j]=(y[i-1][j]-y[i-1][j-1])/(x[j]-x[j-i]);
else
y[i][j]=(y[i-1][j]-y[i-1][j-1])/(x[j]-x[j-1]);
}
步骤3 代入牛顿插值公式,可计算得出结果。
for:i=1 to n+1
{
temp=temp*(xx-x[i-1]);
牛顿=牛顿+y[i][i]*temp;
}
3.22.1 已知的一组数据为
x sinx 构造牛顿插值函数并作图分析。
并分别利用程序估计,的估计值。
分析 首先我们可以通过程序求出差商表:
一阶差商 二阶差商 三阶差商 四阶差商
显示全部