数值分析读书笔记(5)数值逼近问题(I)----插值极其数值计算

数值分析读书笔记(5)数值逼近问题(I)—-插值极其数值计算

给出一般性的插值概念

给定 f(x),x[a,b] f ( x ) , x ∈ [ a , b ] ,已知它在n+1个互异的节点 x0,x1, x 0 , x 1 , … 上的函数值为 y0,y1, y 0 , y 1 , …
目的即寻求 φ(x) φ ( x ) ,使得 φ(xi)=f(xi)=yi φ ( x i ) = f ( x i ) = y i
令所有的 φ(x) φ ( x ) 组成 Φ Φ ,通常 Φ Φ 是有限维线性空间,记

Φ=span{φi(x)}ni=0 Φ = s p a n { φ i ( x ) } i = 0 n

其中 φi(x) φ i ( x ) 为一组基, 于是有
φ(x)=i=0naiφi(x) φ ( x ) = ∑ i = 0 n a i φ i ( x )

故我们可以利用序列 {ai}ni=0 { a i } i = 0 n 来确定 φ(x) φ ( x ) , 这里的 φ(x) φ ( x ) 就是 插值函数

通过概念我们可以看出来,目的就是让插值函数去接近给定的函数


1.关于多项式插值

当给定插值函数是多项式函数的时候, 我们可以产生一种插值的方案, 下面介绍一下Lagrange插值

P(x)=a0+a1x+a2x2++anxn=ni=0aixi P ( x ) = a 0 + a 1 x + a 2 x 2 + ⋯ + a n x n = ∑ i = 0 n a i x i
由于

P(xi)=yi,i=0,1,2,,n P ( x i ) = y i , i = 0 , 1 , 2 , … , n

a0+a1x0++anxn0a0+a1xn++anxnn=y0=y0 { a 0 + a 1 x 0 + ⋯ + a n x 0 n = y 0 ⋮ a 0 + a 1 x n + ⋯ + a n x n n = y 0

得系数阵为
A=11x0xnxn0xnn A = ( 1 x 0 ⋯ x 0 n ⋮ ⋮ ⋱ ⋮ 1 x n ⋯ x n n )

由Vandermonde行列式的特性,我们可以知道
|A|=0i<jn(xjxi) | A | = ∏ 0 ≤ i < j ≤ n ( x j − x i )

xi x i 互异,则有唯一解
构造插值基函数
li(xj)=δij={10i=jij l i ( x j ) = δ i j = { 1 i = j 0 i ≠ j

ij i ≠ j 时, li(xj)=0 l i ( x j ) = 0 ,故
li(x)=cik=0,kin(xxk) l i ( x ) = c i ∏ k = 0 , k ≠ i n ( x − x k )

又对于 ci c i 由于 li(xj)=1 l i ( x j ) = 1 当仅当 i=j i = j ,故
li(xi)=cik=0,kin(xixk)=1 l i ( x i ) = c i ∏ k = 0 , k ≠ i n ( x i − x k ) = 1

所以可以得到
ci=k=0,kin(xixk)1 c i = ∏ k = 0 , k ≠ i n ( x i − x k ) − 1

我们将 ci c i 回代回去,则有
li(x)=k=0,kin(xxk)(xixk) l i ( x ) = ∏ k = 0 , k ≠ i n ( x − x k ) ( x i − x k )

Ln(x)=i=0nyili(x)=i=0n(yik=0,kin(xxk)(xixk)) L n ( x ) = ∑ i = 0 n y i l i ( x ) = ∑ i = 0 n ( y i ∏ k = 0 , k ≠ i n ( x − x k ) ( x i − x k ) )

上式即为所求的 Lagarange插值函数

这里为了运算记录方便, 记

ωn+1(x)=k=0n(xxk) ω n + 1 ( x ) = ∏ k = 0 n ( x − x k )

则有
ωn+1(xi)=k=0,kin(xixk),ωn+1(x)xxi=k=0,kin(xxk) ω n + 1 ′ ( x i ) = ∏ k = 0 , k ≠ i n ( x i − x k ) , ω n + 1 ( x ) x − x i = ∏ k = 0 , k ≠ i n ( x − x k )

Ln(x)=i=0n(yiωn+1(x)(xxi)ωn+1(xi)) L n ( x ) = ∑ i = 0 n ( y i ω n + 1 ( x ) ( x − x i ) ω n + 1 ′ ( x i ) )

下面继续讨论Lagrange插值的误差,引入误差余项

R(x)f(x)Ln(x) R ( x ) ≡ f ( x ) − L n ( x )

我们引入一个辅助函数
F(t)=f(t)Ln(t)K(x)ωn+1(t),t[a,b],xxi,i=0,1,2, F ( t ) = f ( t ) − L n ( t ) − K ( x ) ω n + 1 ( t ) , t ∈ [ a , b ] , x ≠ x i , i = 0 , 1 , 2 , …

这里面对于辅助函数的构造,其中末尾一项是保证当x等于节点中的一个时,误差为0
其中
K(x)ωn+1(x)=f(x)Ln(x) K ( x ) ω n + 1 ( x ) = f ( x ) − L n ( x )

t=x0,x1,,xn t = x 0 , x 1 , … , x n
是辅助函数的n+2个相异的零点

注意到Rolle定理

φ(x),x[a,b],φ(a)=φ(b)=0,φ(x),ξ[a,b],使φ(ξ)=0 φ ( x ) , x ∈ [ a , b ] , φ ( a ) = φ ( b ) = 0 , 其 中 φ ( x ) 满 足 连 续 等 条 件 , 则 必 有 ξ ∈ [ a , b ] , 使 得 φ ′ ( ξ ) = 0

F(t)=f(t)Ln(t)K(x)ωn+1(t),F(t),F(t),....Rolle F ( t ) = f ( t ) − L n ( t ) − K ( x ) ω n + 1 ( t ) , 对 F ( t ) , F ′ ( t ) , . . . . 应 用 R o l l e 定 理

ξ[a,b],使F(n+1)(ξ)=0,f(n+!)(ξ)K(x)(n+1)!=0K(x)=f(n+1)(x)(n+1)!Rn(x)=f(n+1)(x)(n+1)!ωn+!(x) 必 有 ξ ∈ [ a , b ] , 使 得 F ( n + 1 ) ( ξ ) = 0 , 故 f ( n + ! ) ( ξ ) − K ( x ) ( n + 1 ) ! = 0 故 K ( x ) = f ( n + 1 ) ( x ) ( n + 1 ) ! 从 而 R n ( x ) = f ( n + 1 ) ( x ) ( n + 1 ) ! ω n + ! ( x )

以上是关于Lagrange插值的介绍,针对Lagrange插值,节点个数的增加或者减少的时候,插值基函数需要变动,为了解决这一问题,我们引入Newton插值

Nn(x)=a0+a1(xx0)++an(xx0)(xx1)(xxn)also defineNn1(x)=a0+a1(xx0)++an1(xx0)(xx1)(xxn1)For  xi (i=0,1,,n1)   Nn1(x)=Nn(x)=yiSo  Nn(x)Nn1(x)=c(xx0)(xx1)(xxn1)When  x=xnNn(xn)Nn1(xn)=ynNn1(xn)=ci=0n1(xxi)We can get c=[ynNn1(x)]i=0n1(xxi)1Pay attention to thatNn1(x)=i=0n1yili(xn)=i=0n1(yik=0,kin1(xnxkxixk))So  c=yni=0n1(xnxi)1Nn1(xn)i=0n1(xnxi)1Nn1(xn)i=0n1(xnxi)1=i=0n1(yik=0,kin1(xnxkxixk))/i=0n1(xnxi)SoNn1(xn)i=0n1(xnxi)1=i=0n1(yik=0,kin(xixk)1)We can get   c=yni=0n1(xnxi)1+i=1n1(yik=0,kin(xixk)1)Because of thatWe get.   Nn(x)Nn1(x)=ci=0n1(xxi)=[i=1n1(yik=0,kin(xixk)1)]i=0n1(xxi) N n ( x ) = a 0 + a 1 ( x − x 0 ) + ⋯ + a n ( x − x 0 ) ( x − x 1 ) ⋯ ( x − x n ) a l s o   d e f i n e N n − 1 ( x ) = a 0 + a 1 ( x − x 0 ) + ⋯ + a n − 1 ( x − x 0 ) ( x − x 1 ) ⋯ ( x − x n − 1 ) F o r     x i   ( i = 0 , 1 , ⋯ , n − 1 )       N n − 1 ( x ) = N n ( x ) = y i S o     N n ( x ) − N n − 1 ( x ) = c ( x − x 0 ) ( x − x 1 ) ⋯ ( x − x n − 1 ) W h e n     x = x n N n ( x n ) − N n − 1 ( x n ) = y n − N n − 1 ( x n ) = c ∏ i = 0 n − 1 ( x − x i ) W e   c a n   g e t   c = [ y n − N n − 1 ( x ) ] ∏ i = 0 n − 1 ( x − x i ) − 1 P a y   a t t e n t i o n   t o   t h a t N n − 1 ( x ) = ∑ i = 0 n − 1 y i l i ( x n ) = ∑ i = 0 n − 1 ( y i ∏ k = 0 , k ≠ i n − 1 ( x n − x k x i − x k ) ) S o     c = y n ∏ i = 0 n − 1 ( x n − x i ) − 1 − N n − 1 ( x n ) ∏ i = 0 n − 1 ( x n − x i ) − 1 N n − 1 ( x n ) ∏ i = 0 n − 1 ( x n − x i ) − 1 = ∑ i = 0 n − 1 ( y i ∏ k = 0 , k ≠ i n − 1 ( x n − x k x i − x k ) ) / ∏ i = 0 n − 1 ( x n − x i ) S o N n − 1 ( x n ) ∏ i = 0 n − 1 ( x n − x i ) − 1 = − ∑ i = 0 n − 1 ( y i ∏ k = 0 , k ≠ i n ( x i − x k ) − 1 ) W e   c a n   g e t       c = y n ∏ i = 0 n − 1 ( x n − x i ) − 1 + ∑ i = 1 n − 1 ( y i ∏ k = 0 , k ≠ i n ( x i − x k ) − 1 ) B e c a u s e   o f   t h a t W e   g e t .       N n ( x ) − N n − 1 ( x ) = c ∏ i = 0 n − 1 ( x − x i ) = [ ∑ i = 1 n − 1 ( y i ∏ k = 0 , k ≠ i n ( x i − x k ) − 1 ) ] ∑ i = 0 n − 1 ( x − x i )

这里引入差商(Difference Quotient)的概念

Let. f[x0,,xn]=i=1n1(yik=0,kin(xixk)1)Nn(x)=f[x0]+f[x0,x1](x0x1)++f[x0,x1,,xn]i=0n1(xxi)The Difference Quotient is like thatf[xi,xj]=f(xi)f(xj)xixj ,  f[xi,xj,xk]=f[xi,xj]f[xj,xk]xixk L e t .   f [ x 0 , ⋯ , x n ] = ∑ i = 1 n − 1 ( y i ∏ k = 0 , k ≠ i n ( x i − x k ) − 1 ) N n ( x ) = f [ x 0 ] + f [ x 0 , x 1 ] ( x 0 − x 1 ) + ⋯ + f [ x 0 , x 1 , ⋯ , x n ] ∏ i = 0 n − 1 ( x − x i ) T h e   D i f f e r e n c e   Q u o t i e n t   i s   l i k e   t h a t f [ x i , x j ] = f ( x i ) − f ( x j ) x i − x j   ,     f [ x i , x j , x k ] = f [ x i , x j ] − f [ x j , x k ] x i − x k

我们可以利用这里的差商的概念写出Newton插值公式

Nn(x)=f(x0)+f[x0,x1](x0x1)++f[x0,x1,,xn](xx0)(xx1)(xxn1) N n ( x ) = f ( x 0 ) + f [ x 0 , x 1 ] ( x 0 − x 1 ) + ⋯ + f [ x 0 , x 1 , ⋯ , x n ] ( x − x 0 ) ( x − x 1 ) ⋯ ( x − x n − 1 )

其实Newton插值公式和Lagrange插值公式其实本质上是一样的,只不过是书写的方式不同,但是这样的不同的书写方式在实际操作中带来了很大的便利,当需要增加一个插值点的时候,只需要在原插值多项式的后面再添加一个新的项就可以了

有时候我们不但要求插值函数P(x)在节点处的函数值与被插值函数f(x)的值相等,而且要求在节点处的导数值也相等,这就引出了了一种新的插值方案Hermit插值

Given f(x), and n+1 different points x0,x1,,xnLet f(xi)=yi    f(xi)=yiWe can construct a polynomialH2n+1(xi)=yi    H2n+1(xi)=yi G i v e n   f ( x ) ,   a n d   n + 1   d i f f e r e n t   p o i n t s   x 0 , x 1 , ⋯ , x n L e t   f ( x i ) = y i         f ′ ( x i ) = y i ′ W e   c a n   c o n s t r u c t   a   p o l y n o m i a l H 2 n + 1 ( x i ) = y i         H 2 n + 1 ′ ( x i ) = y i ′

我们这次要构造的多项式比起之前的lagrange多项式,多了导数值相等的条件,那我们就利用两组基函数来试着构造这一多项式

l0j(xi)=δij, l0j(xi)=0l1j(xi)=0, l1j(xi)=δijSo we get the simple polynomial :  H2n+1(x)=j=0nyjl0j(x)+j=0nyjl1j(x)When ij ,l0j(xi) and l0j(xi) always equal zeroBecause of that ,Assume l0j(x)=(ax+b)l2j(x){(axj+b)l2j(xj)=1lj(xj)[alj(xj)+2(axj+b)lj(xj)]=0(3)(4)About the second formula , turned from "al2j(xj)+2lj(xj)lj(xj)(axj+b)"That means we just to solve the following:axj+b=1   and   a+2(axj+b)lj(xj)=0We get that : a=2lj(xj),  b=1+2xjlj(xj)Similarly l1j(x)=(cx+d)lj(xj)And we also get c=1 and d=xjSo we can easily build H2n+1(x)The result is that H2n+1(x)=j=0nyj[2(xjx)lj(x)+1]l2j(x)+j=0nyj[(xxj)l2j(x)]Do some job about making formula neatWe get that H2n+1(x)=j=0nl2j(x)[yj+(xxj)(yj2yj)lj(xj)] l 0 j ( x i ) = δ i j ,   l 0 j ′ ( x i ) = 0 l 1 j ( x i ) = 0 ,   l 1 j ′ ( x i ) = δ i j S o   w e   g e t   t h e   s i m p l e   p o l y n o m i a l   :     H 2 n + 1 ( x ) = ∑ j = 0 n y j l 0 j ( x ) + ∑ j = 0 n y j ′ l 1 j ( x ) W h e n   i ≠ j   , l 0 j ( x i )   a n d   l 0 j ( x i ) ′   a l w a y s   e q u a l   z e r o B e c a u s e   o f   t h a t   , A s s u m e   l 0 j ( x ) = ( a x + b ) l j 2 ( x ) { (3) ( a x j + b ) l j 2 ( x j ) = 1 (4) l j ( x j ) [ a l j ( x j ) + 2 ( a x j + b ) l j ′ ( x j ) ] = 0 A b o u t   t h e   s e c o n d   f o r m u l a   ,   t u r n e d   f r o m   " a l j 2 ( x j ) + 2 l j ( x j ) l j ′ ( x j ) ( a x j + b ) " T h a t   m e a n s   w e   j u s t   t o   s o l v e   t h e   f o l l o w i n g : a x j + b = 1       a n d       a + 2 ( a x j + b ) l j ′ ( x j ) = 0 W e   g e t   t h a t   :   a = − 2 l j ′ ( x j ) ,     b = 1 + 2 x j l j ′ ( x j ) S i m i l a r l y   l 1 j ( x ) = ( c x + d ) l j ( x j ) A n d   w e   a l s o   g e t   c = 1   a n d   d = − x j S o   w e   c a n   e a s i l y   b u i l d   H 2 n + 1 ( x ) T h e   r e s u l t   i s   t h a t   H 2 n + 1 ( x ) = ∑ j = 0 n y j [ 2 ( x j − x ) l j ′ ( x ) + 1 ] l j 2 ( x ) + ∑ j = 0 n y j ′ [ ( x − x j ) l j 2 ( x ) ] D o   s o m e   j o b   a b o u t   m a k i n g   f o r m u l a   n e a t W e   g e t   t h a t   H 2 n + 1 ( x ) = ∑ j = 0 n l j 2 ( x ) [ y j + ( x − x j ) ( y j ′ − 2 y j ) l j ′ ( x j ) ]

这里我们需要提及的是,使用上述方法对各个节点进行插值的时候,很有可能在端点处产生一定程度的Runge现象,解决的手段可以使用分段线性插值构造出一系列的分段函数,对于分段线性插值,我们可以理解为对于多个划分的子区间进行Lagrange插值得到的一系列分段函数,当然分段插值也有非线性的,例如分段的二次插值,就是在划分的多个子区间上使用Lagrange2次插值.

这里由于某些教材的不同,可能介绍了Hermit三次插值的方案,在上述的公式中可以令n=1即可.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值