2009-08-26 27 views
1

從scipy我使用interpolate.splrep和interpolate.splev函數來插入我的數據集。不出所料,如果我嘗試在數據集的邊緣附近獲得內插值,這種方法效果不佳。在數據集的終點插入數據點

我想出了一個解決方法(擴展數據集的兩個額外的條目具有與數據集的最後一個「常規」條目相同的值;這似乎工作),但我想知道如果我肩使用另一個插值函數,或者如果有一種常見的方法來處理這個問題。

在此先感謝!

回答

0

我不familliar與SciPy的unfortunally,但也許這將有助於:

我想,這些都是多項式樣條函數,所以你其實可以插值數據集與實際polynomes邊緣附近。這很容易。假設我們有一個像(xi,yi)這樣的點的數據集,i = 1..n。根據脾功能,我們可以在點'2'(df_second')和'n-1'(df_before_last)中找到一階導數(實際上有限差分)。然後,我們需要線性方程組兩個系統:

a1*x1^2 + b1*x1 + c1 = y1 
a1*x2^2 + b1*x2 + c1 = y2 
2*a1*x2 + b1 = df_second 

a2*xn^2 + b2*xn + c2 = yn 
a2*x(n-1)^2 + b2*x(n-1) + c2 = y(n-1) 
2*a2*x(n-1) + b2 = df_before_last 

解決這個方程,你會得到兩個polymones:A1 * X^2 + B1 * X + C1和A2 * X^2 + b2 * x + c2,它將被內插並且可以很好地訪問樣條函數。

實際上,您可以通過在系統中添加附加方程來提高多項式的程度,並在第一個點和最後一個點設置插值圖形曲率和角度。