跳至內容

數值方法導論/插值

來自華夏公益教科書,開放的書籍,開放的世界

目標

  • 理解插值
  • 推導牛頓插值公式
  • 推導拉格朗日插值公式
  • 應用插值方法解決問題
  • 使用插值找到離散函式的導數和積分

資源

插值 是從一組離散資料點中推匯出一個簡單函式的過程,使該函式透過所有給定的資料點(即精確地再現資料點),並可用於估計給定資料點之間的其他資料點。 這是必要的,因為在科學和工程中,我們經常需要處理離散的實驗資料。 插值還用於透過對資料點進行取樣並使用更簡單的函式對其進行插值來簡化複雜的函式。 多項式通常用於插值,因為它們更容易計算、微分和積分 - 稱為 多項式插值

可以證明,給定 n+1 個數據點,總能找到一個 n 階/度多項式來透過/再現這 n+1 個點。

直接法

[編輯 | 編輯原始碼]

給定 n+1 個數據點,直接法假設以下多項式

對於 的 n+1 個值和相應的 的 n+1 個值,我們可以透過解 n+1 個聯立線性方程組來求解 ,這被稱為直接法。

例如,給定兩個資料點 ,我們可以使用線性函式 來透過這兩個資料點

一旦我們求解了 的係數),我們可以使用該函式作為插值的依據——估計其間的缺失資料點。

牛頓法

[編輯 | 編輯原始碼]

在牛頓法中,插值函式以 牛頓多項式(又稱牛頓形式)的形式寫出。例如,給定一個數據點 ,我們只能推匯出一個零階多項式: 。因為 ,零階牛頓多項式為

給定兩個資料點,我們可以將牛頓多項式寫成 的形式。將兩個資料點代入,得到

顯然,該函式透過這兩個資料點(即準確地再現了這兩個資料點)。該函式在 處的導數為 ,與前向差分法的結果一致。

給定三個資料點,我們可以將牛頓多項式寫成

將三個資料點代入,得到

由於 ,我們得到
由於 ,我們得到
由於
我們得到

這個三次多項式函式透過所有三個資料點(二階導數和三階導數在 處與差商法匹配)。

從這兩個例子中,我們可以看到牛頓多項式的係數遵循一種稱為 差商 的模式。例如, 被稱為一階差商(記為 ),因為它取決於 。差商符號可以用來寫出一般階(形式)的牛頓多項式

其中

,因為根據定義

我們可以使用以下表格計算牛頓多項式的係數。

因為

下圖展示了差商之間的依賴關係。

A table for solving the coefficients of a Newton's polynomial.

例如,給定資料點 , , , 以及 ,我們可以繪製以下表格。

四個資料點位於一個二階多項式上,這就是係數 () 為零。給定 ,結果多項式為

求解牛頓多項式的係數後,我們可以對任何 求解多項式函式。牛頓多項式通常被重寫成巢狀形式

,

因為這種插值多項式的巢狀形式更容易計算,因為 x 只在函式中出現 n 次。

例如,三階插值多項式的巢狀形式為

牛頓法的演算法及其實現可以在這個 Jupyter notebook 中找到。

拉格朗日形式

[編輯 | 編輯原始碼]

拉格朗日多項式 是另一種用於多項式插值的表示式。它被稱為一種表示式,因為對於一組給定的不同點,插值多項式是唯一的。我們可以透過不同的方法得到相同的多項式。

拉格朗日表達式將插值多項式指定為

其中 是多項式的階數。

例如,給定兩個資料點,我們得到 並且

顯然,函式曲線經過兩個資料點。一階導數也與差商法的一階導數一致

樣條插值

[編輯 | 編輯原始碼]

樣條插值 使用多個多項式函式來插值一組資料點,每個多項式對應兩個相鄰資料點。樣條法是必要的,因為當多項式的階數變大時,多項式插值往往會表現出振盪行為(稱為 龍格現象)。以下 iPython 筆記本展示了一個遇到此問題的例子:[1]

樣條法不是另一種尋找離散函式的多項式插值的方法,而是使用分段多項式(樣條)來避免振盪行為。最常見的樣條插值是線性樣條、二次樣條和三次樣條。 線性插值 使用直線連線每對連續資料點,從而形成分段插值。

Interpolation example linear

一個 二次樣條 使用二次多項式連線連續資料點。

Quadratic spline six segments

如果滿足以下條件,則函式 f(x) 是一個二次樣條

  1. f(x) 的定義域為區間 [a, b]。
  2. 在 [a, b] 上是連續的。
  3. 資料點 使得 並且 在每個子區間 上最多是 2 階多項式。
華夏公益教科書