我想从中找到多项式方程。
我试过了
p = polyfit(x,y,3);
和 y2 = p(1)*x.^3 + p(2)*x.^2 + p(3)*x
但我y2
的不等于原来的y
。怎么了 ?谢谢
我想从中找到多项式方程。
我试过了
p = polyfit(x,y,3);
和 y2 = p(1)*x.^3 + p(2)*x.^2 + p(3)*x
但我y2
的不等于原来的y
。怎么了 ?谢谢
正如radarhead 在他的评论中所写,您忘记了零度系数(p(4)
此处)。
假设x
和y
是相同长度的向量n
,将返回一个向量,其中包含按降序排列polyfit(x,y,n-1)
的插值多项式(-1 次)的系数。n
然后,插值多项式在一点的值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