我想从中找到多项式方程。
我试过
p = polyfit(x,y,3);
y2 = p(1)*x.^3 + p(2)*x.^2 + p(3)*x
但我的y2
不等于原y
。怎么了 ?
谢谢你
答案 0 :(得分:2)
正如雷达头在他的评论中写道,你忘记了零度系数(p(4)
这里)。
假设x
和y
是长度相同n
的向量,polyfit(x,y,n-1)
将返回包含插值多项式系数的向量(n
度-1)按降序排列。
然后,点z
处的插值多项式的值将由下式给出:
p(1)*z^3 + p(2)*z^2 + p(3)*z + p(4)
不要忘记p(4)
!正如Bas建议的那样,您可以使用polyval
函数轻松计算给定点的多项式的值:
polyval(p,z);
为了说明这一点,请参阅下面的代码,它生成4个数据点,绘制这些点以及插值它们的多项式:
n = 4;
x = sort(rand(n,1));
y = rand(n,1);
p = polyfit(x,y,n-1);
figure
hold on
plot(x,y,'bo');
xx=linspace(x(1),x(end),100);
plot(xx,polyval(p,xx),'r');
hold off