多項式插值
我們初始化要插入的資料:
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
並且隨著學位的增加而不斷惡化。