Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

5.1 代数插值

对应教材 5.1.1–5.1.2、定理 5.1、例 1;对应老师第 9 讲末的插值引论。 主线:先问“存在唯一吗”,再写“Lagrange/Newton 怎么算”,最后看“误差与 Runge 现象”。

5.1.1 一元函数插值

给定互异节点 x0,…,xnx_0,\dots,x_n 和函数值 f(xi)f(x_i),求次数不超过 nn 的多项式 pn(x)p_n(x),使 pn(xi)=f(xi),i=0,…,n. p_n(x_i)=f(x_i),\qquad i=0,\dots,n. 设 pn(x)=∑k=0nckφk(x)p_n(x)=\sum_{k=0}^n c_k\varphi_k(x),插值条件给出线性方程组 ∑k=0nckφk(xi)=f(xi),i=0,…,n. \sum_{k=0}^n c_k\varphi_k(x_i)=f(x_i),\qquad i=0,\dots,n. 当 {φk}{\varphi_k} 取 1,x,…,xn1,x,\dots,x^n 时,系数矩阵是范德蒙德矩阵 V=(1x0⋯x0n⋮⋮1xn⋯xnn),det⁡V=∏0≤i<j≤n(xj−xi)≠0. V=\begin{pmatrix} 1&amp;x_0&amp;\cdots&amp;x_0^n\ \vdots&amp;&amp;&amp;\vdots\ 1&amp;x_n&amp;\cdots&amp;x_n^n \end{pmatrix},\qquad \det V=\prod_{0\le i\lt j\le n}(x_j-x_i)\ne0. 所以插值多项式存在且唯一。

老师强调的“换基”:范德蒙德矩阵的条件数随 nn 指数增长(等距节点下 n=12n=12 可到 10810^8 量级),直接解 Vc=yVc=y 会丢有效数字。Lagrange/Newton 不是“另一个公式”,而是换一组基,让系数矩阵变成单位矩阵或三角矩阵。存在唯一不等于“能算出来”。

Lagrange 插值

取基函数 ℓk(x)=∏j≠kx−xjxk−xj,ℓk(xj)=δkj. \ell_k(x)=\prod_{j\ne k}\frac{x-x_j}{x_k-x_j}, \qquad \ell_k(x_j)=\delta_{kj}. 则 pn(x)=∑k=0nf(xk)ℓk(x). p_n(x)=\sum_{k=0}^n f(x_k)\ell_k(x). 优点:公式对称、直接;缺点:增加一个节点要全部重算。

例 1(教材 5.1.1):f(x)=2xf(x)=2^x,节点 x=−1,0,1x=-1,0,1,f=0.5,1,2f=0.5,1,2。二次 Lagrange 插值: p2(x)=(x−0)(x−1)(−1−0)(−1−1)0.5+(x+1)(x−1)(0+1)(0−1)1+(x+1)(x−0)(1+1)(1−0)2=0.25x2+0.75x+1. p_2(x)=\frac{(x-0)(x-1)}{(-1-0)(-1-1)}0.5 +\frac{(x+1)(x-1)}{(0+1)(0-1)}1 +\frac{(x+1)(x-0)}{(1+1)(1-0)}2 =0.25x^2+0.75x+1. 于是 20.3≈p2(0.3)=1.24752^{0.3}\approx p_2(0.3)=1.2475。

Newton 插值

把基换成 1,x−x0,(x−x0)(x−x1),…,∏j=0n−1(x−xj), 1,\quad x-x_0,\quad (x-x_0)(x-x_1),\quad\dots,\quad\prod_{j=0}^{n-1}(x-x_j), 系数就是差商: pn(x)=f[x0]+f[x0,x1](x−x0)+⋯+f[x0,…,xn]∏j=0n−1(x−xj). p_n(x)=f[x_0]+f[x_0,x_1](x-x_0)+\cdots+f[x_0,\dots,x_n]\prod_{j=0}^{n-1}(x-x_j). 差商递推: f[xi]=f(xi),f[xi,…,xi+k]=f[xi+1,…,xi+k]−f[xi,…,xi+k−1]xi+k−xi. f[x_i]=f(x_i),\qquad f[x_i,\dots,x_{i+k}]=\frac{f[x_{i+1},\dots,x_{i+k}]-f[x_i,\dots,x_{i+k-1}]}{x_{i+k}-x_i}. 例 1 的差商表:f[−1,0]=0.5f[-1,0]=0.5,f[0,1]=1f[0,1]=1,f[−1,0,1]=0.25f[-1,0,1]=0.25,故 p2(x)=0.5+0.5(x+1)+0.25(x+1)x=0.25x2+0.75x+1, p_2(x)=0.5+0.5(x+1)+0.25(x+1)x=0.25x^2+0.75x+1, 与 Lagrange 结果相同(唯一性)。增加节点时只需在末尾加一项,这是 Newton 的优点。

余项与误差

定理 5.1(插值余项):设 f∈Cn+1[a,b]f\in C^{n+1}[a,b],pnp_n 是 nn 次插值多项式,则对任意 x∈[a,b]x\in[a,b],存在 ξ∈(a,b)\xi\in(a,b),使 Rn(x)=f(x)−pn(x)=f(n+1)(ξ)(n+1)!∏i=0n(x−xi). R_n(x)=f(x)-p_n(x)=\frac{f^{(n+1)}(\xi)}{(n+1)!}\prod_{i=0}^n(x-x_i). 若 ∣f(n+1)(x)∣≤Mn+1|f^{(n+1)}(x)|\le M_{n+1},则 ∣Rn(x)∣≤Mn+1(n+1)!∏i=0n∣x−xi∣. |R_n(x)|\le\frac{M_{n+1}}{(n+1)!}\prod_{i=0}^n|x-x_i|.

例 1 中 f′′′(x)=2x(ln⁡2)3f&#x27;&#x27;&#x27;(x)=2^x(\ln2)^3,在 [−1,1][-1,1] 上最大 0.66600.6660,故 ∣20.3−p2(0.3)∣≤0.66603!∣(0.3+1)(0.3)(0.3−1)∣≈0.0303. |2^{0.3}-p_2(0.3)|\le\frac{0.6660}{3!}|(0.3+1)(0.3)(0.3-1)|\approx0.0303. 即 p2(0.3)=1.2475p_2(0.3)=1.2475 至少有两位有效数字。

Runge 现象与分段插值

高次插值并不一定更好。Runge 例子: f(x)=11+x2,x∈[−5,5], f(x)=\frac{1}{1+x^2},\qquad x\in[-5,5], 取等距节点 xi=−5+10nix_i=-5+\frac{10}{n}i。nn 增大时,区间中部逼近变好,但两端剧烈振荡,n→∞n\to\infty 也不一致收敛。原因:余项中的 ∏(x−xi)\prod(x-x_i) 在两端很大,高次多项式对节点分布极敏感。

实际计算常用分段低次插值:把区间分成小段,每段用低次多项式;必要时用三次样条保证一阶/二阶导数连续(见 5.3)。

5.1.2 二元函数插值(教材有、课堂未讲)

给定矩形网格 (xi,yj)(x_i,y_j) 上的值 f(xi,yj)f(x_i,y_j),取二元多项式 pn,m(x,y)=∑k=0n∑r=0mckrxkyr, p_{n,m}(x,y)=\sum_{k=0}^n\sum_{r=0}^m c_{kr}x^ky^r, 使其在网格点上等于 ff。基函数组在网格点上线性无关,故插值多项式存在唯一。实际常用张量积形式:先对 xx 插值,再对 yy 插值;计算量与一维同阶。

例 2(教材 5.1.2):给四点 (0,0,1),(1,0,2),(0,1,3),(1,1,5)(0,0,1),(1,0,2),(0,1,3),(1,1,5),求双一次插值 p(x,y)=a+bx+cy+dxy. p(x,y)=a+bx+cy+dxy. 代入得 a=1,b=1,c=2a=1,b=1,c=2,再由 p(1,1)=5p(1,1)=5 得 d=1d=1,故 p(x,y)=1+x+2y+xy. p(x,y)=1+x+2y+xy. 双一次插值在每条网格线上都是一次函数,适合规则网格上的快速查表;它不是全局二次,不能随便外推。

覆盖核对

本节覆盖教材 5.1.1–5.1.2、定理 5.1、例 1–2;老师第 9 讲末的插值引论。下一节:5.2 Hermite 插值。