← 返回 资料库 › 应用与计算数学 › 数值分析 应用与计算数学
插值与逼近 构造一个经过给定数据点、或紧密逼近某个复杂函数的函数。
直观 直觉:用曲线连接数据点 气象站在一天中的几个时刻记录气温,传感器报告若干离散测量值,或工程师只有一张列出少量数值的表格——无论哪种情况,你都拥有一份有限的点列表 ( x 0 , y 0 ) , ( x 1 , y 1 ) , … , ( x n , y n ) (x_0,y_0), (x_1,y_1), \dots, (x_n,y_n) ( x 0 , y 0 ) , ( x 1 , y 1 ) , … , ( x n , y n ) ,你想推测它们之间的取值,或画出一条穿过所有这些点的光滑曲线。插值是构造一个恰好经过每一个点的函数的技艺,而更广义的逼近则是寻找一个与某个复杂函数保持接近、但未必逐点吻合的函数。
这条三次曲线 P ( x ) = x 3 − x 2 − 2 x + 2 P(x)=x^3-x^2-2x+2 P ( x ) = x 3 − x 2 − 2 x + 2 是唯一一个次数不超过 3 3 3 且经过四个点 ( − 1 , 2 ) (-1,2) ( − 1 , 2 ) 、( 0 , 2 ) (0,2) ( 0 , 2 ) 、( 1 , 0 ) (1,0) ( 1 , 0 ) 和 ( 2 , 2 ) (2,2) ( 2 , 2 ) 的多项式:拖动 a , b , c , d a,b,c,d a , b , c , d ,观察恰好四个系数就足以确定一条穿过四个数据点的曲线——这正是多项式插值的本质。 大学 定义:插值问题 定义: 多项式插值
给定 n + 1 n+1 n + 1 个互异节点 x 0 , x 1 , … , x n x_0, x_1, \dots, x_n x 0 , x 1 , … , x n 及对应的值 y 0 , y 1 , … , y n y_0, y_1, \dots, y_n y 0 , y 1 , … , y n (通常 y i = f ( x i ) y_i=f(x_i) y i = f ( x i ) 对某函数 f f f 成立),插值问题要求找到一个次数不超过 n n n 的多项式 P P P ,使得对每个 i i i 都有 P ( x i ) = y i P(x_i)=y_i P ( x i ) = y i 。拉格朗日基多项式 L i L_i L i 给出了一种显式构造方法。
L i ( x ) = ∏ j ≠ i x − x j x i − x j L_i(x) = \prod_{j \ne i} \dfrac{x - x_j}{x_i - x_j} L i ( x ) = j = i ∏ x i − x j x − x j 每个基多项式 L i L_i L i 的构造使其在其他所有节点处为零、在自身节点处等于 1 1 1 :当 j ≠ i j\ne i j = i 时代入 x = x j x=x_j x = x j ,分子中的因子 ( x j − x j ) = 0 (x_j-x_j)=0 ( x j − x j ) = 0 ,故 L i ( x j ) = 0 L_i(x_j)=0 L i ( x j ) = 0 ;而代入 x = x i x=x_i x = x i 时分子与分母相同,得 L i ( x i ) = 1 L_i(x_i)=1 L i ( x i ) = 1 。用目标值对这些构件加权求和,即可直接得到插值多项式。
P ( x ) = ∑ i = 0 n y i L i ( x ) P(x) = \sum_{i=0}^{n} y_i\, L_i(x) P ( x ) = i = 0 ∑ n y i L i ( x ) 插值与逼近方法比较 方法 思路 跨节点的光滑度 缺点 拉格朗日 经过所有节点的单一多项式 P ( x ) = ∑ i y i L i ( x ) P(x)=\sum_i y_i L_i(x) P ( x ) = ∑ i y i L i ( x ) 无限光滑(因为是单个多项式) 等距节点下的高次多项式会剧烈振荡(龙格现象) 牛顿差商 与拉格朗日相同的多项式,逐节点递增构造 无限光滑(相同的多项式) 增加节点代价小,但仍会出现相同的高次振荡问题 自然三次样条 分段三次函数,每个子区间一个三次式,平滑衔接 C 2 C^2 C 2 (直到二阶导数都连续)没有单一的整体公式;必须求解线性方程组来确定各段
大学 关键定理 给定 n + 1 n+1 n + 1 个互异节点 x 0 , x 1 , … , x n x_0, x_1, \dots, x_n x 0 , x 1 , … , x n 及值 y 0 , y 1 , … , y n y_0, y_1, \dots, y_n y 0 , y 1 , … , y n ,恰好存在一个次数不超过 n n n 的多项式 P P P ,使得对每个 i = 0 , … , n i=0,\dots,n i = 0 , … , n 都有 P ( x i ) = y i P(x_i)=y_i P ( x i ) = y i 。
为什么成立? n次多项式恰好有n+1个自由系数,而固定n+1个点的值恰好用尽这么多自由度——不多不少——因此只有容纳一个解的余地,没有容纳两个不同解的余地。
证明 第一步(存在性)。拉格朗日构造 P ( x ) = ∑ i = 0 n y i L i ( x ) P(x) = \sum_{i=0}^{n} y_i L_i(x) P ( x ) = ∑ i = 0 n y i L i ( x ) (其中 L i ( x ) = ∏ j ≠ i x − x j x i − x j L_i(x) = \prod_{j\ne i} \dfrac{x-x_j}{x_i-x_j} L i ( x ) = ∏ j = i x i − x j x − x j )已经对每个 k k k 满足 P ( x k ) = y k P(x_k)=y_k P ( x k ) = y k ,因为 L i ( x k ) L_i(x_k) L i ( x k ) 在 i = k i=k i = k 时等于 1 1 1 ,否则为 0 0 0 ,故求和坍缩为单项 y k ⋅ 1 = y k y_k \cdot 1 = y_k y k ⋅ 1 = y k 。因此至少存在一个满足条件的 P P P ,且每个 L i L_i L i 的次数恰为 n n n (n n n 个一次因子之积),故 P P P 的次数不超过 n n n 。
第二步(假设存在两个解)。设 Q Q Q 是任意另一个次数不超过 n n n 且对每个 i i i 满足 Q ( x i ) = y i Q(x_i)=y_i Q ( x i ) = y i 的多项式。考虑差 D ( x ) = P ( x ) − Q ( x ) D(x) = P(x) - Q(x) D ( x ) = P ( x ) − Q ( x ) 。由于 P P P 与 Q Q Q 的次数都不超过 n n n ,故 D D D 亦然。
第三步(计数差的根)。对每个节点 x i x_i x i ,有 D ( x i ) = P ( x i ) − Q ( x i ) = y i − y i = 0 D(x_i) = P(x_i)-Q(x_i) = y_i - y_i = 0 D ( x i ) = P ( x i ) − Q ( x i ) = y i − y i = 0 。由于存在 n + 1 n+1 n + 1 个互异节点 x 0 , x 1 , … , x n x_0, x_1, \dots, x_n x 0 , x 1 , … , x n ,故 D D D 至少有 n + 1 n+1 n + 1 个互异的根。
第四步(迫使D恒为零)。一个次数不超过 n n n 的非零多项式至多有 n n n 个根(每个根贡献一个一次因子,而次数为 n n n 的多项式不能包含超过 n n n 个这样的因子)。由于 D D D 有 n + 1 n+1 n + 1 个根,超出其次数所允许的数目,除非 D D D 是零多项式,因此我们得出 D ( x ) ≡ 0 D(x)\equiv0 D ( x ) ≡ 0 ,即 Q = P Q=P Q = P 。故第一步所得的插值多项式是唯一的。
设 f f f 在包含相异节点 x 0 , x 1 , … , x n x_0, x_1, \dots, x_n x 0 , x 1 , … , x n 和点 x x x 的区间上 ( n + 1 ) (n+1) ( n + 1 ) 次连续可微,P P P 是在这些节点处插值 f f f 的 n n n 次多项式。则存在该区间内的 ξ \xi ξ 使得 f ( x ) − P ( x ) = f ( n + 1 ) ( ξ ) ( n + 1 ) ! ∏ i = 0 n ( x − x i ) f(x) - P(x) = \dfrac{f^{(n+1)}(\xi)}{(n+1)!} \prod_{i=0}^{n} (x - x_i) f ( x ) − P ( x ) = ( n + 1 )! f ( n + 1 ) ( ξ ) ∏ i = 0 n ( x − x i ) 成立。
为什么成立? 插值多项式在节点处与f精确吻合,但对节点之间的f一无所知,因此剩余误差必须在每个节点处为零——这正是乘积项所强制的——并由一个衡量f弯曲程度(超出n次多项式所能捕捉范围)的剩余导数来调节大小。
证明 第一步(巧妙的辅助函数)。固定一个不是节点的点 x x x (若是节点,误差平凡地为 0 0 0 )。设 w ( t ) = ∏ i = 0 n ( t − x i ) w(t) = \prod_{i=0}^{n} (t - x_i) w ( t ) = ∏ i = 0 n ( t − x i ) ,并定义常数 c = f ( x ) − P ( x ) w ( x ) c = \dfrac{f(x)-P(x)}{w(x)} c = w ( x ) f ( x ) − P ( x ) (由于 w ( x ) ≠ 0 w(x)\ne0 w ( x ) = 0 故有良好定义)。定义辅助函数 g ( t ) = f ( t ) − P ( t ) − c w ( t ) g(t) = f(t) - P(t) - c\, w(t) g ( t ) = f ( t ) − P ( t ) − c w ( t ) 。
第二步(计数g的根)。在每个节点 x i x_i x i 处,由插值性质 f ( x i ) − P ( x i ) = 0 f(x_i)-P(x_i)=0 f ( x i ) − P ( x i ) = 0 ,且由 w w w 的定义 w ( x i ) = 0 w(x_i)=0 w ( x i ) = 0 ,故在全部 n + 1 n+1 n + 1 个节点处都有 g ( x i ) = 0 g(x_i)=0 g ( x i ) = 0 。此外,由 c c c 的选取,g ( x ) = f ( x ) − P ( x ) − c w ( x ) = f ( x ) − P ( x ) − [ f ( x ) − P ( x ) ] = 0 g(x) = f(x)-P(x) - c\,w(x) = f(x)-P(x) - [f(x)-P(x)] = 0 g ( x ) = f ( x ) − P ( x ) − c w ( x ) = f ( x ) − P ( x ) − [ f ( x ) − P ( x )] = 0 。故 g g g 有 n + 2 n+2 n + 2 个互异的根:n + 1 n+1 n + 1 个节点加上 x x x 本身。
第三步(反复应用罗尔定理)。在 g g g 的每对相邻根之间(n + 2 n+2 n + 2 个根之间共有 n + 1 n+1 n + 1 个这样的间隔),罗尔定理给出一点使 g ′ g' g ′ 为零,故 g ′ g' g ′ 至少有 n + 1 n+1 n + 1 个根。对 g ′ , g ′ ′ , … g', g'', \dots g ′ , g ′′ , … 重复此论证,每求一次导就减少一个根,故经过 n + 1 n+1 n + 1 次应用后,g ( n + 1 ) g^{(n+1)} g ( n + 1 ) 在该区间内至少有一个根 ξ \xi ξ 。
第四步(求导并解出误差)。由于 P P P 的次数不超过 n n n ,其 ( n + 1 ) (n+1) ( n + 1 ) 阶导数为 0 0 0 ;而 w w w 是次数为 n + 1 n+1 n + 1 的首一多项式,故对一切 t t t 都有 w ( n + 1 ) ( t ) = ( n + 1 ) ! w^{(n+1)}(t) = (n+1)! w ( n + 1 ) ( t ) = ( n + 1 )! 。对 g g g 求导得 g ( n + 1 ) ( t ) = f ( n + 1 ) ( t ) − 0 − c ( n + 1 ) ! g^{(n+1)}(t) = f^{(n+1)}(t) - 0 - c\,(n+1)! g ( n + 1 ) ( t ) = f ( n + 1 ) ( t ) − 0 − c ( n + 1 )! ,令 g ( n + 1 ) ( ξ ) = 0 g^{(n+1)}(\xi)=0 g ( n + 1 ) ( ξ ) = 0 得 c = f ( n + 1 ) ( ξ ) ( n + 1 ) ! c = \dfrac{f^{(n+1)}(\xi)}{(n+1)!} c = ( n + 1 )! f ( n + 1 ) ( ξ ) 。回想 c = f ( x ) − P ( x ) w ( x ) c=\dfrac{f(x)-P(x)}{w(x)} c = w ( x ) f ( x ) − P ( x ) 并解出误差,恰好得到 f ( x ) − P ( x ) = f ( n + 1 ) ( ξ ) ( n + 1 ) ! ∏ i = 0 n ( x − x i ) f(x) - P(x) = \dfrac{f^{(n+1)}(\xi)}{(n+1)!} \prod_{i=0}^{n} (x - x_i) f ( x ) − P ( x ) = ( n + 1 )! f ( n + 1 ) ( ξ ) ∏ i = 0 n ( x − x i ) 。
给定满足 x 0 < x 1 < ⋯ < x n x_0<x_1<\dots<x_n x 0 < x 1 < ⋯ < x n 的 n + 1 n+1 n + 1 个点 ( x 0 , y 0 ) , … , ( x n , y n ) (x_0,y_0),\dots,(x_n,y_n) ( x 0 , y 0 ) , … , ( x n , y n ) ,存在唯一函数 S S S ,它在每个子区间 [ x i , x i + 1 ] [x_i,x_{i+1}] [ x i , x i + 1 ] 上是三次多项式,在整个 [ x 0 , x n ] [x_0,x_n] [ x 0 , x n ] 上二次连续可微,对每个 i i i 满足 S ( x i ) = y i S(x_i)=y_i S ( x i ) = y i ,并满足自然边界条件 S ′ ′ ( x 0 ) = S ′ ′ ( x n ) = 0 S''(x_0)=S''(x_n)=0 S ′′ ( x 0 ) = S ′′ ( x n ) = 0 。
为什么成立? 经过多个点的单一高次多项式往往会剧烈摆动,但将许多平缓的三次片段拼接起来、只要求它们在接缝处平滑衔接,就恰好提供了足够的自由度来拟合数据而不产生剧烈振荡,而自然边界条件恰好提供了使整个方程组可解所需的两个额外方程。
证明 第一步(未知量:各节点处的二阶导数)。设 i = 0 , … , n i=0,\dots,n i = 0 , … , n 时 M i = S ′ ′ ( x i ) M_i = S''(x_i) M i = S ′′ ( x i ) 。自然边界条件立即固定 M 0 = 0 M_0=0 M 0 = 0 与 M n = 0 M_n=0 M n = 0 ,剩下 n − 1 n-1 n − 1 个未知量 M 1 , … , M n − 1 M_1,\dots,M_{n-1} M 1 , … , M n − 1 待定。
第二步(由M值重构每个三次段)。在 [ x i , x i + 1 ] [x_i,x_{i+1}] [ x i , x i + 1 ] 上,由于 S S S 是三次的,故 S ′ ′ S'' S ′′ 是线性的,必为经过 ( x i , M i ) (x_i,M_i) ( x i , M i ) 与 ( x i + 1 , M i + 1 ) (x_{i+1},M_{i+1}) ( x i + 1 , M i + 1 ) 的直线。将该线性函数积分两次,并利用 S ( x i ) = y i S(x_i)=y_i S ( x i ) = y i 与 S ( x i + 1 ) = y i + 1 S(x_{i+1})=y_{i+1} S ( x i + 1 ) = y i + 1 固定两个积分常数,便完全确定了该段上的 S S S ,用 M i , M i + 1 , y i , y i + 1 M_i, M_{i+1}, y_i, y_{i+1} M i , M i + 1 , y i , y i + 1 及间距 h i = x i + 1 − x i h_i=x_{i+1}-x_i h i = x i + 1 − x i 表示。因此一旦所有 M i M_i M i 已知,S S S 便完全确定。
第三步(斜率匹配给出线性方程组)。按构造,S S S 与 S ′ ′ S'' S ′′ 在每个节点处已经连续。要求一阶导数 S ′ S' S ′ 在每个内部节点 x i x_i x i (i = 1 , … , n − 1 i=1,\dots,n-1 i = 1 , … , n − 1 )处从两侧也一致,便在每个内部节点处产生一个关联三个连续未知量的线性方程:h i − 1 M i − 1 + 2 ( h i − 1 + h i ) M i + h i M i + 1 = 6 ( y i + 1 − y i h i − y i − y i − 1 h i − 1 ) h_{i-1} M_{i-1} + 2(h_{i-1}+h_i) M_i + h_i M_{i+1} = 6\left(\dfrac{y_{i+1}-y_i}{h_i} - \dfrac{y_i-y_{i-1}}{h_{i-1}}\right) h i − 1 M i − 1 + 2 ( h i − 1 + h i ) M i + h i M i + 1 = 6 ( h i y i + 1 − y i − h i − 1 y i − y i − 1 ) 。这给出关于 n − 1 n-1 n − 1 个未知量 M 1 , … , M n − 1 M_1,\dots,M_{n-1} M 1 , … , M n − 1 (利用 M 0 = M n = 0 M_0=M_n=0 M 0 = M n = 0 )的 n − 1 n-1 n − 1 个线性方程。
第四步(方程组有唯一解)。该方程组的系数矩阵是三对角矩阵,对角元为 2 ( h i − 1 + h i ) 2(h_{i-1}+h_i) 2 ( h i − 1 + h i ) ,非对角元为 h i − 1 h_{i-1} h i − 1 与 h i h_i h i ;由于所有间距 h i > 0 h_i>0 h i > 0 ,故 2 ( h i − 1 + h i ) > h i − 1 + h i 2(h_{i-1}+h_i) > h_{i-1}+h_i 2 ( h i − 1 + h i ) > h i − 1 + h i ,该矩阵严格对角占优,而严格对角占优矩阵总是可逆的。因此关于 M 1 , … , M n − 1 M_1,\dots,M_{n-1} M 1 , … , M n − 1 的线性方程组恰有一个解,由第二步这唯一确定了一条样条 S S S ,从而同时证明了存在性与唯一性。
大学 实际应用与典型例题 只要数据是采样得到的、却需要一条连续曲线,插值就无处不在:计算机字体和动画路径用样条绘制,GPS接收机把少量卫星读数插值成平滑轨迹,图像和音频的重采样在缩放或改变播放速度时在像素或样本之间插值,工程师则对仅在几个温度或压力下测得的稀疏材料属性表或热力学数据表进行插值。金融分析师从仅在少数几个期限观察到的债券价格中插值出收益率曲线,用以对介于其间到期的金融工具定价。
例题: 用拉格朗日插值从三个测量值预测趋势
某实验室记录了三个测量值 ( 0 , 1 ) (0,1) ( 0 , 1 ) 、( 1 , 3 ) (1,3) ( 1 , 3 ) 、( 2 , 7 ) (2,7) ( 2 , 7 ) 。用经过这三点的拉格朗日插值多项式,估计 x = 3 x=3 x = 3 处的值。
解答 第一步:写出在 x = 3 x=3 x = 3 处求值的三个基多项式。取节点 x 0 = 0 , x 1 = 1 , x 2 = 2 x_0=0,x_1=1,x_2=2 x 0 = 0 , x 1 = 1 , x 2 = 2 :L 0 ( 3 ) = ( 3 − 1 ) ( 3 − 2 ) ( 0 − 1 ) ( 0 − 2 ) = 2 2 = 1 L_0(3)=\dfrac{(3-1)(3-2)}{(0-1)(0-2)}=\dfrac{2}{2}=1 L 0 ( 3 ) = ( 0 − 1 ) ( 0 − 2 ) ( 3 − 1 ) ( 3 − 2 ) = 2 2 = 1 ,L 1 ( 3 ) = ( 3 − 0 ) ( 3 − 2 ) ( 1 − 0 ) ( 1 − 2 ) = 3 − 1 = − 3 L_1(3)=\dfrac{(3-0)(3-2)}{(1-0)(1-2)}=\dfrac{3}{-1}=-3 L 1 ( 3 ) = ( 1 − 0 ) ( 1 − 2 ) ( 3 − 0 ) ( 3 − 2 ) = − 1 3 = − 3 ,L 2 ( 3 ) = ( 3 − 0 ) ( 3 − 1 ) ( 2 − 0 ) ( 2 − 1 ) = 6 2 = 3 L_2(3)=\dfrac{(3-0)(3-1)}{(2-0)(2-1)}=\dfrac{6}{2}=3 L 2 ( 3 ) = ( 2 − 0 ) ( 2 − 1 ) ( 3 − 0 ) ( 3 − 1 ) = 2 6 = 3 。
第二步:用各自的数据值加权每个基值。数据值为 y 0 = 1 , y 1 = 3 , y 2 = 7 y_0=1, y_1=3, y_2=7 y 0 = 1 , y 1 = 3 , y 2 = 7 ,故估计值为 P ( 3 ) = y 0 L 0 ( 3 ) + y 1 L 1 ( 3 ) + y 2 L 2 ( 3 ) = 1 ( 1 ) + 3 ( − 3 ) + 7 ( 3 ) P(3) = y_0 L_0(3) + y_1 L_1(3) + y_2 L_2(3) = 1(1) + 3(-3) + 7(3) P ( 3 ) = y 0 L 0 ( 3 ) + y 1 L 1 ( 3 ) + y 2 L 2 ( 3 ) = 1 ( 1 ) + 3 ( − 3 ) + 7 ( 3 ) 。
第三步:求和。P ( 3 ) = 1 − 9 + 21 = 13 P(3) = 1 - 9 + 21 = 13 P ( 3 ) = 1 − 9 + 21 = 13 。
第四步:用显式多项式验证。直接求解经过三点的二次多项式得 P ( x ) = x 2 + x + 1 P(x)=x^2+x+1 P ( x ) = x 2 + x + 1 ,确实 P ( 3 ) = 9 + 3 + 1 = 13 P(3)=9+3+1=13 P ( 3 ) = 9 + 3 + 1 = 13 ,这在完全不显式写出多项式系数的情况下验证了拉格朗日形式的计算。
例题: 为什么插值误差在边界附近会爆炸:初探龙格现象
取 [ − 1 , 1 ] [-1,1] [ − 1 , 1 ] 上的 5 5 5 个等距节点 x 0 = − 1 , x 1 = − 0.5 , x 2 = 0 , x 3 = 0.5 , x 4 = 1 x_0=-1, x_1=-0.5, x_2=0, x_3=0.5, x_4=1 x 0 = − 1 , x 1 = − 0.5 , x 2 = 0 , x 3 = 0.5 , x 4 = 1 。分别在靠近中心的点 x = 0.1 x=0.1 x = 0.1 和靠近边界的点 x = 0.9 x=0.9 x = 0.9 处计算节点多项式 w ( x ) = ∏ i = 0 4 ( x − x i ) w(x)=\prod_{i=0}^{4}(x-x_i) w ( x ) = ∏ i = 0 4 ( x − x i ) ,并比较它们的大小。
解答 第一步:计算 w ( 0.1 ) w(0.1) w ( 0.1 ) 。w ( 0.1 ) = ( 0.1 + 1 ) ( 0.1 + 0.5 ) ( 0.1 − 0 ) ( 0.1 − 0.5 ) ( 0.1 − 1 ) = ( 1.1 ) ( 0.6 ) ( 0.1 ) ( − 0.4 ) ( − 0.9 ) w(0.1)=(0.1+1)(0.1+0.5)(0.1-0)(0.1-0.5)(0.1-1) = (1.1)(0.6)(0.1)(-0.4)(-0.9) w ( 0.1 ) = ( 0.1 + 1 ) ( 0.1 + 0.5 ) ( 0.1 − 0 ) ( 0.1 − 0.5 ) ( 0.1 − 1 ) = ( 1.1 ) ( 0.6 ) ( 0.1 ) ( − 0.4 ) ( − 0.9 ) ,展开得 0.02376 0.02376 0.02376 。
第二步:计算 w ( 0.9 ) w(0.9) w ( 0.9 ) 。w ( 0.9 ) = ( 0.9 + 1 ) ( 0.9 + 0.5 ) ( 0.9 − 0 ) ( 0.9 − 0.5 ) ( 0.9 − 1 ) = ( 1.9 ) ( 1.4 ) ( 0.9 ) ( 0.4 ) ( − 0.1 ) w(0.9)=(0.9+1)(0.9+0.5)(0.9-0)(0.9-0.5)(0.9-1) = (1.9)(1.4)(0.9)(0.4)(-0.1) w ( 0.9 ) = ( 0.9 + 1 ) ( 0.9 + 0.5 ) ( 0.9 − 0 ) ( 0.9 − 0.5 ) ( 0.9 − 1 ) = ( 1.9 ) ( 1.4 ) ( 0.9 ) ( 0.4 ) ( − 0.1 ) ,展开得 − 0.09576 -0.09576 − 0.09576 ,故 ∣ w ( 0.9 ) ∣ = 0.09576 |w(0.9)|=0.09576 ∣ w ( 0.9 ) ∣ = 0.09576 。
第三步:比较。尽管 0.9 0.9 0.9 和 0.1 0.1 0.1 都稳稳地位于 [ − 1 , 1 ] [-1,1] [ − 1 , 1 ] 内部,∣ w ( 0.9 ) ∣ ≈ 0.0958 |w(0.9)| \approx 0.0958 ∣ w ( 0.9 ) ∣ ≈ 0.0958 却大约是 ∣ w ( 0.1 ) ∣ ≈ 0.0238 |w(0.1)| \approx 0.0238 ∣ w ( 0.1 ) ∣ ≈ 0.0238 的 4 4 4 倍。
第四步:与误差公式相联系。由于插值误差为 f ( x ) − P ( x ) = f ( n + 1 ) ( ξ ) ( n + 1 ) ! w ( x ) f(x)-P(x)=\dfrac{f^{(n+1)}(\xi)}{(n+1)!}w(x) f ( x ) − P ( x ) = ( n + 1 )! f ( n + 1 ) ( ξ ) w ( x ) ,边界附近更大的 ∣ w ( x ) ∣ |w(x)| ∣ w ( x ) ∣ 会直接放大那里的误差界;对于像 f ( x ) = 1 1 + 25 x 2 f(x)=\dfrac{1}{1+25x^2} f ( x ) = 1 + 25 x 2 1 这样高阶导数增长极快的函数,这种边界放大效应(随着等距节点增多而进一步恶化)正是产生所谓龙格现象的剧烈振荡的原因——这正是使用三次样条或非均匀(切比雪夫)节点、而不是提高单一等距多项式次数的动机。
常见错误. 很容易认为,给单一插值多项式增加更多等距数据点总能改善拟合效果,但对于具有尖锐特征的函数,这可能会使情况急剧恶化:经典例子是 [ − 1 , 1 ] [-1,1] [ − 1 , 1 ] 上的 f ( x ) = 1 1 + 25 x 2 f(x)=\dfrac{1}{1+25x^2} f ( x ) = 1 + 25 x 2 1 ,尽管 f f f 本身完全光滑且有界,但经过等距节点的 n n n 次插值多项式会随着 n n n 增大而在 x = ± 1 x=\pm1 x = ± 1 附近产生巨大振荡。解决办法不是在相同节点间距下提高次数——而是改用分段方法如三次样条,或者将节点向端点聚集(切比雪夫节点)。 历史注记
约瑟夫-路易·拉格朗日于1795年发表了插值多项式的显式基多项式形式,给出了一个简洁的封闭公式,使插值多项式的存在性与唯一性变得一目了然,尽管更早的数学家(包括牛顿,以其差商形式)已经以更为渐进的方式计算过插值多项式。三次样条以及对高次插值何时会失效的仔细分析出现得晚得多,那是在计算机使大型数值数据表变得司空见惯之后,而朴素高次多项式拟合的失效——以卡尔·龙格1901年的例子命名的龙格现象——才从理论上的好奇变成了实际的关切。
约瑟夫-路易·拉格朗日
给定 5 5 5 个互异数据点,由存在唯一性定理保证的唯一插值多项式的次数是多少?
拉格朗日基多项式 L i ( x i ) L_i(x_i) L i ( x i ) 在其自身节点 x i x_i x i 处的值是多少?
某工程师用单一的 8 8 8 次多项式拟合了某材料热导率的 9 9 9 个等距测量值。在测量范围两端附近,尽管真实热导率变化平滑,但拟合曲线却剧烈振荡。标准的解决办法是什么?
用分段三次样条替换单一的高次多项式 用同样的等距点进一步提高多项式次数 忽略它,因为高次插值总是更准确 把每个测量值都四舍五入到更少的小数位
若在某区间上 ∣ f ( n + 1 ) ( x ) ∣ ≤ M |f^{(n+1)}(x)| \le M ∣ f ( n + 1 ) ( x ) ∣ ≤ M 且节点多项式满足 ∣ w ( x ) ∣ ≤ W |w(x)| \le W ∣ w ( x ) ∣ ≤ W ,拉格朗日误差公式给出的 ∣ f ( x ) − P ( x ) ∣ |f(x)-P(x)| ∣ f ( x ) − P ( x ) ∣ 的界是什么?
M W ( n + 1 ) ! \dfrac{MW}{(n+1)!} ( n + 1 )! M W M W ( n + 1 ) ! MW\,(n+1)! M W ( n + 1 )! M W ( n + 1 ) ! \dfrac{M}{W\,(n+1)!} W ( n + 1 )! M M + W M+W M + W