多項式插值

我們初始化要插入的資料:

x = 0:0.5:10;
y = sin(x/2);

這意味著區間[0,10]中資料的基礎函式是正弦函式。現在計算近似多項式的係數:

p1 = polyfit(x,y,1);
p2 = polyfit(x,y,2);
p3 = polyfit(x,y,3);
p5 = polyfit(x,y,5);
p10 = polyfit(x,y,10);

因此,x 是 x 值,y 是資料點的 y 值,第三個數字是多項式的階數/度。我們現在設定我們想要計算插值函式的網格:

zx = 0:0.1:10;

並計算 y 值:

zy1 = polyval(p1,zx);
zy2 = polyval(p2,zx);
zy3 = polyval(p3,zx);
zy5 = polyval(p5,zx);
zy10 = polyval(p10,zx);

可以看出,當多項式的次數增加時,樣本的近似誤差變小。

http://i.stack.imgur.com/N7txY.jpg

雖然在該示例中直線的近似具有較大的誤差,但是 3 階多項式近似於該對數中的正弦函式相對較好。

http://i.stack.imgur.com/mpB2l.jpg

使用階數 5 和階 10 階多項式的插值幾乎沒有適應誤差。

然而,如果我們考慮樣品外的效能,就會發現過高的訂單傾向於過度配合,因此樣品表現不佳。我們設定

zx = -10:0.1:40;
p10 = polyfit(X,Y,10);
p20 = polyfit(X,Y,20);

zy10 = polyval(p10,zx);
zy20 = polyval(p20,zx);

如果我們看一下圖表,我們會發現樣本外的表現最適合訂單 1

http://i.stack.imgur.com/ULMbB.jpg

並且隨著學位的增加而不斷惡化。

http://i.stack.imgur.com/qUluT.jpg