數值分析讀書筆記(5)數值逼近問題(I)----插值極其數值計算

數值分析讀書筆記(5)數值逼近問題(I)—-插值極其數值計算

給出一般性的插值概念

給定f(x),x[a,b] ,已知它在n+1個互異的節點x0,x1, 上的函數值爲y0,y1,
目的即尋求φ(x) ,使得φ(xi)=f(xi)=yi
令所有的φ(x) 組成Φ ,通常Φ 是有限維線性空間,記

Φ=span{φi(x)}i=0n

其中φi(x) 爲一組基, 於是有
φ(x)=i=0naiφi(x)

故我們可以利用序列{ai}i=0n 來確定φ(x) , 這裏的φ(x) 就是插值函數

通過概念我們可以看出來,目的就是讓插值函數去接近給定的函數


1.關於多項式插值

當給定插值函數是多項式函數的時候, 我們可以產生一種插值的方案, 下面介紹一下Lagrange插值

P(x)=a0+a1x+a2x2++anxn=i=0naixi
由於

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

{a0+a1x0++anx0n=y0a0+a1xn++anxnn=y0

得係數陣爲
A=(1x0x0n1xnxnn)

由Vandermonde行列式的特性,我們可以知道
|A|=0i<jn(xjxi)

xi 互異,則有唯一解
構造插值基函數
li(xj)=δij={1i=j0ij

ij 時,li(xj)=0 ,故
li(x)=cik=0,kin(xxk)

又對於ci 由於li(xj)=1 當僅當i=j ,故
li(xi)=cik=0,kin(xixk)=1

所以可以得到
ci=k=0,kin(xixk)1

我們將ci 回代回去,則有
li(x)=k=0,kin(xxk)(xixk)

Ln(x)=i=0nyili(x)=i=0n(yik=0,kin(xxk)(xixk))

上式即爲所求的Lagarange插值函數

這裏爲了運算記錄方便, 記

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

則有
ωn+1(xi)=k=0,kin(xixk),ωn+1(x)xxi=k=0,kin(xxk)

Ln(x)=i=0n(yiωn+1(x)(xxi)ωn+1(xi))

下面繼續討論Lagrange插值的誤差,引入誤差餘項

R(x)f(x)Ln(x)

我們引入一個輔助函數
F(t)=f(t)Ln(t)K(x)ωn+1(t),t[a,b],xxi,i=0,1,2,

這裏面對於輔助函數的構造,其中末尾一項是保證當x等於節點中的一個時,誤差爲0
其中
K(x)ωn+1(x)=f(x)Ln(x)

t=x0,x1,,xn
是輔助函數的n+2個相異的零點

注意到Rolle定理

φ(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

ξ[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)

以上是關於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)

這裏引入差商(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

我們可以利用這裏的差商的概念寫出Newton插值公式

Nn(x)=f(x0)+f[x0,x1](x0x1)++f[x0,x1,,xn](xx0)(xx1)(xxn1)

其實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

我們這次要構造的多項式比起之前的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)lj2(x){(3)(axj+b)lj2(xj)=1(4)lj(xj)[alj(xj)+2(axj+b)lj(xj)]=0About the second formula , turned from "alj2(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]lj2(x)+j=0nyj[(xxj)lj2(x)]Do some job about making formula neatWe get that H2n+1(x)=j=0nlj2(x)[yj+(xxj)(yj2yj)lj(xj)]

這裏我們需要提及的是,使用上述方法對各個節點進行插值的時候,很有可能在端點處產生一定程度的Runge現象,解決的手段可以使用分段線性插值構造出一系列的分段函數,對於分段線性插值,我們可以理解爲對於多個劃分的子區間進行Lagrange插值得到的一系列分段函數,當然分段插值也有非線性的,例如分段的二次插值,就是在劃分的多個子區間上使用Lagrange2次插值.

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章