多项式插值

我们初始化要插入的数据:

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