-1

我有一些x.maty.mat

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

我试过了

p = polyfit(x,y,3);

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

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

4

1 回答 1

2

正如radarhead 在他的评论中所写,您忘记了零度系数(p(4)此处)。

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

在此处输入图像描述

于 2013-09-01T23:15:43.137 回答