拉格朗日插值法

拉格朗日插值法

在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。

插值法就是求出一个尽量符合函数图像的多项式。
众所周知,\(n+1\) 个点可以确定唯一的一个 \(n\) 次多项式,证明不会,现在有一个 \(n\) 次多项式,它有 \(n+1\) 个系数,如果知道这个多项式 \(n+1\) 个不同的取值情况形如 \((x_i,y_i)\),那么可以使用待定系数法解方程得到这个多项式,使用高斯消元可以做到 \(\mathcal{O}(n^3)\) 的时间复杂度。
考虑来构造一个解,对于每个 \(i\),都存在一个函数 \(g_i(x_i)=y_i,g_i(x_j)=0[j\not=i]\),为了普适性,直接使 \(g_i(x_i)=1\),那么这个多项式就是 \(\sum_{i=1}^{n+1}y_ig_i\),考虑如何来构造 \(g_i\)

  • 首先 \(g_i=\prod(x-x_j)\),这样可以保证当 \(x=x_j\) 时,\(g_i(x)=0\)
  • 构造等于 \(1\) 可以直接考虑除以一个相同的数,\(g_i=\prod_{i\not=j}\frac{x-x_j}{x_i-x_j}\)

这样就构造出了这样一个函数,这个多项式就是

\[f(x)=\sum_{i=1}^{n+1}y_i\prod_{i\not=j}\frac{x-x_j}{x_i-x_j} \]

对于任意的一个 \(x\),可以以 \(\mathcal{O}(n^2)\) 的时间计算出 \(f(x)\),如果给出的点的横坐标是连续整数,可以预处理逆元和前后缀积做到线性计算 \(f(x)\)

重心拉格朗日插值法

如果需要动态加入一个点,就会有多次重复的计算,考虑找到每个点的“特征”,这个特征毫无疑问是 \(y_i\prod_{i\not=j}\frac{1}{x_i-x_j}\),直接处理下这个就能线性加入点了。

posted @ 2024-11-25 16:16  Ishar-zdl  阅读(55)  评论(1编辑  收藏  举报