【发布时间】:2015-05-06 11:09:36
【问题描述】:
我有
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 个独特点处与我的原始图相交?
我做错了什么?
我的结果:
【问题讨论】:
-
您必须不仅在插值点
x2处评估p,而且还必须更密集地评估x3 = linspace(-5,-5,500); y3 = polyval(p,x3); plot(x3,y3);。由于您只在插值点进行评估,因此输出的绘图在这些评估之间带有蓝色线段。 -
嘿,谢谢!有效
-
虽然问题和答案都是微不足道的,只是为了遵循协议;),@knedlsepp,你会根据你的评论做出回答,以便 elbarto 可以接受吗?
-
@A.Donda:对不起。你当然是对的!
标签: matlab interpolation function-interposition