数学建模(3)插值算法
用途
数据较少的时候,用已有的数据来找到两个数据之间的值
一维的插值
分段插值
插值多项式
三角插值
插值的原理
y=a0+a1x+a2x2+...+anxn
$只要有n+1个互不相同的节点
$如果不限制多项式的次数,多项式不唯一
AX=Y
A是参数矩阵(A是范德蒙行列式),X是自变量,Y是因变量
因为
∣A∣=∏i=1n∏j=0n−1(xi−j)=0
所以方程有唯一解
扫描二维码关注公众号,回复:
11528160 查看本文章
拉格朗日插值法
1、有两个点
(x0,y0),(x1,y1)
f(x)=x0−x1x−x1y0+x1−x0x−x0y1
2、有三个点
(x0,y0),(x1,y1),(x2,y2)
f(x)=x0−x1x−x1x0−x2x−x2y0+x1−x0x−x0x1−x2x−x2y1+x2−x0x−x0x2−x1x−x1y2
3、推导普适结果
ωn+1(x)=(x−x0)(x−x1)...(x−xn)
ωn+1′(xk)=(xk−x0)(xk−x0)...(xk−xk−1)(xk−xk+1)...(xk−xn)
Ln(x)=k=0∑nyk(x−xk)ωn+′(xk)ωn+1(x)
龙格现象
插值多项式次数越高,误差不一定越小
回在两端产生明显的震荡,所以不要轻易使用高次数插值
分段三次埃尔米特插值
因为之前的方法不够好,所以这里采用分段插值
简单思路就是找最近的四个点构成一个三次函数
证明过程不会,用不到
matlab有函数
p = pchip(x,y,new_x)
直接插值就行,这个函数看一眼就知道怎么用了。
三次样条插值
(最为精准)
要求函数
S(x)满足:
1、
S(xi)=f(xi)=yi,i=0,1,2,...,n
2、每个子区间上
S(x)是三次多项式
3、
S(x)二阶可微
p = spline(x,y,new_x)
n维数据的插值
p = interpn(x1,x2,...,xn,y,new_x1,,new_x2,...,,new_xn,method)