0

我有

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基本上只是y10 阶多项式所在位置的值,因此将它们完全绘制会给我 10 阶多项式,在 11 个独特点处与我的原始图相交?

我做错了什么?

我的结果:在此处输入图像描述

4

2 回答 2

2

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

x3 = linspace(-5,-5,500);
y3 = polyval(p,x3);
plot(x3,y3);
于 2015-05-06T15:55:08.530 回答
0

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

于 2018-05-09T19:46:25.243 回答