插值后的近似函数(Matlab)

计算科学 matlab 插值 多项式
2021-12-23 05:11:29

你如何逼近插值点的函数?我使用自然三次样条对 n = 500 个点进行如下插值:

t=[0; 3; 6; 9]
z=[0; 6; 6; 0]
plot(t,z,'ro')
ti=linspace(0,9,500)

zn = natcubicspline(t,z,ti)
yn = line(ti,zn)

有什么方法可以近似这些 n 点的函数(对于大 n)?或者有没有办法将插值点视为一个函数,即找到 zn 向量的梯度?因为 zn 是一个常量向量,所以这不一定有用。

更新:特别是,我的数据似乎形成了一个二次多项式,所以我继续使用以下 Matlab 函数来拟合我的数据:

p = polyfit(transpose(ti),zn,2)

这会产生二次多项式的系数估计值。它确实适合数据,但误差值很高,我必须将此系数向量乘以向量 [1 zz^2] 以获得正确的多项式。有没有办法简化这个?

1个回答

我认为您想使用polyfit原始数据,而不是已经插值的数据。

p = polyfit(t,z,2);

现在是您在 处p插值的二次系数您可以在您的点上评估多项式zt

zi = polyval(p,ti);

由于它是多项式,因此您可以对其进行区分(您可以将其自动化并使其更清晰)

p_prime = [2*p(1), p(2)];

并对此进行评估;

zi_prime = polyval(p_prime, ti);

对于任何更复杂的内容,您可以查看interp1and griddedInterpolantgriddedInterpolant返回一个函数)。