插值与拟合
插值
方法简介
插值是一种预测方法,能够预测在一个未知函数的两点之间的函数值的估计值。也就是根据现有的点,估计其他点的函数值,因为函数未知,所以需要估计。
插值公式
- 线性插值函数
顾名思义,利用两点之间的直线求得两点间的函数关系,再代入所求点的x值即可求解。线性插值就是想求一个幂次数不超过1的多项式。公式如下:
- 抛物线插值函数
抛物线插值也可以理解为二次曲线插值函数公式,利用二次函数曲线进行预测三点之间的函数关系。求一个幂次数不超过2的多项式函数。公式如下:
Matlab求解插值问题
使用Interp1(x,y,cx,'method')
函数即可。method
可选方法有:linear,spline,cubic,nearest.
拟合
宗旨:有数据就能拟合
方法简介
拟合使用的主要方法是最小二乘法,最小二乘法是一种衡量预测值与真实值之间差距的一种方法,主要通过距离来进行衡量,这个叫最小二乘法准则。
最小二乘法是一种用于拟合的方法,具体做法为
类似于神经网络,通过预测一组权重数据,通过梯度下降和损失函数使得真实值与预测值之间的距离不断缩小
- 先根据具体的散点确定一个大致的函数关系(可以是线性、二次、三次等)函数关系如下:
- 根据这个函数关系设待定系数
- 问题转化乘求解一组待定系数使得预测值与真实之间的距离最小,公式如下其实就是回归问题,回归求解权重,最后拟合得到满足与原数据走势相同的曲线。 特别的,当均取多项式的时候为多项式拟合方法。
Matlab求解
- 线性最小二乘拟合
使用polyfit(x,y,m)
函数即可实现,其中(拟合达到的最高幂次数)
- 非线性最小二乘拟合
使用lsqcurvefit('func', x0, xdata, ydata, options, 'grad')
即可,该方法不需要在定义func函数m文件的时候进行真实值与预测值的相减,直接写函数即可。
使用lsqnonlin('func', x0)
即可,该方法需要提前使用预测值和真实值进行相减作为函数,即函数m文件里需要写
问题求解
求解问题时,两者均可以使用,只要有数据就可以使用该方法,但是注意polyfit是要在为线性的情况下才能使用。但是有时候可以通过一些技巧把非线性转换为线性(取对数).
插值与拟合的区别
插值求解出来的函数需要经过所有的已知点,拟合不许用经过所有的已知点,只要图像的趋势一致即可。