Hermite插值函数

合集下载

工程数学(12)Hermite插值

工程数学(12)Hermite插值
2n
共2n 2个方程,可求出2n 2个系数a0 , a1 ,..., a2n , a2n1 .
工程数学
工程数学
Hermite插值多项式的构造
( 2) Lagrange型插值基函数法 设Hermite插值多项式为 H 2 n1 ( x ) hi ( x ) yi hi ( x ) y 'i
hi ( x )应满足条件: (1) hi ( x )应是 2n 1次多项式; i j 1 (2) hi ( x j ) ij i j 0 h 'i ( x j ) 0 ( i,j 0, 1, 2, ,n) hi ( x )应满足条件: (1)hi ( x )应是 2n 1次多项式; i j 1 (2)h 'i ( x j ) ij i j 0 hi ( x j ) 0 ( i,j 0, 1, 2, ,n )

hi ( x) (cx d )l 2i ( x)
由条件(2)可列出方程组 2 hi ( xi ) (cxi d )li ( xi ) 0 2 ' h 'i ( xi ) cli ( xi ) 2(cxi d )li ( xi )l i ( xi ) 1
, H ( x ) h ( x ) y0 h ( x ) y1 h ( x ) y2 h ( x ) y h ( x ) y1 ' 4 ' 0 ' 1 ' 2 , 0 , 0 , 1
h ( x0 ) 0, h ( x0 ) 0, h ( x0 ) 0, h ( x0 ) 1, h ( x0 ) 0
Hermite插值中,最基本而重要的情形是只要求 一阶导数的条件。给出n 1个互异节点x0 , x1 , xn上 的函数值和导数值 yi f ( xi )和y 'i f '( xi ) ( i 0,1, 2, , n) 构造不低于2n 1次插值多项式H 2 n 1 ( x ),要求满足 插值条件 H 2 n 1 ( x i ) yi i 0, 1, 2, n H '2 n1 ( xi ) y 'i

函数近似计算的插值法Hermite插值法PPT课件

函数近似计算的插值法Hermite插值法PPT课件

x x0 x1 x0
2
将以上结果代入
8
H3( x) f00( x) f11( x) f00( x) f11( x) 得两个节点的三次Hermite插值公式
H3( x) f00( x) f11( x) f00( x) f11( x)
f0 (1 2l1( x)) l02( x) f1(1 2l0( x)) l12( x)
x0 x1
以上分析都能成立吗?
当f (4) (x)在[x0 , x1]上存在时, 上述余项公式成立
12
Hermite插值法定理1 满足插值条件:
Hn1( xi ) Hn1( xi )
yi yi
f f
( xi ) , ( xi )
i 0,1,
,n
Hermite值问题的解存在且唯一.
Hermite插值法定理2
P( xi ) f ( xi ) fi P( xi ) f (xi ) fi P( xi ) f ( xi ) fi
i 0,1,, n --------(2)
P(m) ( xi )
f (m) ( xi )
f (m) i
3
定义1. 称满足(1)或(2)式的插值问题为Hermite插值, 称满足(1)或(2)式的插值多项式P(x)为Hermite插值多项 式,记为 Hk (,x) 为k多项式次数.
f0( x x0 ) l02 ( x) f1( x x1) l12 ( x)
f0 1 2
x x0 x1 x0
x x1 x0 x1
2
f1
1
2
x x0
x1 x1
x x1
x0 x0
2
f0 x
x0
x x0

5.4 三次Hermite插值

5.4 三次Hermite插值
P( xi ) f ( xi ) fi P( xi ) f ( xi ) fi P( xi ) f ( xi ) fi
P ( m ) ( xi ) f ( m ) ( xi ) f i ( m )
i 0 ,1, , n
定义. 称满足(1)或(2)式的插值问题为Hermite插值, 称满足(1)或(2)式的插值多项式P(x)为Hermite插值多项式, 记为 H k ( x) ,k为多项式次数.
2
由于0 ( x0 ) 0 ( x1 ) 0( x1 ) 0, 故 0 ( x) 含有 ( x x0 )( x x1 ) 因子。可设
0 ( x) c( x x0 )( x x1 )2
2
其中c为待定系数。
1 . 由 0( x0 ) 1, 可得 c 2 ( x0 x1 )
2 2
x x0 x x 0 1
2
2
2 H 3 ( x) 21 2( x 1) x 2 2 31 2( x 2) x 1
x 2 x 12
3 x 3 13x 2 17x 9
f (1.5) H 3 (1.5) 2.625 f (1.7 ) H 3 (1.7 ) 2.931
2
三次Hermite插值多项式 H3 ( x) 的表达式为
H3 ( x) y00 ( x) y11( x) m00 ( x) m11( x)
可以证明,其余项为
f (4) ( ) R3 ( x ) f ( x ) H 3 ( x ) ( x x0 ) 2 ( x x1 ) 2 , 4! 其中 介于 x0 , x1 之间。
x x1 x x0 1 ( x) 1 2 x x x x 0 1 1 0

埃尔米特插值

埃尔米特插值

0,则可以设:
0(x) (x 1)(ax b)
将:
0 (0) 1
0
(0)
0
带入0(x) (x 1)(ax b),则:
a 1 b 1
则:0 (x) 1 x2
同理: 1( x)为二次项式
又:
1(0) 0
1
(0)
0
则:x 0为1(x)的二重根
则:1(x) cx2 又:1(1) 1
xi
01
f(xi) 0
1
f (xi )
0
1
解: 本题利用承袭性的思想 首先利用:
xi
0
1
f(xi) 0
1
求出: L1(x)
L1 ( x)
x x1 x0 x1
y0
x x0 x1 x0
y1
x
增加:
xi 0
yi 0
求:H2 ( x), 其中H2 ( x)满足:
xi
01
f(xi) 0
1
f (xi )
则:c 1
则:1(x) x2 同理:0 (x) x(1 x)
插值余项为:
R(x)
f (x) H2(x)
f
(
3!
)
(
x
x0
)2
(
x
x1 )
仿Lagrange 或 Newton 证明
情形2. 已知: 4个条件
xi
x0 x1
yi = f(xi) y0 y1
yi f (xi ) y0 y1
一、 Hermite插值多项式的定义
插值条件中除函数值外, 还有导数值(回顾 Taylor展开式, 是某点的导数值), 如
已知: 2n+2个条件

hermite插值

hermite插值

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_插值法

Hermite_插值法

, x0]
lim
xi x0
f [x0, x1,
,
xn ]
1 n!
f
(n) ( x0 )
重节点Newton插值
在 Newton 插值公式中,令 xi x0 , i = 1, … , n, 则
Nn( x) f ( x0 ) f [ x0 , x1]( x x0 )
f ( x0 ) f '( x0 )( x x0 )
( x1 x0 )( x1 x2 )
三点三次Hermite 插值
余项公式
由于 x0 , x1 , x2 是 R(x) 的零点,且 x1 是二重零点,故可设 R( x) f ( x) P( x) k( x)( x x0 )( x x1 )2 ( x x2 )
与 Lagrange 插值余项公式的推导过程类似,可得
x
x0
)
x x0
x1 x1
2
1(
x)
(
x
x1
)
x x1
x0 x0
两点三次Hermite 插值
满足插值条件
P(x0) = f(x0) = y0,P’(x0) = f’(x0) = m0 P(x1) = f(x1) = y1,P’(x1) = f’(x1) = m1
的三次 Hermite 插值多项式为
三点三次Hermite 插值
三点三次 Hermite 插值
插值节点:x0 , x1 , x2
插值条件:P(xi) = f(xi),i = 0, 1, 2,P’(x1) = f’(x1) 设 P( x) f ( x0 ) f [x0, x1]( x x0 )
f [ x0, x1, x2]( x x0 )( x x1) A( x x0 )( x x1 )( x x2 ) 将 P’(x1) = f’(x1) 代入可得 A f '( x1 ) f [ x0 , x1] f [ x0, x1, x2]( x1 x0 )

hermite插值公式

hermite插值公式

Hermite插值公式是一种根据给定数据点的函数值和梯度求出插值函数的方法,它是高斯技术的一种应用。

Hermite插值公式可以用来拟合给定的数据点并获得更精确的拟合结果。

Hermite插值公式是经典的插值公式,它是由法国数学家Ch.Hermite提出的。

这种插值方法是以一阶导数作为边界条件,以满足多项式函数曲线与给定数据点之间的最小差别为目标。

Hermite插值公式可以用于任何有限阶次多项式拟合,它可以得到更平滑的曲线,更准确的拟合结果,而且可以很容易地计算出曲线上的极值点和拐点。

此外,Hermite插值公式还可以用来计算给定数据点的拟合曲线,它可以更准确地计算出曲线的极值点和拐点,而且可以得到更平滑的曲线。

因此,Hermite插值公式是一种非常有效的插值方法,它可以有效地拟合数据点,得到更准确的拟合结果,从而提高数据处理的准确性。

在第一个插值点上的hermite三点插指公式

在第一个插值点上的hermite三点插指公式

在第一个插值点上的hermite三点插
指公式
在第一个插值点上的hermite三点插指公式
Hermite三点插值法是一种采用三个插值点来求解函数f(x)在给定范围内的曲
线图的插值算法,通常是用来拟合y=f(x)在离散中提供的三个点的插值函数,在
第一个插值点的提出的这种特定的三点插值模型,即对第一个插值点位置
(x0,f(x0)),其中x0为插值点位置,f(x0)为其处的函数值,用的三点模型可写为:
f(x)=f(x0)+f'(x0)(x-x0)+[f''(x0)/2](x-x0)^2
即,把第一个插值点位置(x0,f(x0))处的点代入,可以得到其相应的函数拟合
多项式,当然,并不是每一个函数拟合多项式都能满足实际需求,这就需要注意函数拟合多项式的拟合度,可以在参数估计和函数估计的时候,使用一定的误差来估计函数值,从而获得函数拟合度较好的模型。

此外,在使用Hermite三点插值法时,需要注意三个点之间的位置关系,三个
点位于x0,x1,x2等位置,在确定每个点的位置时应该考虑到它们之间的距离,
一般来说,三个点之间的间距应保持一定,以使插值函数尽可能精确的反映函数的实际变化。

因此,要使得Hermite三点插值法能取得较好的效果,在确定三个插值点的位
置的时候要综合考虑它们之间的位置关系,以及在第一个插值点的估计时要注意拟合度,这样就能很好的进行三点插值,从而得到准确的结果。

插值法-Hermite插值专业知识

插值法-Hermite插值专业知识

共有m+1个条件
其中 xi (i 0,1,, n) 互异,mi为正整数,记 mi m 1,
谋求m次多项式P(x)使满足插值条件:
i0
P(k)( xi ) f (k)( xi ), (i 0,1,, n;k 0,1,, mi 1) (5.1)
埃尔米特Hermite插值问题
我们只讨论 P( xi ) f ( xi ), P( xi ) f ( xi ) 旳情形。
(5.5)
其中
j
(
x),
j
(
j0
x),( j
0,1,,
n)为Hermite插值基函数,即
j(x)
(1
2( x
n
xj)
i0
xj
1
xi
)l
2 j
(
x
);
i j
j
(
x)
(
x
x
j
)l
2 j
(
x);
n
l
j
(x)
n
i0 i j
x xi x j xi
实际上,有 H 2n1 ( xi ) ( j ( xi ) yi j ( xi ) y' j ) yi
j
(
x)
(1
c(
x
x
j
))
(((xxxxx000))222((xx xx11))222(((xxxxxjjj11))22((xx xxjj11))22((xx xxnn))22
((xxjj
xx00))22((xxjj
xx11))22((xxjj
xxjj11))22((xx
jj
xx
))22
jj11

第五节Hermite插值

第五节Hermite插值

多项式, f(x)在含xi的区间[a,b]上2n+2阶连续可微, 则对任意
的x[a,b],总存在 (a,b),使得
f ( 2 n 2) ( ) 2 R( x) f ( x) H 2 n 1 ( x) ( x ) (5.6) (2n 2)!
6 例 求满足 P( x j ) f ( x j )
'
( j 0,1,, n)
与前面讨论类似,可证明满足条件的Hermite 插值多项式 是存在唯一的,其余项为
10
m f ( m n 2) ( ) R( x) f ( x) H ( x) n1 ( x) ( x x jk ) (m n 2)! k 0
例:按下表求Hermite 插值多项式
( j 0,1,2) 及 P' ( x j ) f ' ( x j )
的插值多项式及其余项表达式。
由给定条件,可确定次数不超过3 的插值多项式。
由于此多项式通过点
( x0 , f ( x0 )),
故其形式为
( x1 , f ( x1 )) 及 ( x2 , f ( x2 ))
P( x) f ( x0 ) f [ x0 , x1 ]( x x0 )
n 2 i n
(5.5)
H 2 n 1 ( x) [1 2( x xi )li ( xi )]l ( x) yi ( x xi )li2 ( x) yi
i 0 i 0
{[1 2( x xi )li ( xi )] yi ( x xi ) yi}li2 ( x)
f [ x0 , x1 , x2 ]( x x0 )( x x2 )
A( x x0 )( x x1 )( x x2 )

Hermite插值PPT

Hermite插值PPT

j
(x)
(x
x
j
)l
2 j
(x),(
j
0,1,,n)
称 2 n + j (x1为), j (次x),( j 多 0,1,项, n) 式
Hermite插值的基函数 满足插值条件
H H
2 n1
2 n1
( (
xi xi
) )
yi yi
(i 0,1,,n)
的2n+1次多项式:
n
H2n1( x) ( j ( x) y j j (x) y' j ) j0
(k 0,1,, n)
的2n+1次多项式 j (x)( j 0,1,,n)
显然, x0, x1, …,xj-1,xj+1,…,xn为 j (x) 的二重零 点且 j ( x j ) 1 于是
j (x) (c(x x j ) 1)
(
(x x0 )2 (x x j x0 )2 ( x j
由条件
H
3
(2)得:3 k=2,
所以
H3(x) 2x3 9x2 15x 6 此法实为待定系数法.
解法2 造重结点的差商表
y(xi ,
xi )
lim
x0
y( xi
x) x
y(xi )
y( xi )
xi yi y.. y... y....
1 2 2 2 4 3 1 2 2 4 8 5 3 12
由Newton插值公式得:
从而可得y=5,所以应得的x值为
x (5) p(5) 2.3123
说明:反插值法还可用于方程 f(x)=0 的近似求根。 对函数y=f(x)进行反插值,求 y=0 所对应的 x 值, 即为方程 f(x)=0的近似根。

hermite三点插指公式的插值基法

hermite三点插指公式的插值基法

hermite三点插指公式的插值基法hermite三点插入法的插值基法概述Hermite三点插入法是一种常用的插值方法,它使用三点来构造插值变换,这三点的x坐标满足X_0 <= X_1 < X_2,插值变换的控制点是(X_0,Y_0)、(X_1,Y_1)和(X_2,Y_2),而且这三点之间的平均斜率值也是已知的。

根据这三点的信息,可以构造出插值变换的具体形式,从而可以用于插值计算。

原理Hermite三点插入法实际上是基于Hermite多项式插值的,要构造出插值变换的具体形式,需要同时考虑到给定的两个控制点和满足Hermite多项式条件的两个切线斜率,具体构造的步骤如下:1)首先,建立插值函数:F(x)=a_0+a_1(x-x_0)+a_2(x-x_0)(x-x_1)+a_3(x-x_0)(x-x_1)(x-x _2)2)确定a_0,a_1,a_2,a_3的值,这是满足Hermite多项式条件的比较核心的步骤,有4个未知量,3个方程:F(x_0)=y_0 , F(x_1)=y_1 , F(x_2)=y_2另外两个方程是:F'(x_0)=(y_1-y_0)/(x_1-x_0) ,F'(x_2)=(y_2-y_1)/(x_2-x_1)3)使用求解某个系数的公式进行求解,求得四个系数:a_0=y_0a_1=(y_1-y_0)/(x_1-x_0)-(x_2-x_0)(y_2-y_0)/(x_2-x_1)(x_1-x_ 0)a_2=(x_2-x_1)(y_2-y_0)/(x_2-x_1)(x_1-x_0)a_3=(x_2-x_1)(x_2-x_0)(y_2-y_1)/(x_2-x_1)(x_1-x_0) 应用Hermite三点插入法可以用于插值计算,在计算机图形学中它也是一种常用的绘图方法。

一般来说,它可以用于函数图像的渲染、曲线的插值、多维函数的插值等方面。

它可以提高函数图像的平滑度,使图像看起来更加美观,还可以减少绘图的复杂度,在某些情况下可以提高绘图效率。

埃尔米特(Hermite)插值

埃尔米特(Hermite)插值

i0
i0
i0
n
H 2n1(x) i (x) y i (x) y ´
i0
H 2n1(x j )
n
i(x j ) f (x j )
n
i (x j ) f (x j )
n
i(x j ) f (x j )
i0
i0
i0
n
n
i (x j ) f (x j ) 0 0 ij f (x j ) 0 f (x j )
j0
x
j
)l
2 j
(
x)
f
(x j )
H2n+1(x)为满足条件 H (xi ) f (xi ), H (xi ) f (xi ) (i 0,1,,n) 的2n+1次Hermite插值多项式。
定理5.3 满足插值条件
H (xi ) f (xi ), H (xi ) f (xi ) (i 0,1,, n)
定理的证明可仿照Lagrange插值余项的证明方 法请同学们自行证明
实际中使用最广泛的是三次Hermite插值多项式,即
n=1的情况
1
1
H3 (x) j (x) f (x j ) j (x) f (x j )
j0
j0
0
Hale Waihona Puke (x)(1
2
x x0 x0 x1
)(
x x0
x1 x1
)
2
1
上式给出了2n+2个条件,可惟一确定一个次数不超过 2n+1的多项式H2n+1(x),采用类似于求Lagrange插值多 项式的基函数方法求埃尔米特(Hermite)插值多项式 H2n+1(x)

hermite插值法原理

hermite插值法原理

Hermite插值法是一种用于构造多项式插值函数的方法,它可以通过给定的数据点和导数值来构造一个满足这些条件的插值多项式。

Hermite插值法的原理可以分为以下几个步骤:
1. 给定一组数据点和对应的函数值,以及这些数据点处的导数值。

2. 构造一个基函数集合,这些基函数是一组满足插值条件的函数。

常用的基函数是Hermite基函数,它是一组多项式函数。

3. 根据给定的数据点和导数值,利用基函数集合构造插值多项式。

这可以通过求解一个线性方程组来实现,其中方程组的未知数是插值多项式的系数。

4. 得到插值多项式后,可以使用它来估计在其他点上的函数值。

Hermite插值法的优点是可以通过给定的导数值来更好地逼近原函数的特性,尤其在数据点附近的插值效果更好。

然而,
它的缺点是在数据点之间的插值效果可能不够理想,因为它只是通过给定的数据点和导数值来构造插值多项式,而没有考虑其他可能的信息。

Hermite插值函数

Hermite插值函数

数值分析实验报告任课教师:马季骕班级:11级运算机科学与技术1实验目的及要求2程序的源代码3实验操作4实验结果及分析1实验目的及要求学会Hermite插值法,并应用该算法于实际问题.(1)给定函数y=f(x)在n各不同的插值节点xi(i=1,…,n)的函数值yi=f(xi) (i=1,…,n),用厄米特(Hermite)插值多项式求函数在x初的函数值y。

(2)Hermite插值多项式:(4)若是有错,修改直至运行成功,查看运行结果;(5)依照所求函数,画出图形。

(6)查看原函数的图形与逼近函数图形的近似程度。

2 程序的源代码." menu item to system menu.ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;(IDS_ABOUTBOX);if (!()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}The framework does this automaticallyFor MFC applications using the document/view model,void CLDlg::OnPaint(){if (IsIconic()){CPaintDC dc(this); HCURSOR CLDlg::OnQueryDragIcon(){return (HCURSOR) m_hIcon;}void CLDlg::OnOK(){int x00=225,y00=225,i,j;double x;CDC *pDC=GetDC();pDC->SetMapMode(MM_LOMETRIC);pDC->SetViewportOrg(x00,y00);//画坐标轴与原函数for(i=-650; i<=650; i++){pDC->SetPixel(i,0,RGB(0,0,0));pDC->SetPixel(0,i,RGB(0,0,0));}for(x=-1; x<=1; x+={double j=(1+25*x*x);pDC->SetPixel(x*500,j,RGB(255,0,0));}}void CLDlg::OnLargri(){int x00=225,y00=225,i,j;double x;CDC *pDC=GetDC();pDC->SetMapMode(MM_LOMETRIC);pDC->SetViewportOrg(x00,y00);//画坐标轴for(i=-650; i<=650; i++){pDC->SetPixel(i,0,RGB(0,0,0));pDC->SetPixel(0,i,RGB(0,0,0));}double yx[]={-1,,,,,0,,,,,1};// 拉格朗日差值的函数double yy[12],lx[12],ly[12];double l_fenzi[12],l_fenmu[12];double l_x,l_y;for(i=0; i<=10; i++){yy[i]=(1+25*yx[i]*yx[i]);}for(i=0; i<=10; i++){l_fenmu[i]=;for(j=0; j<=10; j++){if(i!=j)l_fenmu[i]=l_fenmu[i]*(yx[i]-yx[j]);}}double qq,pp;for(qq=-1; qq<=1; qq+={for(i=0; i<=10; i++){l_fenzi[i]=;for(j=0; j<=10; j++){if(i!=j)l_fenzi[i]=l_fenzi[i]*(qq-yx[j]);}}pp=0;for(i=0; i<=11; i++){pp=pp+(1+25*yx[i]*yx[i])*l_fenzi[i]/l_fenmu[i];}pDC->SetPixel(qq*500,pp*390+5,RGB(150,255,0));}}void CLDlg::OnButton2(){int x00=225,y00=225,i,j;double x;CDC *pDC=GetDC();pDC->SetMapMode(MM_LOMETRIC);pDC->SetViewportOrg(x00,y00);//画坐标轴与原函数for(i=-650; i<=650; i++){pDC->SetPixel(i,0,RGB(0,0,0));pDC->SetPixel(0,i,RGB(0,0,0));}double yx[]={-1,,,,,0,,,,,1};double yy[14];for(i=0; i<=10; i++){yy[i]=(1+25*yx[i]*yx[i]);}// 线性分段差值的图像CPen pen;CPen*oldpen;(PS_SOLID,5,RGB(0,0,0));oldpen=pDC->SelectObject(&pen);for(i=0; i<10; i++){pDC->MoveTo(yx[i]*480,yy[i]*400);pDC->LineTo(yx[i+1]*480,yy[i+1]*400);}}void CLDlg::OnHermite(){int x00=225,y00=225,i,j;double x;CDC *pDC=GetDC();pDC->SetMapMode(MM_LOMETRIC);pDC->SetViewportOrg(x00,y00);//画坐标轴与原函数for(i=-650; i<=650; i++){pDC->SetPixel(i,0,RGB(0,0,0));pDC->SetPixel(0,i,RGB(0,0,0));}double yx[]={-1,,,,,0,,,,,1};double yy[12];for(i=0; i<=10; i++){yy[i]=(1+25*yx[i]*yx[i]);}//分段三次Hermite差值的函数double x0,x1,yd1,yd0,y1,y0;for(i=0; i<10; i++){x0=yx[i],x1=yx[i+1];y0=(1+25*x0*x0);y1=(1+25*x1*x1);yd0=-(50*x0)*((1+25*x0*x0)*(1+25*x0*x0));yd1=-(50*x1)*((1+25*x1*x1)*(1+25*x1*x1));for(double qq=x0; qq<x1; qq+={double pp= y0*(1+2*(qq-x0)/(x1-x0)) * (qq-x1)/(x0-x1) * (qq-x1)/(x0-x1)+y1*(1+2*(qq-x1)/(x0-x1)) * (qq-x0)/(x1-x0) * (qq-x0)/(x1-x0)+yd0*(qq-x0) * (qq-x1)/(x0-x1) * (qq-x1)/(x0-x1)+yd1*(qq-x1) * (qq-x0)/(x1-x0) * (qq-x0)/(x1-x0);pDC->SetPixel(qq*500,pp*400,RGB(0,255,255));}} }3程序操作算法分析:1. 分段三次Hermit 插值的算法思想:分段三次Hermit 插值的做法是在每一个小区间上作三次Hermit 插值,因此在每一个插值节点上都需要构造两个插值基函数)(),(x H x h i i ,然后再作它们的线性组合。

Hermite插值法

Hermite插值法
′ ′ R3 ( xi ) = f ′( xi ) − H 3 ( xi ) = 0
i = 0 ,1
x0 , x1均为R3 ( x )的二重零点,因此可设
R3 ( x ) = K ( x )( x − x0 )2 ( x − x1 )2
其中K (x )待定
10
构造辅助函数
ϕ (t ) = f (t ) − H 3 (t ) − K ( x )(t − x0 )2 (t − x1 )2
求一个次数不超过2n+1次的多项式H(x)使 求一个次数不超过2n+1次的多项式H(x)使 2n+1次的多项式H(x)
H ( xi ) = f ( xi ) = yi H ′( xi ) = f ′( xi ) = yi′
i = 0 ,1,L , n i = 0 ,1,L , n
这种带有导 数的多项式 问题, 插值 问题, 称为 Hermite插 Hermite插 值问题。 值问题。 1
′ ′ H 3 ( x) = y0α 0 ( x) + y1α1 ( x) + y0 β 0 ( x) + y1β1 ( x)
线性插值基函数代入定理1.5 将Lagrange线性插值基函数代入定理 线性插值基函数代入定理 中的基函数求得三次Hermite插值的基 中的基函数求得三次 插值的基 函数! 函数
x − x1 l0 ( x) = x0 − x1 x − x0 l1 ( x) = x1 − x0
基函数具有 什么表达式? 什么表达式?
4
x − x0 x − x1 α 0 ( x) = 1 + 2 x1 − x0 x0 − x1
2
x − x1 x − x0 α1 ( x ) = 1 + 2 x0 − x1 x1 − x0

Hermite插值

Hermite插值

第五章 函数近似计算(插值问题)的插值方法5.4 Hermite 插值 1.带导数值的提法如果不仅已知插值节点处的函数值,而且还掌握插值节点处的导数值(1阶甚至高阶);或者说,不仅要求在节点处插值多项式与被插值函数的值相等(Lagrange 条件),而且还要求相应阶的导数值也要相等,这就是带导数插值,也称为Hermite(埃尔米特)插值。

从几何上看,Hermite 插值意味着插值函数不仅要过被插函数的已知点,而且在这些点上,两者还要“相切”(即导数值相同),可见这种插值函数与被插函数的“密切”程度比Lagrange 插值的情况更好,因此,Herimite 插值也称为密切插值。

下面只讨论1阶导数的情形。

2.Hermite 插值问题及插值公式 已知函数f在],[b a 上1+n 上互异节点],[b a x i ∈的函数值)(i i x f f =和1阶导数值),,1,0)((''n i x f f i i ==,或记为已知离散数据),,1,0)(',,(n i f f x i i i = (5.4.1)求作一个次数尽可能低的多项式)(x H ,满足插值条件),,1,0(')(')(n i f x H f x H iii =⎩⎨⎧== (5.4.2) 这样的多项式)(x H 就称为Hermite 插值多项式。

注意这里有22+n 个插值条件。

故有下述定理。

定理 5.4.1 对已知数据 (5.4.1)存在惟一的次数12+≤n 的多项式1212)(++∈n n P x H 满足插值条件),,1,0(')(')(1212n i f x H f x H in ii n =⎩⎨⎧==++ (5.4.3)这里,也仿照Lagrange 插值多项式的做法,用基函数的方法求插值多项式)(12x H n +。

如果能够由已知插值节点),,1,0(n i x i =作出22+n 个12+n 次插值基函数 )(x i α,)(x i β ),,1,0(n i =它们具有下列性质:⎩⎨⎧==01)(ij j i x δαji ji ≠= 0)('=j i x α (5.4.4) 0)(=j i x β ⎩⎨⎧==01)(ij j i x δβ ji ji ≠= (5.4.5)则显然可得满足插值条件(5.4.3)的12+n 次Hermite 插值多项式∑=++=ni i i i i n f x f x x H 012]')()([)(βα (5.4.6)现在来确定)(x i α和)(x i β。

hermite插值计算公式matlab例题

hermite插值计算公式matlab例题

hermite插值计算公式matlab例题Hermite 插值是一种插值方法,它不仅通过已知的函数值来拟合一个多项式,还利用函数在给定点的导数信息。

这使得 Hermite 插值对于需要在给定点处匹配函数值和导数值的问题非常有用。

下面是一个在 MATLAB 中进行 Hermite 插值计算的简单例子。

假设我们有以下数据点:(1, f(1)), (2, f(2)), (1, f'(1)), (2, f'(2))。

我们要使用 Hermite 插值来计算 f(1.5) 的近似值。

首先,我们定义一个 MATLAB 函数来进行 Hermite 插值:function result = hermite_interpolation(x, y, dy, xi)% x: 数据点的 x 坐标% y: 数据点的函数值% dy: 数据点的导数值% xi: 要进行插值的点的 x 坐标n = length(x);% 初始化插值结果result = 0;for i = 1:n% 计算 Lagrange 基函数的权重Li = 1;for j = 1:nif j ~= iLi = Li * (xi - x(j)) / (x(i) - x(j));endend% Hermite 插值基函数的权重Hi = (1 - 2 * (xi - x(i)) * polyval(polyder(poly(x)), x(i))) * Li^2;% 插值结果的累加result = result + y(i) * Hi + dy(i) * Li;endend接下来,我们使用这个函数进行 Hermite 插值:% 给定数据点x = [1, 2];y = [f(1), f(2)];dy = [f_prime(1), f_prime(2)];% 要进行插值的点xi = 1.5;% 进行 Hermite 插值result = hermite_interpolation(x, y, dy, xi);% 显示插值结果disp(['Hermite interpolation at x = ', num2str(xi), ' is ', num2str(result)]);在这里,f 和 f_prime 是你实际的函数和导数函数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
(2)Hermite插值多项式:
(3)计算实例设函数f(x)=ex在10个等距点上的函数值如下表:
x
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
e-x
0.9048
0.8187
0.7408
0.6703
0.6065
0.5488
0.4965
0.4493
0.4065
0.3678
(4)如果有错,修改直至运行成功,查看运行结果;
SetIcon(m_hIcon, FALSE);// Set small icon
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
void CLDlg::OnSysCommand(UINT nID, LPARAM lParam)
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
pDC->SetViewportOrg(x00,y00);
//画坐标轴与原函数
for(i=-650; i<=650; i++)
{
pDC->SetPixel(i,0,RGB(0,0,0));
pDC->SetPixel(0,i,RGB(0,0,0));
}
for(x=-1; x<=1; x+=0.001)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLDlg dialog
CLDlg::CLDlg(CWnd* pParent /*=NULL*/)
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
ON_BN_CLICKED(IDC_HERMITE, OnHermite)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE);// Set big icon
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CLDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CLDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
(5)根据所求函数,画出图形。
(6)查看原函数的图形与逼近函数图形的近似程度。
2 程序的源代码
// LDlg.cpp : implementation file
//
#include "stdafx.h"
#include "L.h"
#include "LDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
HCURSOR CLDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CLDlg::OnOK()
{
int x00=225,y00=225,i,j;
double x;
CDC *pDC=GetDC();
pDC->SetMapMode(MM_LOMETRIC);
#undef THIS_FILE
st#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CLDlg::OnPaint()
{
if (IsIconic())
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
pDC->SetViewportOrg(x00,y00);
//画坐标轴
for(i=-650; i<=650; i++)
{
pDC->SetPixel(i,0,RGB(0,0,0));
pDC->SetPixel(0,i,RGB(0,0,0));
}
double yx[]={-1,-0.8,-0.6,-0.4,-0.2,0,0.2,0.4,0.6,0.8,1};
{
double j=400.0/(1+25*x*x);
pDC->SetPixel(x*500,j,RGB(255,0,0));
}
}
void CLDlg::OnLargri()
{
int x00=225,y00=225,i,j;
double x;
CDC *pDC=GetDC();
pDC->SetMapMode(MM_LOMETRIC);
strAboutMenu.LoadString(IDS_ABOUTBOX);
相关文档
最新文档