Hermite(埃尔米特)插值法 | 插值多项式+ 插值余项

本文深入探讨了Hermite插值法的基本原理,详细介绍了如何构建满足函数值及导数值相等条件的插值多项式。通过解析Hermite插值基函数的构造过程,展示了插值多项式的具体形式,并证明了插值多项式的唯一性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Lagrange插值法、Newton插值法、逐次插值法、分段插值法,只要求插值多项式 p n ( x ) p_n(x) pn(x)与被插值函数 f ( x ) f(x) f(x)在插值节点处的函数值相等即可,即 p n ( x i ) = f ( x i ) ( i = 0 , 1 , ⋯   , n ) p_n(x_i)=f(x_i)(i=0,1,\cdots,n) pn(xi)=f(xi)(i=0,1,,n)。但这种插值不能完全反映出被插值函数的性态。在许多实际问题中,不仅要求插值函数与被插值函数在节点处的函数值相同,而且还要求插值函数与被插值函数在某些节点处的导数值,甚至高阶导数值也相同。按照这种插值条件所进行的插值称为Hermite插值。其中,最常见的是要求一阶导数值相同的插值。下面就来导出其插值多项式。

1. Hermite插值多项式

假设已知函数 y = f ( x ) y=f(x) y=f(x)在插值节点 x i ( i = 0 , 1 , ⋯   , n ) x_i(i=0,1,\cdots,n) xi(i=0,1,,n)处的函数值为 y i = f ( x i ) y_i=f(x_i) yi=f(xi),一阶导数值为 m i = f ′ ( x i ) ( i = 0 , 1 , 2 , ⋯   , n ) m_i=f'(x_i)(i=0,1,2,\cdots,n) mi=f(xi)(i=0,1,2,,n),则 H e r m i t e Hermite Hermite插值多项式 H ( x ) H(x) H(x)满足:
{ H ( x i ) = y i , H ′ ( x i ) = m i , i = 0 , 1 , ⋯   , n (1) \begin{cases} H(x_i)=y_i , \\ H'(x_i)=m_i, \quad i=0,1,\cdots,n \end{cases} \tag{1} {H(xi)=yi,H(xi)=mi,i=0,1,,n(1)
其几何意义就是,要求 y = H ( x ) y=H(x) y=H(x)的图形与 y = f ( x ) y=f(x) y=f(x)的图形在这n+1个点处相切,因此 x 0 , x 1 , ⋯   , x n x_0,x_1,\cdots,x_n x0,x1,,xn称为二重节点。在(1)式中有 2 ( n + 1 ) 2(n+1) 2(n+1)个条件,因此可以确定一个次数不超过 2 n + 1 2n+1 2n+1次的插值多项式。仿照求Lagrange插值多项式的方法,设
H ( x ) = a 0 ( x ) y 0 + β 0 ( x ) m 0 + a 1 ( x ) y 1 + β 1 ( x ) m 1 + ⋯ + a n ( x ) y n + β n ( x ) m H(x)=a_0(x)y_0+\beta_0(x)m_0+a_1(x)y_1+\beta_1(x)m_1+\cdots+a_n(x)y_n+\beta_n(x)m H(x)=a0(x)y0+β0(x)m0+a1(x)y1+β1(x)m1++an(x)yn+βn(x)m

H ( x ) = ∑ i = 0 n ( a i ( x ) y i ) + β i ( x ) m i H(x)=\sum_{i=0}^n(a_i(x)y_i)+\beta_i(x)m_i H(x)=i=0n(ai(x)yi)+βi(x)mi
根据插值条件, a i ( x ) a_i(x) ai(x) β i ( x ) \beta_i(x) βi(x)必须分别满足:
{ a i ( x k ) = { 0 , k ≠ i 1 , k = i i , k = 0 , 1 , ⋯   , n a i ′ ( x k ) = 0 \begin{cases} a_i(x_k)=\begin{cases} 0,k\neq i \\ 1,k=i \quad i,k=0,1,\cdots,n\end{cases} \\ a_i'(x_k)=0 \end{cases} ai(xk)={0,k=i1,k=ii,k=0,1,,nai(xk)=0

{ β i ( x k ) = 0 β i ′ ( x k ) = { 0 , k ≠ i 1 , k = i , i , k = 0 , 1 , ⋯   , n \begin{cases} \beta_i(x_k) = 0\\ \beta_i'(x_k)=\begin{cases}0,k\neq i \\ 1,k=i, \quad i,k=0,1,\cdots,n \end{cases} \end{cases} βi(xk)=0βi(xk)={0,k=i1,k=i,i,k=0,1,,n
这样确定的 α i ( x ) \alpha_i(x) αi(x) β i ( x ) \beta_i(x) βi(x)称为Hermite插值基函数。显然,基函数 a i ( x ) a_i(x) ai(x) β i ( x ) \beta_i(x) βi(x)一旦确定下来, H e r m i t e Hermite Hermite插值多项式 H ( x ) H(x) H(x)就确定出来了。下面导出 a i ( x ) a_i(x) ai(x) β i ( x ) \beta_i(x) βi(x)的具体形式:

(1)先确定 β i ( x ) \beta_i(x) βi(x)


β i ( x k ) = β i ′ ( x k ) = 0 ( k ≠ i ) \beta_i(x_k)=\beta_i'(x_k)=0 \quad(k\neq i) βi(xk)=βi(xk)=0(k=i)
β i ( x i ) \beta_i(x_i) βi(xi) x k ( k ≠ i ) x_k(k\neq i) xk(k=i)为二重零点,又由
β i ( x i ) = 0 , β i ′ ( x i ) = 1 ≠ 0 \beta_i(x_i)=0, \quad \beta_i'(x_i)=1\neq 0 βi(xi)=0,βi(xi)=1=0
β i ( x ) \beta_i(x) βi(x) x i x_i xi为一重零点。由于 β i ( x ) \beta_i(x) βi(x)为次数不超过 2 n + 1 2n+1 2n+1的多项式,再根据Lagrange基函数 l i ( x ) l_i(x) li(x)的定义,可设
β i ( x ) = β ^ i × ( x − x i ) × l i 2 ( x ) , β ^ i 为 常 数 \beta_i(x)=\hat \beta_i \times(x-x_i)\times l_i^2(x), \quad \hat \beta_i为常数 βi(x)=β^i×(xxi)×li2(x),β^i
β i ′ ( x i ) = 1 \beta_i'(x_i)=1 βi(xi)=1,得 β ^ i = 1 \hat \beta_i=1 β^i=1,故有:
β i ( x ) = ( x − x i ) l i 2 ( x ) \beta_i(x)=(x-x_i)l_i^2(x) βi(x)=(xxi)li2(x)
(2)再确定 a i ( x ) a_i(x) ai(x)

同理,根据 a i ( x ) a_i(x) ai(x)的定义, a i ( x ) a_i(x) ai(x)含有因子 l i 2 ( x ) l_i^2(x) li2(x),故可令
a i ( x ) = ( a x + b ) × l 2 2 ( x ) a_i(x)=(ax+b)\times l_2^2(x) ai(x)=(ax+b)×l22(x)
其中,a,b为特定常数。于是由条件
{ a i ( x i ) = 1 a i ′ ( x i ) = 0 \begin{cases} a_i(x_i)=1 \\ a_i'(x_i)=0 \end{cases} {ai(xi)=1ai(xi)=0
可得出:
{ a x i + b = 1 a + 2 l i ′ ( x i ) = 0 \begin{cases} ax_i+b=1 \\ a + 2l_i'(x_i)=0 \end{cases} {axi+b=1a+2li(xi)=0
所以
{ a = − 2 l i ′ ( x i ) b = 1 + 2 x i l i ′ ( x i ) \begin{cases} a = -2l_i'(x_i) \\ b = 1+2x_il_i'(x_i) \end{cases} {a=2li(xi)b=1+2xili(xi)
用对数法对 l i ( x ) = ( x − x 0 ) ⋯ ( x − x l − 1 ) ( x − x l + 1 ) ⋯ ( x − x n ) ( x i − x 0 ) ⋯ ( x i − x i − 1 ) ( x i − x i + 1 ) ⋯ ( x i − x n ) l_i(x)=\frac{(x-x_0)\cdots(x-x_{l-1})(x-x_{l+1})\cdots(x-x_n)}{(x_i-x_0)\cdots(x_i-x_{i-1})(x_i-x_{i+1})\cdots(x_i-x_n)} li(x)=(xix0)(xixi1)(xixi+1)(xixn)(xx0)(xxl1)(xxl+1)(xxn)求导,得 l i ′ ( x i ) = ∑ k = 0 , k ≠ i n 1 x i − x k l_i'(x_i)=\sum_{k=0,k\neq i}^n\frac{1}{x_i-x_k} li(xi)=k=0,k=inxixk1,故
a i ( x ) = ( 1 − 2 ( x − x i ) ∑ k = 0 , k ≠ 1 n 1 x i − x k ) l i 2 ( x ) a_i(x)=(1-2(x-x_i)\sum_{k=0,k\neq 1}^n\frac{1}{x_i-x_k})l_i^2(x) ai(x)=(12(xxi)k=0,k=1nxixk1)li2(x)
即得到Hermite插值多项式为:
H ( x ) = ∑ i = 0 n { y i + ( x i − x ) [ ( 2 ∑ k = 0 , k ≠ i n 1 x i − x k ) y i − m i ] } × l i 2 ( x ) H(x)=\sum_{i=0}^n\{y_i+(x_i-x)[(2\sum_{k=0,k\neq i}^n\frac{1}{x_i-x_k})y_i-m_i]\}\times l_i^2(x) H(x)=i=0n{yi+(xix)[(2k=0,k=inxixk1)yimi]}×li2(x)
(3)最后证明Hermit插值多项式惟一性

假设另有一个不超过 2 n + 1 2n+1 2n+1次的多项式 h ( x ) h(x) h(x)并满足Hermite插值条件,设
φ ( x ) = H ( x ) − h ( x ) \varphi(x)=H(x)-h(x) φ(x)=H(x)h(x)
则有
φ ( x i ) = H ( x i ) − h ( x i ) = f ( x i ) − f ( x i ) = 0 , ( i = 0 , 1 , ⋯   , n ) \varphi(x_i)=H(x_i)-h(x_i)=f(x_i)-f(x_i)=0, \quad(i=0,1,\cdots,n) φ(xi)=H(xi)h(xi)=f(xi)f(xi)=0,(i=0,1,,n)

φ ′ ( x i ) = H ′ ( x i ) − h ′ ( x i ) = m i − m i = 0 ( i = 0 , 1 , ⋯   , n ) \varphi'(x_i)=H'(x_i)-h'(x_i)=m_i-m_i=0 \quad(i=0,1,\cdots,n) φ(xi)=H(xi)h(xi)=mimi=0(i=0,1,,n)

于是 φ ( x ) \varphi(x) φ(x)有2n+2个零点,但是由于 φ ( x ) \varphi(x) φ(x)是次数不超过 2 n + 1 2n+1 2n+1的多项式,所以 φ ( x ) ≡ 0 \varphi(x) \equiv 0 φ(x)0,从而有:
H ( x ) = h ( x ) H(x)=h(x) H(x)=h(x)

2. Hermite插值余项

f ( x ) f(x) f(x)在插值区间上有2n+2阶导数,令 R ( x ) = f ( x ) − H ( x ) R(x)=f(x)-H(x) R(x)=f(x)H(x),由 H ( x ) H(x) H(x)的定义知, x i ( i = 0 , 1 , ⋯   , n ) x_i(i=0,1,\cdots,n) xi(i=0,1,,n) R ( x ) R(x) R(x)的二重零点,因此 R ( x ) R(x) R(x)含有 ( x − x i ) (x-x_i) (xxi)因子,故可设
R ( x ) = k ( x ) ∏ 2 ( x ) = k ( x ) ⋅ [ ( x − x 0 ) ( x − x 1 ) ⋯ ( x − x n ) ] 2 R(x)=k(x)\prod^2(x)=k(x)·[(x-x_0)(x-x_1)\cdots(x-x_n)]^2 R(x)=k(x)2(x)=k(x)[(xx0)(xx1)(xxn)]2
作辅助函数
φ ( t ) = f ( t ) − H ( t ) − k ( x ) ∏ 2 ( t ) \varphi(t)=f(t)-H(t)-k(x)\prod^2(t) φ(t)=f(t)H(t)k(x)2(t)
则有
φ ( x i ) = 0 , φ ′ ( x i ) = 0 ( i = 0 , 1 , ⋯   , n ) \varphi(x_i)=0, \quad \varphi'(x_i)=0 \quad(i=0,1,\cdots,n) φ(xi)=0,φ(xi)=0(i=0,1,,n)

φ ( x ) = 0 \varphi(x)=0 φ(x)=0

所以, φ ( t ) \varphi(t) φ(t)至少有n+1个二重零点 x i ( i = 0 , 1 , ⋯   , n ) x_i(i=0,1,\cdots,n) xi(i=0,1,,n)和一个单零点x。按照Rolle定理, φ ′ ( t ) \varphi '(t) φ(t) x 0 , x 1 , ⋯   , x n , x x_0,x_1,\cdots,x_n,x x0,x1,,xn,x每相邻两个零点之间各有一个零点,且 x 0 , x 1 , ⋯   , x n x_0,x_1,\cdots,x_n x0,x1,,xn仍是 φ ′ ( t ) \varphi'(t) φ(t)的零点。所以 φ ′ ( t ) \varphi'(t) φ(t)至少有2n+2个零点。同理 φ ′ ′ ( t ) \varphi''(t) φ(t)在插值区间内至少有2n+1个零点,依次类推, φ ( 2 n + 2 ) ( t ) \varphi^{(2n+2)}(t) φ(2n+2)(t)在插值区间内至少有一个零点 ξ \xi ξ,即:
φ ( 2 n + 2 ) ( ξ ) = f ( 2 n + 2 ) ( ξ ) − k ( x ) ⋅ ( 2 n + 2 ) ! = 0 \varphi^{(2n+2)}(\xi)=f^{(2n+2)}(\xi)-k(x)·(2n+2)!=0 φ(2n+2)(ξ)=f(2n+2)(ξ)k(x)(2n+2)!=0
所以

由此得余项为:
R ( x ) = f ( 2 n + 2 ) ( ξ ) ( 2 n + 2 ) ! ∏ 2 ( 2 ) 其 中 ξ 依 赖 于 变 量 x R(x)=\frac{f^{(2n+2)}(\xi)}{(2n+2)!}\prod^2(2) \quad 其中\xi依赖于变量x R(x)=(2n+2)!f(2n+2)(ξ)2(2)ξx

埃米尔特插值是一种插值算法,用于根据已知的函数点生成新的值。在Python中,可以使用SciPy库中的PchipInterpolator函数来实现分段三次埃米尔特插值。首先,需要导入必要的库和数据,然后使用PchipInterpolator函数创建插值函数。接下来,可以使用插值函数来计算给定新的x值对应的y值。最后,使用matplotlib库来绘制插值结果的图形。下面是一个示例代码: ```python import numpy as np import pandas as pd import matplotlib.pyplot as plt import scipy.interpolate # 导入数据 data = pd.read_excel('data.xlsx') y = np.array(data)\[:,1\] x = np.linspace(2009,2018,10) x_new = np.array(\[2019,2020,2021\]) # 创建插值函数 f2 = scipy.interpolate.PchipInterpolator(x,y) # 计算插值结果 y_new = f2(x_new) # 绘制图形 plt.plot(x,y,color='black',marker='o',label='样本点') plt.plot(x_new,y_new,'b-',marker='x',label='分段三次埃米尔特') plt.xticks(range(2009,2022,1)) plt.legend() plt.show() ``` 这段代码会根据给定的样本点数据,使用分段三次埃米尔特插值方法生成新的数据点,并将结果绘制成图形。 #### 引用[.reference_title] - *1* *3* [插值算法的Python实现方式](https://blog.csdn.net/qq_22841119/article/details/122953561)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【数学建模笔记】【第三讲】拉格朗日插值法,牛顿插值法,分段三次埃尔米特插值法及其MATLAB实践](https://blog.csdn.net/Gorege__Hu/article/details/128811254)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值