本文主要是介绍插值余项 + 高次插值的Runge现象 | Lagrange拉格朗日插值(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 插值余项
用Lagrange插值公式计算除插值节点以外的某一插值点x处的值,其插值误差为:
R n ( x ) = f ( x ) − p n ( x ) R_n(x)=f(x)-p_n(x) Rn(x)=f(x)−pn(x)
该误差实际上就是截断误差,称 R n ( x ) R_n(x) Rn(x)为Lagrange插值的插值余项。
定理2:设 x 0 , x 1 , ⋯ , x n x_0,x_1,\cdots,x_n x0,x1,⋯,xn为区间 [ a , b ] [a,b] [a,b]内的n+1个插值节点,而函数 f ( x ) f(x) f(x)在 [ a , b ] [a,b] [a,b]内有一阶至n+1阶导数,且已给定 y i = f ( x i ) ( i = 0 , 1 , 2 , ⋯ , n ) y_i=f(x_i)(i=0,1,2,\cdots,n) yi=f(xi)(i=0,1,2,⋯,n),则当 x ∈ [ a , b ] x\in[a,b] x∈[a,b]时,由Lagrange插值公式(8)计算的 p n ( x ) p_n(x) pn(x)与 f ( x ) f(x) f(x)的误差为:
R n ( x ) = f ( x ) − p n ( x ) = f ( n + 1 ) ( φ ) ( n + 1 ) ! ∏ i = 0 n ( x − x i ) (9) R_n(x)=f(x)-p_n(x)=\frac{f^{(n+1)}(\varphi)}{(n+1)!}\prod_{i=0}^n(x-x_i) \tag{9} Rn(x)=f(x)−pn(x)=(n+1)!f(n+1)(φ)i=0∏n(x−xi)(9)
式中 φ \varphi φ是依赖x的,它包含在由插值节点 x 0 , x 1 , ⋯ , x n x_0,x_1,\cdots,x_n x0,x1,⋯,xn和x所界定的 ( a , b ) (a,b) (a,b)范围内。
插值余项公式(9)给出了用 p n ( x ) p_n(x) pn(x)来近似代替 f ( x ) f(x) f(x)的截断误差 R n ( x ) R_n(x) Rn(x)。在实际应用中,对于制定的精度 ϵ \epsilon ϵ,要求插值的 R n ( x ) ≤ ϵ R_n(x)\leq \epsilon Rn(x)≤ϵ。
根据(9)式计算插值余项,前提条件是必须已知函数 f ( x ) f(x) f(x)在 [ a , b ] [a,b] [a,b]内的n+1阶导数。而实际情况却恰恰相反,根本不能确定函数 f ( x ) f(x) f(x)及其n+1阶导数,仅仅知道离散的插值节点和对应的函数值,即 ( x i , y i ) ( i = 0 , 1 , 2 , ⋯ , n ) (x_i,y_i)(i=0,1,2,\cdots,n) (xi,yi)(i=0,1,2,⋯,n)。那么,可采用下面的方法保证插值的计算精度。
设 L n ( x ) L_n(x) Ln(x)为 f ( x ) f(x) f(x)关于n个插值节点 ( x 0 , x 1 , ⋯ , x n ) (x_0,x_1,\cdots,x_n) (x0,x1,⋯,xn)的插值多项式,为了估计误差 f ( x ) − L n ( x ) f(x)-L_n(x) f(x)−Ln(x),另取一个插值节点 x n + 1 x_{n+1} xn+1,设 L ‾ n ( x ) \overline L_n(x) Ln(x)为 f ( x ) f(x) f(x)关于n个插值节点 ( x 1 , ⋯ , x n , x n + 1 ) (x_1,\cdots,x_n,x_{n+1}) (x1,⋯,xn,xn+1)的插值多项式。根据插值余项定理,有:
f ( x ) − L n ( x ) = f ( n + 1 ) ( ξ ) ( n + 1 ) ! ∏ i = 0 n ( x − x i ) f(x)-L_n(x)=\frac{f^{(n+1)}(\xi)}{(n+1)!}\prod_{i=0}^n(x-x_i) f(x)−Ln(x)=(n+1)!f(n+1)(ξ)i=0∏n(x−xi)
f ( x ) − L ‾ n ( x ) = f ( n + 1 ) ( η ) ( n + 1 ) ! ∏ i = 1 n + 1 ( x − x i ) f(x)-\overline L_n(x)=\frac{f^{(n+1)}(\eta)}{(n+1)!}\prod_{i=1}^{n+1}(x-x_i) f(x)−Ln(x)=(n+1)!f(n+1)(η)i=1∏n+1(x−xi)
故
f ( x ) − L n ( x ) f ( x ) − L ‾ n ( x ) = f ( n + 1 ) ( ξ ) f ( n + 1 ) ( η ) ⋅ x − x 0 x − x n + 1 \frac{f(x)-L_n(x)}{f(x)-\overline L_n(x)}=\frac{f^{(n+1)}(\xi)}{f^{(n+1)}(\eta)}·\frac{x-x_0}{x-x_{n+1}} f(x)−Ln(x)f(x)−Ln(x)=f(n+1)(η)f(n+1)(ξ)⋅x−xn+1x−x0
若 f ( n + 1 ) ( x ) f^{(n+1)}(x) f(n+1)(x)在插值区间上变化不大,则 f ( n + 1 ) ( ξ ) ≈ f ( n + 1 ) ( η ) f^{(n+1)}(\xi)\approx f^{(n+1)}(\eta) f(n+1)(ξ)≈f(n+1)(η),有:
f ( x ) − L n ( x ) ≈ x − x 0 x 0 − x n + 1 ( L n ( x ) − L ‾ n ( x ) ) f(x)-L_n(x)\approx \frac{x-x_0}{x_0-x_{n+1}}(L_n(x)-\overline L_n(x)) f(x)−Ln(x)≈x0−xn+1x−x0(Ln(x)−Ln(x))
只要 L n ( x ) − L ‾ n ( x ) L_n(x)-\overline L_n(x) Ln(x)−Ln(x)足够小,就能保证 f ( x ) − L n ( x ) < ϵ f(x)-L_n(x) < \epsilon f(x)−Ln(x)<ϵ。这种利用相关两次的插值计算结果来估计误差大小的方法,称为事后误差估计方法。
2. 高次插值的Runge(龙格)现象
在区间 [ a , b ] [a,b] [a,b]上,运用Lagrange插值公式进行插值,插值节点数越多,插值多项式的次数越高,插值函数和被插值函数重合的点(在插值节点上)也越多,插值计算结果的精度是否也越高呢?
定义2:设有 n + 1 n+1 n+1个插值节点的插值多项式为 p n ( x ) p_n(x) pn(x),如果对于任意的 ϵ > 0 \epsilon>0 ϵ>0,存在正整数N,当 n > N n>N n>N时,对被插值的函数 f ( x ) f(x) f(x)及所有 x ∈ [ a , b ] x\in [a,b] x∈[a,b],有
f ( x ) − p n ( x ) < ϵ f(x)-p_n(x)<\epsilon f(x)−pn(x)<ϵ
成立,则称 p n ( x ) p_n(x) pn(x)一致收敛于 f ( x ) f(x) f(x)。
考察 [ − 1 , 1 ] [-1,1] [−1,1]区间内等节距点的 f ( x ) f(x) f(x)的Lagrange插值。对于像 s i n x sin\,x sinx和 e x e^x ex这样性态较好的函数,其所有导数有同样的常数界M,误差 R n ( x ) = f ( x ) − p n ( x ) R_n(x)=f(x)-p_n(x) Rn(x)=f(x)−pn(x)随着n的增加而趋向零,因此增加插值节点数有利于提高插值结果的精度。但在一般情况下,答案是否定的。例如,对于函数 f ( x ) = 1 1 + x 2 f(x)=\frac{1}{1+x^2} f(x)=1+x21,当 n → ∞ n\to \infty n→∞时, R n ( x ) R_n(x) Rn(x)是增加的。
若节点数增加,则振荡加剧,该问题是由于插值节点是等距造成的,这种对等距插值节点进行高次插值时发生的不收敛现象称为Runge现象。
一般,为减小Lagrange插值的阶段误差,提高插值精度,可以采用如下措施:
(1)在插值区间内,只能在一定范围 ( n ≤ 7 ) (n\leq 7) (n≤7)内依靠增加插值节点的方法提高插值精度,并应该尽量避免使用高次插值,以防止出现Runge现象。
(2)修改插值条件,如要求插值函数和被插值函数在某些节点具有相同导数,则应采用Hermite(埃尔米特)插值等。
(3)减小插值区间或将插值区间分成若干小段,并在每一小段上使用低次插值,即采用分段插值和样条插值。
这篇关于插值余项 + 高次插值的Runge现象 | Lagrange拉格朗日插值(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!