用matlab从数组中求多项式方程

时间:2013-09-01 20:43:18

标签: matlab equation polynomial-math

我有一些x.maty.mat

我想从中找到多项式方程。

我试过

p = polyfit(x,y,3);

y2 = p(1)*x.^3 + p(2)*x.^2 + p(3)*x

但我的y2不等于原y。怎么了 ? 谢谢你

1 个答案:

答案 0 :(得分:2)

正如雷达头在他的评论中写道,你忘记了零度系数(p(4)这里)。

假设xy是长度相同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

enter image description here