插值
给定数据点 (xi,yi),要求找到函数满足 f(xi)=yi。
线性插值:全局信息维护,光滑性(求导),积分都不太好搞。但是原理简单。
多项式?
指数?变化快。
三角函数?周期性。
多项式插值
Weierstrass 逼近定理:设 f∈C[a,b],则 ∀ϵ>0,存在多项式 p(x) 满足 |f(x)−p(x)|<ϵ over [a,b]
过 n 个点 (xi,yi),假设多项式是 n−1 次的,则正好可以唯一解出所有系数。注意到只要有 xi 两两不等,则必然有解,因为系数矩阵是范德蒙矩阵。
Vandermonde 矩阵的行列式是 ∏j<i(xi−xj)
证明:
数学归纳法,n=1,n=2 显然。
n>2 时考虑每一行减去上一行的 x1 倍,再按第一行展开,提取公因式,由此可知。
Lagrange 插值
对于每一个点 (xi,yi),构造出多项式函数 li(x) 满足在 xj(j≠i)时取 0,xi 处取 1。然后我们把所有函数各自乘上 yi 加起来 f(x)=∑li(x)yi 即得到插值函数。
显然存在构造:
lk(x)=∏i≠k(x−xi)∏i≠k(xk−xi)
逐次线性插值(Neville 算法)
记 Ii1,⋯,in(x) 为满足 (xij,yij) 的多项式,那么我们可以递归计算:
I0,1,⋯,k,l(x)=I0,1,⋯,k(x)+I0,1,⋯,k−1,l(x)−I0,1,⋯,k(x)xl−xk(x−xk)
验证一下:显然在 x=x0,⋯,xk 正确。在 x=xl 处显然也正确!每步次数最多 +1。
但是直接实现复杂度爆炸,把指标换一下改成:
I0,1,⋯,k,k+1=I0,1,⋯,k(x)+I1,2,⋯,k+1(x)−I0,1,⋯,k(x)xk+1−x0(x−x0)
这下指标一定是连续子段,所以计算过程中被用到的 I 不会超过 O(k2) 级别。
单点求值时,如需增加一个点,复杂度为 O(k),空间复杂度维持 O(k)。
优势:可以逐步比较精度。
Newton 插值
求出一组系数 cn 使得:
Pn(x)=n∑i=0cii−1∏j=0(x−xj)
写一些值看看:
Pn(x0)=y0=c0
Pn(x1)=y1=c0+c1(x1−x0) 得到 c1=y1−y0x1−x0
Pn(x2)=y2=c0+c1(x2−x0)+c2(x2−x0)(x2−x1) 得到 c2=y2−y0x2−x0−y1−y0x1−x0x2−x1
我们先记
f[x0,⋯,xk]=f[x0,⋯,xk−2,xk]−f[x0,⋯,xk−2,xk−1]xk−xk−1f[x0]=f(x0)
于是我们就可以递归计算:
f(x)=f(x0)+f[x,x0](x−x0)f[x,x0]=f[x0,x1]+f[x,x0,x1](x−x1)f[x,x0,x1]=f[x0,x1,x2]+f[x,x0,x1,x2](x−x2)⋯
发现 ck=f[x0,⋯,xk]。
所以我们需要想办法计算 f[x0,⋯,xk]。
可以数学归纳法证明:
f[x0,⋯,xk]=k∑i=0f(xi)∏kj≠i(xj−xi)
于是可知顺序不会影响差商,故我们可以控制参数一定是一个区间,那么又可以计算了。
另一种证明 ck=f[x0,⋯,xk] 的方法:
首先我们定义 f[x0,⋯,xn] 过这些点的多项式最高次项的系数,最后我们证明这个东西就是我们上面定义的差商。接下来我们证明:
Pn(x)=n∑i=0f[x0,⋯,xi]i−1∏j=0(x−xj)
差分
Δfk=fk+1−fk
∇fk=fk−fk−1
δfk=fk+12−fk−12
误差
Rn(x)=f(x)−Ln(x)=f(n+1)(ξ)(n+1)!n∏i=0(x−xi)
内差。
龙格现象
Hermite 插值
过 (x1,y1),⋯,(xn,yn) 且告诉导数 y′1,⋯,y′n,则得到 2n−1 阶插值多项式为 Hermite 插值多项式。构造:
H2n−1=n∑j=1yjHj(x)+n∑j=1y′j^Hj(x)Hj(x)=[1−2(x−xj)l′j(xj)]l2j(x)^Hj(x)=(x−xj)l2j(x)
检查一下满足:
- Hj(xi)=δi,j
- H′j(xi)=0
- ^Hj(xi)=0
- ^Hj(xi)=δi,j
分段插值
三次样条插值
分段,每一段是三次函数,且满足最后二阶连续可导。
分段处有 3n−3 个条件,过各点有 n+1 个条件,还有两个条件需要自行补充。
- 自然样条:补充两个端点处二阶导为 0。
- 曲率调整样条:直接指定两个端点处的二阶导。
- 钳制样条:指定两个断点处的一阶导。
一定有解:考虑写成矩阵,发现对角占优,所以可以求逆!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!