非标准Hermite插值的构造
- 格式:pdf
- 大小:86.33 KB
- 文档页数:2
实验二埃尔米特(Hermite)插值一、实验目的:1.掌握埃尔米特插值算法原理;2.使用C语言编程实现埃尔米特插值算法。
二、实验准备:阅读《数值分析》2.4节二、实验要求:某人从甲地开车去乙地,每隔一段时间对行车距离和速率进行一次采样,得到在n+1 个采样时刻点t i 的里程s i和速率v i(i=0, 1, ..., n)。
要求编程构造埃尔米特插值多项式H2n+1(t),满足H2n+1(t i)=s i,H'2n+1(t i)=v i,对所有i=0, 1, ..., n成立,并据此计算m个给定时刻的里程和速率。
函数接口定义:void Hermite_Interpolation( int N, double t[], double s[], double v[], int m, double ht[], double hs[], double hv[] );其中N为采样点个数(注意这个N不是公式中的最大下标n,而是等于n+1),采样时刻点t i、里程s i、速率v i分别通过t、s、v传入;m是需要估算的给定时刻的个数,ht传入给定的时刻点,相应计算出的里程和速率应分别存储在hs和hv中。
裁判程序如下:裁判输入数据:20.0 1.00.0 1.00.0 0.050.0 0.2 0.5 0.8 1.030.0 0.5 1.0100.0 170.0 200.030.0 150.0 0.050.0 0.25 0.5 0.75 1.050.0 1.0 2.0 3.0 4.00.0 60.0 160.0 260.0 300.05.0 70.0 100.0 120.0 20.0100.5 1.0 1.5 2.0 2.5 3.0 3.5 3.8 3.95 4.0标准输出数据:0.0000 0.1040 0.5000 0.8960 1.00000.0000 0.9600 1.5000 0.9600 0.0000100.0000 127.9297 170.0000 195.9766 200.000030.0000 165.4688 150.0000 52.9688 0.000030.2222 60.0000 105.9303 160.0000 206.3438 260.0000 307.9764 305.7687 299.9796 300.000062.6024 70.0000 109.0488 100.0000 92.9745 120.0000 41.2374 -44.8421 -16.2783 20.0000#include<stdio.h>#define MAXN 5 /* 最大采样点个数 */#define MAXM 10 /* 最大估算点个数 */void Hermite_Interpolation( int N, double t[], double s[], double v[], int m, double ht[], double hs[], double hv[] ){double l[10],p[10],h1[10],h2[10],x,ll[10],pp[10];int kk;for(kk=0;kk<m;kk++){x=ht[kk];hs[kk]=0;hv[kk]=0;int i;for(i=0;i<N;i++){l[i]=1;ll[i]=1;int j;for(j=0;j<N;j++){if(i!=j){l[i]=l[i]*(x-t[j])/(t[i]-t[j]);}}p[i]=0;pp[i]=0;int k;for(k=0;k<N;k++){if(i!=k){p[i]=p[i]+l[i]/(x-t[k]);pp[i]=pp[i]+ll[i]/(t[i]-t[k]);}}h1[i]=(1-2*pp[i]*(x-t[i]))*l[i]*l[i];h2[i]=(x-t[i])*l[i]*l[i];hs[kk]=hs[kk]+s[i]*h1[i]+v[i]*h2[i];int kkk;for(kkk=0;kkk<N;kkk++){if(x==t[kkk])break;}if(x==t[kkk])hv[kk]=v[kkk];elsehv[kk]=hv[kk]+s[i]*(2*p[i]*l[i]-4*l[i]*p[i]*(x-t[i])*pp[i]-2*pp[i]*l[ i]*l[i])+v[i]*(l[i]*l[i]+2*l[i]*p[i]*(x-t[i]));}}}int main(){int N, m;double t[MAXN], s[MAXN], v[MAXN]; /* 用于构造的数据 */double ht[MAXM], hs[MAXM], hv[MAXM]; /* 用估算的数据 */int i;while ( scanf("%d", &N) != EOF ) {for ( i=0; i<N; i++ )scanf("%lf", &t[i]);for ( i=0; i<N; i++ )scanf("%lf", &s[i]);for ( i=0; i<N; i++ )scanf("%lf", &v[i]);scanf("%d", &m);for ( i=0; i<m; i++ )scanf("%lf", &ht[i]);Hermite_Interpolation( N, t, s, v, m, ht, hs, hv );for ( i=0; i<m; i++ )printf("%.4lf ", hs[i]);printf("\n");for ( i=0; i<m; i++ )printf("%.4lf ", hv[i]);printf("\n\n");}return 0; }。
1.3 Hermite 插值Hermite 插值也叫带指定微商值的插值,它要构造一个插值函数,不但在给定节点上取函数值,而且取已知微商值,使插值函数和被插函数的密和程度更好 。
01012()000()111()()1,,,(),'(),,()(),'(),,()(),'(),,()(0,1,2,,)n n m m m n n ni H f x n x x x x f x f x f x f x erm f x f x f x f x it f x m i n e +⋅⋅⋅=插值的一般提法如下给出函数在个互异节点上的函数值及若干导数值,设插值节点为。
给出其中是:正整数。
111ni i N n m N H x ==++-∑以上总共有个插值条件,要求构造不低于次插值函数()满足以上插值条件。
''001'02110'110140H x x H H x H H H ==-=-====求一个四次插值多项式(),使 时,(),(); 时,(),(),()例012121211,,()''()(0,1,2,,)21()()012'()'n i i i i n n i in ii Hermite n x x x y f x y f x i n n H x H x y i n H x y ++++===+=⎧=⎨=⎩插值中,最基本而重要的情形是只要求一阶导数的条件。
给出个互异节点上的函数值和导数值和构造不低于次插值多项式,要求满足插值条件,,,''12121233''331122112232111112,,1,21,2()()()'()'()12()1i i i i x x y y y y Hermite H x H x y i H x y i H x h x y h x y h x y h x y Hermite H x h x x x l x l x h x ==⎧⎨==⎩=+++'=--=-在节点和上已知和。
基于非规则Hermite型插值多项式的几种解法
马亮亮;田富鹏
【期刊名称】《陇东学院学报》
【年(卷),期】2010(021)002
【摘要】基于埃尔米特型插值多项式,针对比较复杂的非规则埃尔米特型插值多项式,给出了包括待定系数法、Lagrange插值法、基函数法、重差商法等几种解决此类插值多项式的方法.
【总页数】5页(P13-17)
【作者】马亮亮;田富鹏
【作者单位】西北民族大学,计信学院,甘肃,兰州,730030;西北民族大学,计信学院,甘肃,兰州,730030
【正文语种】中文
【中图分类】O212.4
【相关文献】
1.关于一个修正型的Hermite插值多项式 [J], 何甲兴
2.基于Hermite插值多项式的可验证多秘密共享方案 [J], 谭晓青;王治国
3.几种Hermite插值多项式存在唯一性的另一种368-04证明方法及推广的基函数构造方法 [J], 张引娣;封建湖
4.基于Hermite插值多项式的光伏MPPT改进算法的研究 [J], 罗驰;任一峰;安坤;李涛;张泽慧
5.带有(1-X^2)P_(n-1)′(X)零点的修正型Hermite插值多项式 [J], 王国明;张朝凤
因版权原因,仅展示原文概要,查看原文内容请购买。
非标准hermite插值二阶导数
我们要计算非标准Hermite插值的二阶导数。
首先,我们需要了解什么是非标准Hermite插值。
非标准Hermite插值是一种数学方法,用于通过给定的数据点来估计一个函数的值。
它与标准Hermite插值的主要区别在于,非标准Hermite插值允许我们为数据点指定导数值。
假设我们有一个函数f(x),并且我们知道在某些点x0, x1, ..., xn处的函数值和导数值。
非标准Hermite插值将使用这些信息来估计在其他点x上的函数值,同时保持与原始数据点的连续性和光滑性。
对于二阶导数的计算,我们需要使用Hermite插值的二阶导数公式。
但是,由于这是一个非标准插值,我们需要考虑给定的导数值的影响。
假设我们有一个数据点(xi, yi, di, dii),其中di是yi的导数,dii是yi的二阶导数。
那么,对于非标准Hermite插值的二阶导数,我们需要使用以下公式:
d'ii[y(xi)] = dii + (xi - xi) [d'i[y(xi)] - di] / (xi - xi)
其中,d'i[y(xi)]是y(xi)的一阶导数。
这个公式考虑了给定的二阶导数值和一阶导数值,使得插值结果在保持连续性和光滑性的同时,尽可能接近原始数据点的二阶导数值。
因此,对于非标准Hermite插值的二阶导数,我们需要使用上述公式来计算。
这个公式将确保插值结果在保持连续性和光滑性的同时,尽可能接近原始数据点的二阶导数值。