複製鏈接
請複製以下鏈接發送給好友

插值

(離散數學名詞)

鎖定
離散數據的基礎上補插連續函數,使得這條連續曲線通過全部給定的離散數據點。 [1] 
插值是離散函數逼近的重要方法,利用它可通過函數在有限個點處的取值狀況,估算出函數在其他點處的近似值
插值:用來填充圖像變換時像素之間的空隙。
中文名
插值
外文名
interpolation
相關術語
近似值
應用學科
數學
所屬領域
離散函數
應    用
填充圖像變換時像素之間的空隙
地    位
離散函數逼近的重要方法

插值發展歷史

早在6世紀,中國的劉焯已將等距二次插值用於天文計算。
17世紀之後,I.牛頓,J.-L.拉格朗日分別討論了等距和非等距的一般插值公式。在近代,插值法仍然是數據處理和編制函數表的常用工具,又是數值積分數值微分非線性方程求根和微分方程數值解法的重要基礎,許多求解計算公式都是以插值為基礎導出的。

插值定義

給定 n個離散數據點(稱為節點
,k=1,2,...,n。對於
,求 x所對應的 y的值稱為內插。 [2] 
f(x)為定義在區間 [a,b]上的函數。
為[a,b]上n個互不相同的點, G為給定的某一函數類。若G上有函數 g(x)滿足:
則稱g(x)為f(x)關於節點
在 G上的插值函數。

插值主要內涵

插值問題的提法是:假定區間[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,C1,……Cn)中滿足上式的函數稱為插值函數,R(x)= f(x)-P(x)稱為插值餘項。當估算點屬於包含x0,x1,……,xn的最小閉區間時,相應的插值稱為內插,否則稱為外插。

插值基本類型

插值多項式

這是最常見的一種函數插值。在一般插值問題中,若選取Φ為n次多項式類,由插值條件可以唯一確定一個n次插值多項式滿足上述條件。從幾何上看可以理解為:已知平面上n+1個不同點,要尋找一條n次多項式曲線通過這些點。插值多項式一般有兩種常見的表達形式,一個是拉格朗日插值多項式,另一個是牛頓插值多項式。 [1] 

插值埃爾米特

對於函數f(x),常常不僅知道它在一些點的函數值,而且還知道它在這些點的導數值。這時的插值函數P(x),自然不僅要求在這些點等於f(x)的函數值,而且要求P(x)的導數在這些點也等於f(x)的導數值。這就是埃爾米特插值問題,也稱帶導數的插值問題。從幾何上看,這種插值要尋求的多項式曲線不僅要通過平面上的已知點組,而且在這些點(或者其中一部分)與原曲線“密切”,即它們有相同的斜率。可見埃爾米特插值多項式比起一般多項式插值有較高的光滑逼近要求。

插值分段

分段插值與樣條插值
為了避免高次插值可能出現的大幅度波動現象,在實際應用中通常採用分段低次插值來提高近似程度,比如可用分段線性插值或分段三次埃爾米特插值來逼近已知函數,但它們的總體光滑性較差。為了克服這一缺點,一種全局化的分段插值方法——三次樣條插值成為比較理想的工具。見樣條函數

插值三角函數

當被插函數是以2π為週期的函數時,通常用n階三角多項式作為插值函數,並通過高斯三角插值表出。
辛克插值 在抽樣信號中我們以使用辛克插值,它可以由樣品值完美地重建原始信號。著名的抽樣定理表述,對於正確的抽樣信號s(t),原始信號可以由抽樣值sk進行重建,其公式為:
s(t) = ∑ sksincπ(t-tk) (注:k為下標)
這裏sk代表在時間tk=t0+k*T時的抽樣值,T是抽樣時間,它的倒數1/T叫做抽樣頻率。此公式表示,已知在規則分佈的區間中的抽樣值sk,我們就可以根據辛克函數先測出抽樣值,然後將它們相加,這樣計算出任意時間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)
參考資料
  • 1.    數學手冊》編寫組,《數學手冊》,高等教育出版社,1979年
  • 2.    金堅明. 論一階, 二階導數端點存在誤差對三次樣條插值函數的影響[J]. 數學的實踐與認識, 1987, 2: 94-96.