多项式插值
我们初始化要插入的数据:
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
并且随着学位的增加而不断恶化。