插值

  • 牛顿基本差商公式
    • 差商
      • 定义 f(x)f(x) 的差商为 f[x0,x1]=f(x1)f(x0)x1x0f[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,,xn1]f[x1,,xn]xnx0f[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=0i1(xxj)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)+(xx0)f[x0,x1]+(xx0)(xx1)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(xxi)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(xxi)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(xxi)|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=Δn1yi+1Δn1yi\Delta^{n}y_i = \Delta^{n-1} y_{i+1} - \Delta^{n-1}y_i
      • 差分同样可以使用差分表计算,类似差商表。
    • 牛顿前插公式
      • 当插值节点等距、待求点在插值区间的较前部分时,使用牛顿前插公式比较合适。
      • 设插值节点间距为 hht=xx0ht = \dfrac{x-x_0}{h}
      • P(x)=i=0nΔiy0i!hij=0i1(xxj)=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=xxnht=\dfrac{x - x_n}{h},注意与前插公式中的区别。
      • P(x)=i=0nΔiynii!hij=ni+1n(xxj)=i=0n(t+i1i)ΔiyniP(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)jixxjxixj=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)=jixxjxixja_i(x) = \displaystyle\prod_{j\ne i} \dfrac{x - x_j}{x_i - x_j} 称为插值基函数。
        • 对于插值节点,ai(xj)={1,i=j0,ija_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=xx0hh,t=\dfrac{x-x_0}{h}Ln(x)=i=0n(1)nij=0n(tj)i!(ni)!(ti)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=xxiht = \dfrac{x-x_i}{h}
      • L1(x)=(1t)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(xxi)(xxi+1)M2h2t(t1)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=xxiht = \dfrac{x-x_i}{h}
      • L2(x)=t2t2yi1+(1t2)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_imim_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(xxi)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)+Pp2(n+1)(x)i=0n(xxi)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(i1)(n+1)(x)=Lni(x)+Ppi(n+1)(x)i=0n(xxi)P_{p-(i-1)(n+1)}(x)=L_{ni}(x) + P_{p-i(n+1)}(x)\displaystyle\prod_{i=0}^n (x-x_i),利用已知条件解出 Ppi(n+1)(x)P_{p-i(n+1)}(x) 在各点的函数和各阶导数值。
      • 最终组合各 Lni(x)L_{ni}(x),得插值多项式。
    • 拉格朗日型
      • 已知 n+1n+1x0,,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)=jixxjxixjl_i(x) = \prod_{j\ne i} \dfrac{x - x_j}{x_i - x_j}
      • αi(x)=[12(xxi)ji1xixj]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)=(xxi)li2(x)\beta_i(x) = (x - x_i)l_i^2(x)
  • 反插值
    • 反函数法
      • 已知 y=f(x)y=f(x),且存在反函数 x=f1(y)x=f^{-1}(y),则可以直接利用普通的方法插值 f1f^{-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+cf(x0)f[x0,x1]i=2f[x0,,xi]f[x0,x1]j=0i1(xxj)=m1+i=2nmij=0i1(xxj)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+cf(x0)i=1nf[x0,,xi]j=1i1(xxj)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 项,之后使用完整的迭代公式。