函数(i=0,L,.,n))。 1,(x)可以表示为 In(x)=∑yl,(x) X-X-1 X-X x∈[x,x,]=0时舍去) x)=x- x∈x,x】(i=n时舍去) x)-x 其它 1,(x)有良好的收敛性,即对于x∈[a,b)]有, lim I(x)=f(x). 用(x)计算x点的插值时,只用到x左右的两个节点,计算量与节点个数n无关。 但越大,分段越多,插值误差越小。实际上用函数表作插值计算时,分段线性插值就 足够了,如数学、物理中用的特殊函数表,数理统计中用的概率分布表等。 1.33用Matlab实现分段线性插值 用Matlab实现分段线性插值不需要编制函数程序,Matlab中有现成的一维插值函 数interpl。 最近项插值 0m为性插值。其值可为: linear' 线性插值 spline 逐段3次样条插值 cubic' 保凹凸性3次插值, 所有的插值方法要求x0是单调的。 当x0为等距时可以用快速插值法,使用快速插值法的格式为*nearest'、*linear、 不仅要求它在节点处与函数同值,而且要求它与函数有相同的 阶 二阶其至更高阶的导数值,这就是Hermite插值问题。本节主要讨论在节点处插值 函数与函数的值及一阶导数值均相等的Hermite插值。 设已知函数y=(x)在n+1个互异节点x0x,. x上的函数值y,=f(x) (i=0,山.,川)和导数值y=(x)(1=0,L.,m,要求一个至多2n+1次的多项式 H(x),使得 H(x)=y,f(x)=y(=0,1.,n) 满足上述条件的多项式H(x)称为Hermite插值多项式。 Hermite插值多项式为 -180-
-180- 函数(i = 0,1,L,n) 。 I (x) n 可以表示为 ∑= = n i n i i I x y l x 0 ( ) ( ) ⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ ∈ = − − ∈ = − − = + + + − − − 其它 时舍去 时舍去 , , ( ) ) 0 [ , ] , [ , ] ( 0 ( ) 1 1 1 1 1 1 x x x i n x x x x x x x i x x x x l x i i i i i i i i i i i I (x) n 有良好的收敛性,即对于 x∈[a,b]有, lim I (x) f (x) n n = →∞ 。 用 I (x) n 计算 x 点的插值时,只用到 x 左右的两个节点,计算量与节点个数n 无关。 但n 越大,分段越多,插值误差越小。实际上用函数表作插值计算时,分段线性插值就 足够了,如数学、物理中用的特殊函数表,数理统计中用的概率分布表等。 1.3.3 用 Matlab 实现分段线性插值 用 Matlab 实现分段线性插值不需要编制函数程序,Matlab 中有现成的一维插值函 数 interp1。 y=interp1(x0,y0,x,'method') method 指定插值的方法,默认为线性插值。其值可为: 'nearest' 最近项插值 'linear' 线性插值 'spline' 逐段 3 次样条插值 'cubic' 保凹凸性 3 次插值。 所有的插值方法要求 x0 是单调的。 当 x0 为等距时可以用快速插值法,使用快速插值法的格式为'*nearest'、'*linear'、 '*spline'、'*cubic'。 1.4 埃尔米特(Hermite)插值 1.4.1 Hermite 插值多项式 如果对插值函数,不仅要求它在节点处与函数同值,而且要求它与函数有相同的一 阶、二阶甚至更高阶的导数值,这就是 Hermite 插值问题。本节主要讨论在节点处插值 函数与函数的值及一阶导数值均相等的 Hermite 插值。 设已知函数 y = f (x) 在n +1个互异节点 n x , x , , x 0 1 L 上的函数值 ( ) i i y = f x (i = 0,1,L,n) 和导数值 ' '( ) i i y = f x (i = 0,1,L,n) ,要求一个至多2n +1次的多项式 H(x),使得 i i H(x ) = y i i H'(x ) = y' (i = 0,1,L,n) 满足上述条件的多项式 H(x)称为 Hermite 插值多项式。 Hermite 插值多项式为
H(x)=>h[(x,-x)(2a,y,-y )+y.] 其中么=-生)月 园-x 14.2用Matlab实现Hermite插值 Matlab中没有现成的Hermite插值函数,必须编写一个M文件实现插值, 设n个节点的数据以数组x0(已知点的横坐标),0(函数值),(导数值) 输入(注意Matlat的数组下标从1开始) ,输 出数组y为m 个插值 编写 for for h*L o品3。5) y(0((0()()() 1.5样条插值 提出的计算问题对插值函数的光滑性有较高要求,如飞机的机翼乡 的边 具有投高的光程度,不仅要连实 函数的概今 长来丁得设计中 条或细金属条。绘图员利用它把 使连接点处有连续的曲率。 数学上将具有一定光滑性的分段多项式称为样条函数。具体地说,给定区间[α,] 的一个分划 a=0<x<.<x-1<xn=b 如果函数s(x)满足: (i)在每个小区间[x,x](i=0,l.,n-1)上s(x)是k次多项式: (i)s(x)在[a,b]上具有k-1阶连续导数。 则称s(x)为关于分划△的k次样条函数,其图形称为k次样条曲线。x,x,·,x称为 样条节点,,x,x称为内节点,X,x,称为边界点,这类样条函数的全体记做 -181-
-181- ∑= = − − + n i i i i i i i H x h x x a y y y 0 ( ) [( )(2 ' ) ] 其中 ∏ ≠ = ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ − − = n j i j i j j i x x x x h 0 2 , ∑ ≠ = − = n j i j i j i x x a 0 1 。 1.4.2 用 Matlab 实现 Hermite 插值 Matlab 中没有现成的 Hermite 插值函数,必须编写一个 M 文件实现插值。 设n 个节点的数据以数组 x0 (已知点的横坐标), y0 (函数值), y1(导数值) 输入(注意 Matlat 的数组下标从 1 开始),m 个插值点以数组 x 输入,输出数组 y 为m 个插值。编写一个名为 hermite.m 的 M 文件: function y=hermite(x0,y0,y1,x); n=length(x0);m=length(x); for k=1:m yy=0.0; for i=1:n h=1.0; a=0.0; for j=1:n if j~=i h=h*((x(k)-x0(j))/(x0(i)-x0(j)))^2; a=1/(x0(i)-x0(j))+a; end end yy=yy+h*((x0(i)-x(k))*(2*a*y0(i)-y1(i))+y0(i)); end y(k)=yy; end 1.5 样条插值 许多工程技术中提出的计算问题对插值函数的光滑性有较高要求,如飞机的机翼外 形,内燃机的进、排气门的凸轮曲线,都要求曲线具有较高的光滑程度,不仅要连续, 而且要有连续的曲率,这就导致了样条插值的产生。 1.5.1 样条函数的概念 所谓样条(Spline)本来是工程设计中使用的一种绘图工具,它是富有弹性的细木 条或细金属条。绘图员利用它把一些已知点连接成一条光滑曲线(称为样条曲线),并 使连接点处有连续的曲率。 数学上将具有一定光滑性的分段多项式称为样条函数。具体地说,给定区间[a,b] 的一个分划 Δ : a = x0 < x1 <L< xn−1 < xn = b 如果函数 s(x) 满足: (i)在每个小区间[ , ]( 0,1, , 1) xi xi−1 i = L n − 上 s(x) 是 k 次多项式; (ii) s(x) 在[a,b]上具有 k −1阶连续导数。 则称 s(x) 为关于分划 Δ 的k 次样条函数,其图形称为k 次样条曲线。 n x , x , , x 0 1 L 称为 样条节点, 1 2 1 , , , n− x x L x 称为内节点, n x , x 0 称为边界点,这类样条函数的全体记做
S(在,k),称为k次样条函数空间。 显然,折线是一次样条曲线 若s(x)ES(△,k),则s(x)是关于分划△的k次多项式样条函数。k次多项式样 条函数的一般形式为 -+ 之-x, 其中a,0=0,L.,k)和B,U=1,2,.,n-1)均为任意常数,而 -=-,2,J=12n-1) 0,x<x, 在实际中最常用的是k=2和3的情况,即为二次样条函数和三次样条函数。 二次样条函数:对于[a,b]上的分划△:a=x。<x<.<xn=b,则 闭=%+ar+号r+号a-ieSa2】 (5) 其中x-=-月,x≥ 0x<x, 5,(j=12,.,n-1)。 三次样条函数:对于[a,b]上的分划△:a=x<x<.<xn=b,则 (6) 其-5-2,=24-1. 0,x<x, 利用样条函数进行插值,即取插值函数为样条函数,称为样条插值。例如分段线性插值 是一次样条插值。下面我们介绍二次、三次样条插值。 1.52二次样条函数插值 首先,我们注意到s,(x)∈S(△,2)中含有n+2个特定常数,故应需要n+2个插 值条件,因此,二次样条插值问题可分为两类: 问题(1): 已知插值节点x和相应的函数值y,(1=01,.,)以及端点x。(或xn)处的导数 值y。(或yn),求s,(x)∈S(△,2)使得 52(x)=y,i=01,2.,m) s2(x)=(或s(x)=y) (7) 问题2): 已知插值节点x和相应的导数值y,(=0,L2,)以及端点x。(或x)处的函 数值(或y),求s,(x)eS(A,2)使得 s2(x)=y,0=0,12,.,m) s,(x)=y(或3,(x)=y) (8) -182
-182- S ( , k) P Δ ,称为 k 次样条函数空间。 显然,折线是一次样条曲线。 若 s(x) S ( , k) ∈ P Δ ,则 s(x) 是关于分划 Δ 的 k 次多项式样条函数。k 次多项式样 条函数的一般形式为 ∑ ∑ − = + = = + − 1 0 1 ( ) ! ! ( ) n j k j j k i i i k x x i k x s x α β , 其中 (i 0,1, , k) αi = L 和 ( j = 1,2, , n −1) β j L 均为任意常数,而 ⎪⎩ ⎪ ⎨ ⎧ < − ≥ − + = j j k k j j x x x x x x x x 0, ( ) , ( ) ,( j = 1,2,L, n −1) 在实际中最常用的是 k = 2和 3 的情况,即为二次样条函数和三次样条函数。 二次样条函数:对于[a,b]上的分划 Δ : a = x0 < x1 <L< xn = b ,则 ∑ − = = + + + − + ∈ Δ 1 1 2 2 2 2 0 1 ( ) ( ,2) 2! 2! ( ) n j j P j s x x x x x S α β α α , (5) 其中 ⎪⎩ ⎪ ⎨ ⎧ < − ≥ − + = j j j j x x x x x x x x 0, ( ) , ( ) 2 2 ,( j =1,2,L, n −1)。 三次样条函数:对于[a,b]上的分划 Δ : a = x0 < x1 <L< xn = b ,则 ∑ − = = + + + + − + ∈ Δ 1 1 2 2 3 3 3 3 0 1 ( ) ( ,3) 2! 3! 3! ( ) n j j P j s x x x x x x S α α β α α , (6) 其中 ⎪⎩ ⎪ ⎨ ⎧ < − ≥ − + = j j j j x x x x x x x x 0, ( ) , ( ) 3 3 ,( j = 1,2,L, n −1)。 利用样条函数进行插值,即取插值函数为样条函数,称为样条插值。例如分段线性插值 是一次样条插值。下面我们介绍二次、三次样条插值。 1.5.2 二次样条函数插值 首先,我们注意到 ( ) ( ,2) s2 x ∈ SP Δ 中含有 n + 2个特定常数,故应需要 n + 2个插 值条件,因此,二次样条插值问题可分为两类: 问题(1): 已知插值节点 i x 和相应的函数值 y (i 0,1, , n) i = L 以及端点 0 x (或 n x )处的导数 值 0 y' (或 n y' ),求 ( ) ( ,2) s2 x ∈ SP Δ 使得 ⎩ ⎨ ⎧ = = = = ' ( ) ( ' ( ) ) ( ) ( 0,1,2, , ) 2 0 0 2 n n n i i s x y s x y s x y i n 或 L (7) 问题(2): 已知插值节点 i x 和相应的导数值 y' (i 0,1,2, ,n) i = L 以及端点 0 x (或 n x )处的函 数值 0 y (或 n y ),求 ( ) ( ,2) s2 x ∈ SP Δ 使得 ⎩ ⎨ ⎧ = = = = ( ) ( ( ) ) ' ( ) ' ( 0,1,2, , ) 2 0 0 2 2 n n i i s x y s x y s x y i n 或 L (8)
事实上,可以证明这两类插值问题都是唯一可解的。 对于问题(1),由条件(7) s化,)=a+a+a=y )=a,+a4+= 5)=a+a+50+26-P=y0=2川 s2(x)=a%1+a2x='0 引入记号X=(ao,a,42,B,.,Bn)为未知向量,C=0,.,yn,y)为已 知向量。 1 0 0 1 0 0 0 -. 2 (x。-x)月 01 0 0 于是,问题转化为求方程组AX=C的解X=(a,a,a,B,B了的问题, 即可得到二次样条函数S,(x)的表达式。 对于问题(2)的情况类似。 15.3三次样条函数插值 由于s(x)eS(A,3)中含有n+3个待定系数,故应需要n+3个插值条件,己知 插值节点x,和相应的函数值fx,)=y,=0,12,m),这里提供了n+1个条件,还 需要2 界条 常用 的三次样条函数的边界条件有3种类型: (i)s'3(@)=yo,s,(b)=yn。由这种边界条件建立的样条插值函数称为f(x)的 完备三次样条插值函数。 特别地,y。=y。=0时,样条曲线在端点处呈水平状态。 如果广(x)不知道,我们可以要求s,(x)与(x)在端点处近似相等。这时以 xo,x1,x2,x3为节点作一个三次Newton插值多项式N(x),以xn,x-,xn-2,x-作 个三次Newton插值多项式N,(x),要求 s'(a)=N.(a),s'(b)=N(b) 由这种边界条件建立的三次样条称为f(x)的Lagrange三次样条插值函数。 (i)s”3(@)=少o,3(b)=y”3。特别地y”n=y”n=0时,称为自然边界条件。 -183-
-183- 事实上,可以证明这两类插值问题都是唯一可解的。 对于问题(1),由条件(7) ⎪ ⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎪ ⎨ ⎧ = + = = + + + − = = = + + = = + + = ∑ − = 2 0 1 2 0 0 1 1 2 2 2 0 1 2 1 2 2 1 0 1 1 2 1 0 2 2 0 0 1 0 2 0 ' ( ) ' ( ) ( 2,3, , ) 2 1 2 1 ( ) 2 1 ( ) 2 1 ( ) s x x y s x x x x x y j n s x x x y s x x x y j i j j j i j i j α α α α α β α α α α α α L 引入记号 T X n ( , , , , , ) = α 0 α1 α 2 β1 L β −1 为未知向量, ( , , , , ' ) 0 1 0 C y y y y = L n 为已 知向量。 ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ − − = − − 0 1 0 0 ( ) 2 1 ( ) 2 1 2 1 1 ( ) 0 2 1 2 1 1 0 0 2 1 1 0 0 2 1 1 0 2 1 2 1 2 2 2 1 2 2 2 2 1 1 2 0 0 L L M M M M M L L L x x x x x x x x x x x x x x x A n n n n n 于是,问题转化为求方程组 AX = C 的解 T X n ( , , , , , ) = α 0 α1 α 2 β1 L β −1 的问题, 即可得到二次样条函数 ( ) 2 s x 的表达式。 对于问题(2)的情况类似。 1.5.3 三次样条函数插值 由于 ( ) ( ,3) s3 x ∈ SP Δ 中含有 n + 3 个待定系数,故应需要 n + 3 个插值条件,已知 插值节点 i x 和相应的函数值 f (x ) y (i 0,1,2, , n) i = i = L ,这里提供了 n +1个条件,还 需要 2 个边界条件。 常用的三次样条函数的边界条件有 3 种类型: (i) n s' (a) y' ,s' (b) y' 3 = 0 3 = 。由这种边界条件建立的样条插值函数称为 f (x)的 完备三次样条插值函数。 特别地, y' 0 = y' n = 0 时,样条曲线在端点处呈水平状态。 如果 f '(x) 不知道,我们可以要求 ' ( ) 3 s x 与 f '(x) 在端点处近似相等。这时以 0 1 2 3 x , x , x , x 为节点作一个三次 Newton 插值多项式 N (x) a ,以 1 2 3 , , , n n− n− n− x x x x 作一 个三次 Newton 插值多项式 N (x) b ,要求 s'(a) N' (a), s'(b) N' (b) = a = b 由这种边界条件建立的三次样条称为 f (x)的 Lagrange 三次样条插值函数。 (ii) 3 0 3 3 s" (a) = y" ,s" (b) = y" 。特别地 y"n = y"n = 0 时,称为自然边界条件