插值演算法(數學建模學習)

2021-10-08 06:24:35 字數 3822 閱讀 9624

本系列參考清風老師的數學建模課程

對於資料量少到不足以去分析問題,而必須生成一些合理的資料的情況要用到插值演算法。

(1)定義

設函式y=f

(x)y=f(x)

y=f(x)

在區間[a,

b][a,b]

[a,b

]上有定義,且已知在點a≤x

0<..>.≤b

a≤x_0a≤x0​

​<..>.​≤

b上的值分別為:y0,

y1..

.yny_0,y_1...y_n

y0​,y1

​...

yn​,若存在一簡單函式p(x

)p(x)

p(x)

,使得p(x

i)=y

i,i∈

np(x_i)=y_i,i∈n

p(xi​)

=yi​

,i∈n

則稱p (x

)p(x)

p(x)

為f (x

)f(x)

f(x)

的插值函式。

稱x 0,

x1..

.xnx_0,x_1...x_n

x0​,x1

​...

xn​為插值節點。

稱[ a,

b][a,b]

[a,b

]為插值區間。

稱求插值函式p(x

)p(x)

p(x)

的方法為插值法。

總結資訊:找到乙個能完美通過所有資料點的函式(特別強調:簡單是指次數盡可能低)。

(2)兩種實用插值演算法

條件:在節點上的函式值相等。

對應的導數值相等。

高階導數值也相等。

說明:對於普通的hermite演算法插值所生成的多項式次數高,容易產生龍格現象(runge phenomenon)。因此需要分成三次使用hermite演算法,生成三段函式,叫做分段三次hermite插值多項式(pchip)。原理複雜無需了解。

條件:在節點上的函式值相等。

在每個子區間上函式是三次多項式。

函式在區間上二階連續可微。

說明:在某些情況下三次樣條插值比三次分段hermite插值演算法所生成的插值函式更加光滑,但有時不一定,因此盡量兩種方法都試一試。

利用插值演算法**短期(4年之內)人口數量變化情況。

(1)資料

將準備好的資料匯入設定的兩個向量year,population中.

(2)執行演算法

%設x是已知樣本點橫座標,y是已知樣本點縱座標,new_x是要插入處對應的橫座標。
p=pchip

(x,y,new_x)

%因此本題生成函式應寫成

p1=pchip

(year,population,

2019

:2022

);

%同上段程式題設
p=spline

(x,y,new_x)

p2=spline

(year,population,

2019

:2022

);(3)**繪圖

%通過繪圖比較兩種插值演算法對應效果
plot

(x,y,

'o',new_x,p1,

'r-'

,new_x,p2,

'b-');

legend

('樣本點'

,'分段三次hermite插值'

,'三次樣條插值'

紅色為三次分段hermite插值生成函式,藍色為三次樣條插值演算法生成函式。

說明:只是拿短期人口**做插值舉例,真正建模中要做人口**用擬合演算法或者之後專門**模型更好!

p=

pchip

(x,y,new_x)

;plot

(x,y,

'o',new_x,p,

'r-'

);

p=

spline

(x,y,new_x)

;plot

(x,y,

'o',new_x,p,

'r-'

);

某水池中在奇數周的水池各項指標如下表所示,其中一行代表一項指標,請補充偶數週該水池各項指標值。

(1)插值演算法生成資料

%考慮三次分段hermite插值函式pchip

(x,y,new_x)。

%x為已知資料點對應的自變數值。

%y為已知資料點的因變數值。

%new_x為待插值資料點所對應的自變數值。

%假設將該水池所對應的資料已匯入z.mat中。

load z.matx=z

(1,:

);[n,m]

=size

(z);

p=zeros(11

,15);

for i=2:n

y=z(i,:)

; new_x=1:

15;p1=

pchip

(x,y,new_x)

;subplot(4

,3,i-1);

p(i-1,

:)=p1;

endp =[1

:15; p]

匯入已知資料點的自變數x。

匯入已知資料點的因變數y。

匯入待插入資料點的自變數new_x。

(2)繪製圖形

引自別人繪圖**

1、演算法對比與評價:可以使用三種插值演算法分別進行插值。lagrange插值、三次分段hermite插值與三次樣條插值。

(1)lagrange插值演算法:總體來看,插值資料能近似反映缺失值的真實情況,但是該演算法不具有繼承性,且所生成的函式存在runge現象,個別插值資料明顯脫離實際,***資料值為負數,這顯然不合實際,說明拉格朗日插值法存在侷限性。

(2)三次分段hermite插值演算法:插值資料具有更高的精度,但在插值節點處是不光滑不準確的。

(3)三次樣條插值演算法:當插值節點的密度逐漸變大時,三次樣條插值函式不但收斂於函式本身及其微商,也收斂於函式的微商,因此這一特性使得該演算法具有更高的插值精度。

2、演算法功能:該插值演算法在整個數學建模競賽中只能起到資料預處理的作用,根本不在建模過程中,因此**寫作若用到該演算法要另開標題。

數學建模Day3 插值演算法

matlab 如下 三次樣條插值和分段三次埃爾公尺特插值的對比 x pi pi y sin x new x pi 0.1 pi p1 pchip x,y,new x 分段三次埃爾公尺特插值 p2 spline x,y,new x 三次樣條插值 plot new x,p1,r new x,p2,b l...

學習總結 數學建模(插值與擬合)

目錄插值 一維插值函式 二維插值 擬合主要掌握工具箱即可。y interp1 x0,y0,x,method 其中 method是插值方法,預設線性插值。nearest 最近項插值 感覺很少用 linear 線性插值 spline 立方樣條插值 pp caspe x0,y0 返回pp值 利用y fnv...

數學建模 插值與擬合

插值與擬合 一 插值方法 1.分段線性插值 將兩個點用線連起來形成的一條折線就是分段線性插值函式。in x 其滿足in xi yi,且其在每個相鄰區間 xi,xi 1 上是線性函式。用in x 計算插值時,只用到x左右兩個節點,計算量與節點個數無關。但節點個數越多,插值誤差越小。2.拉格朗日插值多項...