我有
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个独特点处与原始图形相交?
我做错了什么?
我的结果:
答案 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到此数据