多项式的表达有两种方式:点值表达与系数表达,例如:对于多项式 \(f(x)=x^3-2x^2+1\),使用系数表达就是\([1,-2,0,1]\),每一项对应相应幂次的系数。其点值表达可以表示为\([(1,0),(2,1),(3,10),(4,33)]\),这些点是\(f(x)\)在点\(1,2,3,4\)处的取值。
多项式插值的基本定理指出,对于\(n+1\)个互不相同的点\((x_0, y_0), (x_1, y_1), \ldots, (x_n, y_n)\),存在唯一 一个次数不超过\(n\) 的多项式 \(f(x)\),使得 \(f(x_i) = y_i\) 对所有 \(i\)成立。拉格朗日差值与拉格朗日重心差值可以将多项式的点值表达转化为系数表达(还有FFT、NTT等方法,这里不做介绍)。
拉格朗日差值
拉格朗日插值法(Lagrange interpolation)的核心是拉格朗日基函数\(\ell_i(x)\),假设我们有\(n+1\)个互不相同的点\((x_0, y_0), (x_1, y_1), \ldots, (x_n, y_n)\),拉格朗日基函数\(\ell_i(x)\)定义如下:
\( \ell_i(x) = \prod \limits_{{0 \leq j \leq n,j \neq i}} \frac{x - x_j}{x_i - x_j} \)
这些基函数具有以下性质:
1. 唯一性:每个\(\ell_i(x)\) 是一个\(n\)次多项式。
2. 插值性质:\(\ell_i(x_j) = 0\) 当\(j \neq i\),且 \(\ell_i(x_i) = 1\)。
拉格朗日插值公式通过将这些基函数与对应的 \(y_i\) 相乘并求和来构造多项式 \(f(x)\):
\(f(x) = \sum \limits_{i=0}^{n} y_i \ell_i(x)\)
这个构造方式保证了\(f(x)\) 在每个\(x_i\) 处取值为\(y_i\)的\(n\)次多项式。拉格朗日算法简单明了,对于简单的差值算法十分适用。
拉格朗日重心差值
拉格朗日重心插值(Lagrange barycentric interpolation)是拉格朗日插值法的一种改进形式,它通过引入重心坐标来简化插值公式的计算和评估。这种形式的插值在数值分析中非常有用,尤其是在需要频繁更新插值点或重新计算插值多项式的情况下。
同样假设我们有一组 \(n+1\) 个互不相同的点\((x_0, y_0), (x_1, y_1), \ldots, (x_n, y_n)\)。拉格朗日重心插值公式可以表示为:
\(f(x) = \frac{\sum \limits_{i=0}{n} \frac{w_i}{x - x_i} y_i}{\sum \limits_{i=0}{n} \frac{w_i}{x - x_i}}\)
其中,\(w_i\)是重心权重,定义为:
\(w_i = \frac{1}{\prod \limits_{{j=0, j \neq i}}^{n} (x_i - x_j)}\)
重心权重 \(w_i\) 的计算只依赖于插值点的位置,而不依赖于函数值 \(y_i\)。因此,一旦插值点的位置(也就是\(x\))确定,重心权重 \(w_i\) 可以预先计算并存储起来,从而在后续的插值计算中节省时间。
优点
1. 简化计算:重心插值公式在计算插值多项式时比传统的拉格朗日插值公式更高效,尤其是在需要频繁更新插值点或重新计算插值多项式的情况下。
2. 数值稳定性:重心插值法在数值上更稳定,尤其是在插值点密集或接近等距分布的情况下。
应用:
拉格朗日重心插值在科学计算和工程应用中非常有用,特别是在以下场景:
动态插值:当插值点需要频繁更新时,重心插值法可以快速重新计算插值多项式。
高精度计算:在需要高精度数值计算的场景中,重心插值法可以提供更稳定的插值结果。
拉格朗日重心插值是拉格朗日插值法的一种改进形式,通过引入重心权重简化了插值公式的计算和评估,提高了数值稳定性和计算效率。
对比
拉格朗日插值和拉格朗日重心插值都是用于多项式插值的方法,它们在数学上等价,但在实际计算和应用中有所不同。总结如下:
- 计算效率:拉格朗日重心插值通常比传统的拉格朗日插值更高效,尤其是在需要频繁更新插值点或重新计算插值多项式的情况下。
- 数值稳定性:拉格朗日重心插值在数值上更稳定,尤其是在插值点密集或接近等距分布的情况下。(关于数值稳定性可以通过 龙格现象来理解)
- 应用场景:拉格朗日插值适用于简单的插值问题,而拉格朗日重心插值适用于需要高效率和高稳定性的复杂插值问题。
文章评论