插值

  • 牛顿基本差商公式
    • 差商
      • 定义 f(x)f(x) 的差商为 f[x0,x1]=f(x1)−f(x0)x1−x0f[x_0,x_1] = \dfrac{f(x_1)-f(x_0)}{x_1-x_0}。
      • 定义 f(x)f(x) 的 nn 阶差商为 f[x0,…,xn]=f[x0,…,xn−1]−f[x1,…,xn]xn−x0f[x_0,\dots,x_n] = \dfrac{f[x_0,\dots,x_{n-1}] - f[x_1,\dots,x_n]}{x_n-x_0}。
      • 差商中任意几个点的顺序可以随意交换,即 f[…,xi,…,xj,… ]=[…,xj,…,xi,… ]f[\dots,x_i,\dots,x_j,\dots] = [\dots,x_j,\dots,x_i,\dots]。
      • 差商可以看作导数的离散形式。
    • 差商表
      • Difference Quotient Table
    • 公式
      • 牛顿基本差商公式为 Pn(x)=∑i=0nf[x0,…,xi]∏j=0i−1(x−xj)P_n(x) = \displaystyle\sum_{i=0}^{n} f[x_0,\dots,x_i] \prod_{j=0}^{i-1} (x - x_j)。原函数为 f(x)=Pn(x)+Rn(x)f(x) = P_n(x) + R_n(x)。
      • 展开形式:Pn(x)=f(x0)+(x−x0)f[x0,x1]+(x−x0)(x−x1)f[x0,x1,x2]+⋯P_n(x) = f(x_0) + (x - x_0)f[x_0,x_1] + (x - x_0)(x - x_1)f[x_0,x_1,x_2] + \cdots。
      • 通过差商表计算,各阶差商从差商表的最上斜行得到。
    • 余式
      • Rn(x)=f(x)−Pn(x)=f[x0,…,xn,x]∏i=0n(x−xi)R_n(x) = f(x) - P_n(x) = f[x_0,\dots,x_n,x]\displaystyle\prod_{i=0}^n(x-x_i)。
      • 在给定区间中,存在 ξ\xi 使得 f[x0,…,xn,x]=f(n+1)(ξ)(n+1)!f[x_0,\dots,x_n,x] = \dfrac{f^{(n+1)}(\xi)}{(n+1)!},即 Rn(x)=f(n+1)(ξ)(n+1)!∏i=0n(x−xi)R_n(x) = \dfrac{f^{(n+1)}(\xi)}{(n+1)!}\displaystyle\prod_{i=0}^n(x-x_i)。
      • 当 x0,…,xnx_0,\dots,x_n 趋于同一个值时,Rn(x)R_n(x) 则为泰勒公式的拉格朗日余式。
      • 在给定区间中,如果 ∣f(n+1)(x)∣|f^{(n+1)}(x)| 有上界 MM,则估计 ∣Rn(x)∣≤M(n+1)!∏i=0n(x−xi)|R_n(x)| \le \dfrac{M}{(n+1)!}\displaystyle\prod_{i=0}^n(x-x_i)。
  • 牛顿前插 / 后插公式
    • 差分
      • 定义 y=f(x)y=f(x) 的差分 Δy=f(x1)−f(x0)\Delta y=f(x_1)-f(x_0),nn 阶差分为 Δnyi=Δn−1yi+1−Δn−1yi\Delta^{n}y_i = \Delta^{n-1} y_{i+1} - \Delta^{n-1}y_i。
      • 差分同样可以使用差分表计算,类似差商表。
    • 牛顿前插公式
      • 当插值节点等距、待求点在插值区间的较前部分时,使用牛顿前插公式比较合适。
      • 设插值节点间距为 hh,t=x−x0ht = \dfrac{x-x_0}{h}。
      • P(x)=∑i=0nΔiy0i!hi∏j=0i−1(x−xj)=∑i=0n(ti)Δiy0P(x) = \displaystyle\sum_{i=0}^n \dfrac{\Delta^i y_0}{i!h^i} \prod_{j=0}^{i-1}(x-x_j) = \sum_{i=0}^n \binom{t}{i} \Delta^i y_0。
      • Δiy0\Delta^i y_0 取差分表的最上斜行。
    • 牛顿后插公式
      • 类似牛顿前插公式,但待求点在插值区间的较后部分。
      • 设 t=x−xnht=\dfrac{x - x_n}{h},注意与前插公式中的区别。
      • P(x)=∑i=0nΔiyn−ii!hi∏j=n−i+1n(x−xj)=∑i=0n(t+i−1i)Δiyn−iP(x) = \displaystyle\sum_{i=0}^n \dfrac{\Delta^i y_{n-i}}{i!h^i} \prod_{j=n-i+1}^n (x - x_j) = \sum_{i=0}^n \binom{t+i-1}{i} \Delta^i y_{n-i}。
  • 拉格朗日公式
    • 不等距节点公式
      • Ln(x)=∑i=0nf(xi)∏j≠ix−xjxi−xj=∑i=0nf(xi)ai(x)L_n(x) = \displaystyle\sum_{i=0}^n f(x_i) \prod_{j\ne i} \dfrac{x - x_j}{x_i - x_j} = \sum_{i=0}^n f(x_i) a_i(x)。
      • ai(x)=∏j≠ix−xjxi−xja_i(x) = \displaystyle\prod_{j\ne i} \dfrac{x - x_j}{x_i - x_j} 称为插值基函数。
        • 对于插值节点,ai(xj)={1,i=j0,i≠ja_i(x_j) = \left\{\begin{matrix} 1, & i = j \\ 0,& i \ne j \end{matrix}\right.。
        • ∑i=0nai(x)=1\displaystyle\sum_{i=0}^n a_i(x) = 1 恒成立。
    • 舍入误差估计
      • ∣ϵ∣=∣∑i=0nai(x)Δyi+yiΔai(x)∣≤∑i=0n(∣ai(x)∣∣Δyi∣+∣yi∣∣Δai(x)∣)|\epsilon| = \displaystyle \left| \sum_{i=0}^n a_i(x)\Delta y_i + y_i\Delta a_i(x) \right| \le \sum_{i=0}^n \left(|a_i(x)| |\Delta y_i| + |y_i| |\Delta a_i(x)|\right)。
      • 如果 ∣Δyi∣=∣Δai(x)∣=Δ|\Delta y_i| = |\Delta a_i(x)| = \Delta,则 ∣ϵ∣≤∑i=0n(∣Δyi∣+∣Δai(x)∣)Δ|\epsilon| \le \displaystyle\sum_{i=0}^n (|\Delta y_i| + |\Delta a_i(x)|) \Delta。
    • 等距节点公式
      • 已知间距 h,t=x−x0hh,t=\dfrac{x-x_0}{h},Ln(x)=∑i=0n(−1)n−i∏j=0n(t−j)i!(n−i)!(t−i)f(xi)L_n(x) = \displaystyle\sum_{i=0}^n \dfrac{(-1)^{n-i} \prod_{j=0}^n (t-j)}{i!(n-i)!(t-i)} f(x_i)。
    • 分段线性插值公式
      • t=x−xiht = \dfrac{x-x_i}{h}
      • L1(x)=(1−t)f(xi)+tf(xi+1)=f(xi)+(f(xi+1)−f(x0))tL_1(x) = (1-t)f(x_i) + tf(x_{i+1}) = f(x_i) + (f(x_{i+1}) - f(x_0)) t
      • ∣R1(x)∣=∣f′′(ξ)2(x−xi)(x−xi+1)∣≤∣M2h2t(t−1)∣≤∣M8h2∣|R_1(x)| = \left|\dfrac{f''(\xi)}{2}(x-x_i)(x-x_{i+1})\right| \le \left|\dfrac{M}{2}h^2t(t-1)\right| \le \left|\dfrac{M}{8}h^2\right|
    • 分段三点插值公式
      • t=x−xiht = \dfrac{x-x_i}{h}
      • L2(x)=t2−t2yi−1+(1−t2)yi+t2+t2yi+1L_2(x) = \dfrac{t^2 - t}{2} y_{i-1} + (1-t^2) y_i + \dfrac{t^2 + t}{2} y_{i+1}
  • 埃尔米特插值公式
    • 定义
      • 埃尔米特插值公式根据给定的函数值和一定的导数值插值,多项式同时满足函数值和导数值条件。
    • 牛顿型
      • 若 xix_i 有 mim_i 阶导数作为条件,则在差商表中 xix_i 重复 mi+1m_i+1 次。
      • 重复 xix_i 的差商用导数代替,即 f[xi,xi]=f′(xi),f[xi,xi,xi]=f′′(xi)f[x_i,x_i] = f'(x_i),f[x_i,x_i,x_i]=f''(x_i) 等。
      • 除此之外使用牛顿基本差商公式求解。
    • 降阶型
      • 已知 n+1n+1 个点 x0,…,xnx_0,\dots,x_n 的函数值和 mm 阶导数,则可得 p=(m+1)(n+1)−1p=(m+1)(n+1)-1 次多项式。
      • 令 Pp(x)=Ln1(x)+Pp−(n+1)(x)∏i=0n(x−xi)P_p(x)=L_{n1}(x) + P_{p-(n+1)}(x)\displaystyle\prod_{i=0}^n (x-x_i),Pp−(n+1)(x)=Ln2(x)+Pp−2(n+1)(x)∏i=0n(x−xi)P_{p-(n+1)}(x) = L_{n2}(x) + P_{p-2(n+1)}(x)\displaystyle\prod_{i=0}^n (x-x_i) 等。
      • 先求 Lni(x)L_{ni}(x),列出 Pp−(i−1)(n+1)(x)=Lni(x)+Pp−i(n+1)(x)∏i=0n(x−xi)P_{p-(i-1)(n+1)}(x)=L_{ni}(x) + P_{p-i(n+1)}(x)\displaystyle\prod_{i=0}^n (x-x_i),利用已知条件解出 Pp−i(n+1)(x)P_{p-i(n+1)}(x) 在各点的函数和各阶导数值。
      • 最终组合各 Lni(x)L_{ni}(x),得插值多项式。
    • 拉格朗日型
      • 已知 n+1n+1点 x0,…,xnx_0,\dots,x_n 的函数值和导数,可得 2n+12n+1 次多项式。
      • 令 P2n+1(x)=∑i=0n(αi(x)yi+βi(x)yi′)P_{2n+1}(x) = \displaystyle\sum_{i=0}^n (\alpha_i(x) y_i + \beta_i(x) y'_i),其中 αi(xj)=1i=j,βi(xj)=0,βi′(xj)=1i=j\alpha_i(x_j) = 1_{i=j},\beta_i(x_j)=0,\beta_i'(x_j)=1_{i=j}。
      • li(x)=∏j≠ix−xjxi−xjl_i(x) = \prod_{j\ne i} \dfrac{x - x_j}{x_i - x_j}
      • αi(x)=[1−2(x−xi)∑j≠i1xi−xj]li2(x)\alpha_i(x) = \left[1 - 2(x-x_i)\displaystyle\sum_{j\ne i}\dfrac{1}{x_i-x_j}\right]l_i^2(x)
      • βi(x)=(x−xi)li2(x)\beta_i(x) = (x - x_i)l_i^2(x)
  • 反插值
    • 反函数法
      • 已知 y=f(x)y=f(x),且存在反函数 x=f−1(y)x=f^{-1}(y),则可以直接利用普通的方法插值 f−1f^{-1}。
    • 正函数法
      • 已知 y=f(x)y=f(x),在 [x0,x1][x_0,x_1] 中反插值 y=c∈[y0,y1]y=c \in [y_0,y_1]。
      • 利用牛顿基本差商公式 Pn(x)=cP_n(x)=c,得出两种迭代公式:
        • x=x0+c−f(x0)f[x0,x1]−∑i=2f[x0,…,xi]f[x0,x1]∏j=0i−1(x−xj)=m1+∑i=2nmi∏j=0i−1(x−xj)x = x_0 + \dfrac{c - f(x_0)}{f[x_0,x_1]} - \displaystyle\sum_{i=2}\dfrac{f[x_0,\dots,x_i]}{f[x_0,x_1]} \prod_{j=0}^{i-1}(x-x_j) = m_1 + \displaystyle\sum_{i=2}^n m_i \prod_{j=0}^{i-1}(x-x_j)
        • x=x0+c−f(x0)∑i=1nf[x0,…,xi]∏j=1i−1(x−xj)x = x_0 + \dfrac{c - f(x_0)}{\displaystyle\sum_{i=1}^n f[x_0,\dots,x_i] \prod_{j=1}^{i-1} (x-x_j)}
      • 迭代求解的前 nn 步中,第 ii 步使用迭代公式的和式的前 ii 项,之后使用完整的迭代公式。