张艳-埃尔米特Hermite 插值逼近的C语言程序.doc
论文题目:埃尔米特(Hermite) 插值逼近的C语言程序
院 系: 数学科学学院
专 业: 数学与应用数学
姓 名: 张 艳
学 号:
指导教师: 侯 存 贵
完成时间: 2007-5-15
埃尔米特(Hermite) 插值逼近的C语言程序
张艳
包头师范学院数学科学学院
摘要:本文主要探讨埃尔米特(Hermite) 插值逼近的C语言程序算法,着重分析其推导过程,并给出了其C语言程序以及埃尔米特(Hermite)插值逼近的简单应用.
关键词:Hermite插值多项式;插值条件; Hermite插值基函数.
一、Hermite插值多项式定义
定义: 设基点互异.给定,,.要求插值多项式满足 (1)
则称为二重密切Hermite插值多项式,简称为Hermite插值多项式.称为二重插值基点.
(1)式共有个条件,因此Hermite插值多项式通常次数不超过,故可将记为.
二、埃尔米特(Hermite)插值多项式的存在唯一性
定理:关于互异基点满足条件(1)的二重密切次Hermite插值多项式存在且唯一.
证明:设有2n+1次多项式
(2)
满足条件(1)即 (3)
由(2)式知(3)式是一个关于的阶线性方程组.的存在唯一性决定于(3)式为齐次线性方程系组,即当=0,=0()时,(3)式仅有平凡解 .现用反证法证明:若齐次方程组有非平凡解,则表示存在一个次数不高于的多项式满足
为的互异的二重零点,即次多项式有个零点(包括重数),这和代数基本定理相矛盾.
三、埃尔米特(Hermite)插值多项式的构造
由定理知存在且唯一,我们用类似于拉格朗日插值多项式的构造方法来构造Hermite插值多项式
设,,,分别满足插值条件
(4)
(5)
(其中表示克罗内克(Kronecker)符号.当, 时=1;当,时=0.)的次多项式,于是次数不超过次多项式 能够满足插值条件 .因而就是所要求的次多项式.因此只要构造出满足条件(4)(5)的和即可.我们把满足插值条件(4)(5)的次多项式和()称为Hermite插值基函数.下面构造和
由于关于基点的拉格朗日基函数满足 ( ,)且是次多项式,结合插值条件(4)设为,则依据条件(4)要求应有
当时,由于 故
当时应有
从中解出 可得
从而得到
设为 则
依据条件(5)要求应有
当时,由于 故
当时,故也应有 而
故 即
因此,我们得到埃尔米特插值函数的基函数为
根据插值条件,利用二重密切的Hermite插值基函数的性质,Hermite插值多项式可简单地表示为
四、埃尔米特(Hermite)插值多项式误差
在求解某些数学问题时,用有限的过程代替无限过程所产生的误差称为截断误差(或方法误差).
定理:a:设的导数于[a,b]连续,于(a,b)内存在, ()互异;
b:为Hermite插值多项式;
则 .
其中与有关。
五、埃尔米特(hermite)插值程序
功能:给定个基点,()上的函数值及一阶导数值,,用埃尔米特(Hermite)插值公式计算出给定插值点处的函数近似值.
程序如下:
#include
#include
#include
#include
#define EPSILON 1.0e-12
#define N 3
double hermite(double x,double xi[N],double yi[N],double dyi[N])
{ int i,j;
static double li,sum,y,gix[N],hix[N];
for(i=0;i
{ li=1.0;sum=0.0;
for(j=0;j
if(j!=i)
{ if(fabs(xi[i]-xi[j])
{ printf("The interpolation base points overlapping!\n");
printf("Strike any key to exit!\n");
getch();
exit(1);