發展歷史
早在6世紀,中國的劉焯已將等距二次插值用於天文計算。
17世紀之後,I.牛頓,J.-L.拉格朗日分別討論了等距和非等距的一般插值公式。在近代, 插值法仍然是數據處理和編制 函式表的常用工具,又是 數值積分、 數值微分、非線性方程求根和微分方程數值解法的重要基礎,許多求解計算公式都是以插值為基礎導出的。
主要內涵
插值問題的提法是:假定區間[a,b]上的 實值函式f(x)在該區間上 n+1個互不相同點x0,x1……xn 處的值是f (x0),……f(xn),要求估算f(x)在[a,b]中某點x*的值。基本思路是,找到一個函式P(x),在x0,x1……xn 的節點上與f(x)函式值相同(有時,甚至一階導數值也相同),用P(x*)的值作為函式f(x*)的近似。
其通常的做法是:在事先選定的一個由簡單函式構成的有n+1個參數C0,C1,……Cn的函式類Φ(C0,C1,……Cn)中求出滿足條件P(xi)=f(xi)(i=0,1,…… n)的函式P(x),並以P()作為f()的估值。此處f(x)稱為被插值函式,x0,x1,……xn稱為插值結(節)點,Φ(C0,C1,……Cn)稱為插值函式類,上面等式稱為插值條件,Φ(C0,……Cn)中滿足上式的函式稱為插值函式,R(x)= f(x)-P(x)稱為插值餘項。當估算點屬於包含x0,x1……xn的最小閉區間時,相應的插值稱為內插,否則稱為外插。
基本類型
多項式插值這是最常見的一種函式插值。在一般插值問題中,若選取Φ為n次多項式類,由插值條件可以唯一確定一個n次插值多項式滿足上述條件。從 幾何上看可以理解為:已知平面上n+1個不同點,要尋找一條n次多項式 曲線通過這些點。插值多項式一般有兩種常見的表達形式,一個是拉格朗日插值多項式,另一個是牛頓插值多項式。
埃爾米特插值對於函式f(x),常常不僅知道它在一些點的 函式值,而且還知道它在這些點的 導數值。這時的插值函式P(x),自然不僅要求在這些點等於f(x)的函式值,而且要求P(x)的導數在這些點也等於f(x)的導數值。這就是埃爾米特插值問題,也稱帶導數的插值問題。從幾何上看,這種插值要尋求的多項式曲線不僅要通過平面上的已知點組,而且在這些點(或者其中一部分)與原曲線“密切”,即它們有相同的斜率。可見埃爾米特插值多項式比起一般多項式插值有較高的光滑逼近要求。
分段插值與樣條插值為了避免高次插值可能出現的大幅度波動現象,在實際套用中通常採用分段低次插值來提高近似程度,比如可用分段線性插值或分段三次埃爾米特插值來逼近已知函式,但它們的總體光滑性較差。為了克服這一缺點,一種全局化的分段插值方法—— 三次樣條插值成為比較理想的工具。見 樣條函式。
三角函式插值當被插函式是以2π為周期的函式時,通常用n階三角多項式作為插值函式,並通過 高斯三角插值表出。
辛克插值在抽樣信號中我們以使用辛克插值,它可以由樣品值完美地重建原始信號。著名的抽樣定理表述,對於正確的抽樣信號s(t),原始信號可以由抽樣值sk進行重建,其公式為:
+∞
s(t) = ∑ s
sinc
(t-t
) (註:
為下標)
k=-∞
這裡s
代表在時間t
=t0+k*T時的抽樣值,T是抽樣時間,它的倒數1/T叫做抽樣頻率。此公式表示,已知在規則分布的區間中的抽樣值s
,我們就可以根據辛克函式先測出抽樣值,然後將它們相加,這樣計算出任意時間t上的值。
編程使用
matlab中使用插值函式
插值函式(the function of interpolation )
interp1
調用函式的格式(Syntax)
yi = interp1(x,Y,xi)
yi = interp1(Y,xi)
yi = interp1(x,Y,xi,method)
yi = interp1(x,Y,xi,method,'extrap')
yi = interp1(x,Y,xi,method,extrapval)
pp = interp1(x,Y,method,'pp')
調用格式說明(Description)
yi = interp1(x,Y,xi) 返回矢量X和Y決定的根據輸入的節點xi時對應的y的值.矢量Y是矢量X的一個函式映射.
如果Y是一個矩陣,那么插值結果是一個對應的矩陣.
[===================================================
yi = interp1(x,Y,xi) returns vector yi containing elements corresponding to the elements of xi and determined by interpolation within vectors x and Y. The vector x specifies the points at which the data Y is given. If Y is a matrix, then the interpolation is performed for each column of Y and yi is length(xi)-by-size(Y,2).
===================================================]
yi = interp1(x,Y,xi,method)插值中可以使用的方法:
插值方法 | 說明 |
nearest | 臨近的兩點插值 |
linear | 線性插值(默認) |
spline | 三次樣條插值 |
pchip | 分段三次Hermite插值多項式插值 |
cubic | (作用於pchip相同) |
v5cubic | 用matlab5版本中斷三次樣條插值 |
[====================================================
yi = interp1(x,Y,xi,method) interpolates using alternative methods:
methodDescription
nearestNearest neighbor interpolation
linearLinear interpolation (default)
splinesplineCubic spline interpolation
pchipPiecewise cubic Hermite interpolation
cubic(Same as 'pchip')
v5cubicCubic interpolation used in MATLAB 5
======================================================]
簡單程式示例
>>x=[0.0 0.1 0.195 0.3 0.401 0.5];
>>y=[0.39849 0.39695 0.39142 0.38138 0.36812 0.35206];
>>plot(x,y);
>>T=interp1(x,y,.25,'linear')%線性插值
(返回結果T=0.3862)
>> T=interp1(x,y,.25,'nearest')% 兩點插值
(返回結果T=0.3814)
>>T=interp1(x,y,.25,'spline') % 三次樣條插值
(返回結果T =0.3867)
>>T=interp1(x,y,.25,'cubic')%三次插值
(返回結果T =0.3867)