Polyfit和polyval执行插值

时间:2015-05-06 11:09:36

标签: matlab interpolation function-interposition

我有

x = linspace(-5,5,256) y = 1./(1+x.^2) plot(x,y,'...') %plot of (x,y)

我想用10阶多项式来估计这个,这样多项式在11点与图形相交。

所以,我这样做了:

x2 = linspace(-5,5,11) y2 = 1./(1+x2.^2) p = polyfit(x2,y2,10) %finds coefficients of polynomial of degree 10 that fits x2,y2 y3 = polyval(p,x2) plot(x,y,x2,y3,'...')

我认为polyfit会给出多达10阶多项式的系数,它与点(x2,y2)相交(即11点) 然后y3基本上只是10阶多项式落地的y值,所以完全绘制它们会给出10阶多项式,在11个独特点处与原始图形相交?

我做错了什么?

我的结果:enter image description here

2 个答案:

答案 0 :(得分:2)

您的计算是正确的,但您没有以正确的方式绘制函数。生成的绘图中的蓝线是分段线性的。那是因为您只是在插值点p处评估多项式x2。然后plot命令在这些点之间绘制线段,并显示您的意外情节。 为了获得预期的结果,您只需要更加密集地评估多项式:

x3 = linspace(-5,-5,500);
y3 = polyval(p,x3);
plot(x3,y3);

答案 1 :(得分:0)

考虑点(1,3),(2,6.2)和(3,13.5)。使用Matlab的内置函数polyfit来获得用于拟合模型的最佳参数P = Poekt到此数据