-
多項式插值
鎖定
- 中文名
- 多項式插值
- 外文名
- polynomial interopolation
- 類 型
- 插值技術
- 方 法
- 直接法;拉格朗日法;牛頓法
- 用 來
- 曲線擬合、迴歸
- 應用領域
- 人工智能
多項式插值定義
給定n+1個點
(稱為插值點),所謂多項式插值就是找到一個多項式(稱為插值多項式)
多項式插值唯一性和誤差
定理一:
給定n+1個點
,若
兩兩不同,則存在唯一一個次數不超過n的多項式
,使得
成立。
證明:利用範德蒙德矩陣和代數學基本定理即得。
當
的值來自某個函數
,且f(x)具有n+1階連續導數時,下面的定理可以用來計算多項式插值的(截斷)誤差。
定理二:
給定n+1個點
,其中
,進一步假設函數f(x)具有n+1階連續導數,則插值多項式P(x)的誤差R(x)為
多項式插值計算方法
(注意,根據定理一,這三種方法得到的插值多項式在理論上説應該是一致的,而且誤差也相同。)
直接法
根據定理一,假設插值多項式為
通過求解這個線性方程組,即得到插值多項式。
優點:直接,性質一目瞭然。
拉格朗日多項式插值
拉格朗日基函數
的構造如下:
由基函數的性質,當
時,
,即
為
的零點,可以假設
從而得到
定理三:令
為全體次數不超過n的多項式構成的集合,則
是線性空間
的一組基。
Matlab 實現
function [y,Lb] = LagrangeInterpolation(X,Y,x) % 拉格朗日多項式插值函數 % 注意:插值點的個數為n,差值多項式的次數為n-1 % % 輸入參數 % X,Y: 插值點座標 % x: 求值點 % % 輸出參數 % y: 拉格朗日插值多項式在x點的值 % Lb: 拉格朗日基函數在x點的值 if length(X) ~= length(Y) error('X和Y的長度不相等'); endn = length(X); %獲取插值點的個數 %初始化 y = 0; Lb = ones(1,n); for i = 1:n for j = 1:n %計算拉格朗日基函數在x點的值 if j ~= i Lb(i) = Lb(i) * (x-X(j))/(X(i)-X(j)); end end y = y + Lb(i)*Y(i); %計算拉格朗日插值多項式的值 end end
均差與牛頓多項式插值
牛頓多項式插值是基於均差的計算。首先定義均差如下:
用遞歸的方式,我們定義二階均差為
根據均差的定義,構造均差表如下:
如果將x也看作一個點,由均差的定義可以得到
其中,
稱為牛頓插值多項式。
由定理一和定理二得到均差和導數的關係如下:
其中,
Matlab實現
function [y,Nt]=NewtonInterpolation(X,Y,x) % 牛頓多項式插值函數 % 注意:插值點的個數為n,差值多項式的次數為n-1 % % 輸入參數 % X,Y: 插值點座標 % x: 求值點 % % 輸出參數% y:牛頓差值多項式在x點的值 % Nt:均差表 if length(X) ~= length(Y) error('X和Y的長度不相等'); endn = length(X); Nt = zeros(n); %初始化均差表,按列存放各階均差 Nt(1,1) = Y(1); %0階均差 for i = 2:n %按行計算均差表 Nt(i,1) = Y(i); %0階均差 for j = 2:i Nt(i,j) = (Nt(i,j-1)-Nt(i-1,j-1))/(X(i)-X(i-j+1)); end end %計算牛頓插值多項式在x點上的值w = 1; y = Nt(1,1) * w; for i = 2 : n w = w * (x - X(i-1)); y = y + Nt(i,i) * w; end end
多項式插值比較
拉格朗日多項式插值的計算量大於牛頓多項式插值的計算量。
特別地,當新增一個插值點時,拉格朗日插值需要重新計算全部的基函數,而牛頓插值只需計算均差表中新的一行的值即可。
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:7次歷史版本
- 最近更新: 四海皆海OL