1. 程式人生 > >插值方法

插值方法

一點 進行 com efi lag 這一 logs 函數的一般形式 分享圖片

最近看文獻發現插值有很多用處,這篇博客是用來梳理和記錄的。

1、插值方法原理詳解【轉】

轉載於http://www.cnblogs.com/duye/p/8671820.html

插值就是根據已知數據點(條件),來預測未知數據點值得方法。具體來說,假如有n個已知條件,就可以求一個n-1次的插值函數P(x),使得P(x)接近未知原函數f(x),並由插值函數預測出需要的未知點值。而又n個條件求n-1次P(x)的過程,實際上就是求n元一次線性方程組。

1)代數插值就是多項式插值,即所求插值函數為多項式函數。一般來說多項式插值就是求n-1個線性方程的解,拉格朗日插值即是基於此思想。

2)泰勒插值:

技術分享圖片

泰勒插值的條件就是已知0-n階的導數,滿足n階可導這個條件實在是太苛刻,導致實際上泰勒插值並不常用。下面介紹拉格朗日插值與牛頓插值,這兩種方法在本質上是相同的。

3)拉格朗日創造性的避開的方程組求解的復雜性,引入“基函數”這一概念,使得快速手工求解成為可能。

Definition:求作<=n 次多項式 pn(x),使滿足條件pn(xi)= yi,i = 0,1,…,n.這就是所謂拉格朗日( Lagrange)插值。

下面介紹基函數的一般形式:
對於要求的插值函數P(x),可以證明,均可以化簡為以下形式:

技術分享圖片

給出基函數的一般形式為:

技術分享圖片

技術分享圖片 此即著名的拉格朗日插值公式

值得註意的是,拉格朗日插值的方法,在插值區間內插值的精度遠遠大於區間外的精度,故一般說,區間外,拉格朗日插值是不準確的。

4)牛頓插值本質上和朗格朗日插值無異,但為什麽牛頓也要提出這麽一種插值方法呢?這是因為,拉格朗日插值每增加一個新節點,都要重新計算,換言之,它不具備承襲性。牛頓經過嚴密的推導,總結了下列具有承襲性的插值方法。差商表如下:

技術分享圖片

差商具有許多優美的性質,如對稱性等,這裏不做更多說明。根據上述差商定義,自然得到下面的差商公式表:(即把差商定義式展開)

技術分享圖片

從而,把後一項不斷的代入前一項,就得到:

技術分享圖片

把最後一項去掉,作為余項(因其含有未知的x),就得到牛頓差商公式:

技術分享圖片

可以證明,這是關於x的n次多項式。

5) 牛頓插值與拉格朗日插值的比較

設拉格朗日插值函數為P(x),牛頓插值函數為N(x),顯然二者均滿足:P(xi) = N(xi) = f(xi);

由代數多項式插值的唯一性(本質都在解最開始提到的方程),顯然有:P(x) = N(x);

因而,兩個插值方法的余項也是相等的。這很有意思,兩個余項風格迥異,形式完全不同,卻證明了其相等。

當增加一個節點時,對於拉格朗日插值,必須摒棄前面的所有計算去重新計算,而牛頓插值公式卻告訴我們,增加的節點只需要在其後再加一項。這種承襲性使得牛頓插值再某些情境下會比拉格朗日插值更加靈活易用。另外還需說明一點,計算余項時,牛頓插值公式余項由於不需要導數,故f(x)是由離散點或者導數不存在時仍然適用,這是拉格朗日余項計算所不能比擬的。

6)埃爾米特插值(Hermite)

有時候,我們不僅要求插值函數在給定節點上函數值重合,而且要求若幹階導數也重合;即:要求插值函數φ(x)滿足:

技術分享圖片

7)分段差值:簡而言之,分段差值就是對每一個分段區間(xi,xi+1)分別進行插值,則最後所得插值函數為一分段函數。

在[-5,5]上,對函數f(x) = 1/(1+x^2)進行多項式插值,隨著次數的增高,可以看到雖然與原函數重合的點越來越多,可以在端點附近抖動越大,這稱為Runge現象。如下圖:

技術分享圖片

在這種原因下,誕生了更加常用的使用分段插值。

插值方法