插值和拟合
什么是插值
求出过已知个有限数据点的近似函数
插值法的概念
设函数y=f(x)在区间[a,b]上有定义,且已知的点Xi(i=0,1,2…n)在该区间内的值分别为y0,y1,y2,y3…
若此时存在以简单的函数P(x),使得
P(xi)=yi (i=0,1,…n)
则称P(x)为f(x)的插值函数。点Xi成为插值节点,[a,b]称为插值区间,
插值函数的用途
补全缺失的数据
基于已知数据进行预测
什么是拟合
求出一个不要求过已知数据点的近似函数,不要求过数据点,仅要求在这些点上的总偏差最小
插值和拟合的相同点
都要根据一组数据构建近似函数
插值和拟合的不同点
近似的要求不同;数学方法完全不同
一个问题到底应该插值还是拟合,有时容易确定有时不能明显看出。
我个人觉得数据点给的很多的时候就不再需要插值了,只需要拟合,看数据的走向趋势即可,因为本身插值就是在数据点太少的情况下看不出数据趋势才需要去生成新的可靠数据点的。另一方面是因为,数据点本身很多的话,多项式插值则次数很高,龙格现象会造成不准确插值。
插值和拟合MATLAB实现代码
插值代码
>>x=0:0.1:2;y=sin(x);
>>xi=0:0.01:2;yi=interp1(x,y,xi,'spline');
拟合代码
>>x=1:10;y==log(x);f=polyfit(x,y,2);
polyfit和polyval函数的应用
polyfit(x,y,n)
x为要拟合的自变量,y为要拟合数据的因变量,n为拟合多项式的次数。
对于上面的f=polyfit(x,y,2);
f(x)=ax^2+bx+c.
polyval(f,x)
一般以z=polyval(f,xi);的形式引用,以便得到各xi对应的f(x)的值