分段插值法 | 分段线性插值 + 分段抛物插值

本文详细介绍了分段插值法,一种有效避免高次插值多项式不稳定性的方法。通过将插值区间分为多个小段,每段进行低阶插值,既保证了插值效果又提高了精度。文章探讨了分段线性插值和分段抛物插值的原理及应用。

分段插值法

用多项式作为插值函数来逼近某一函数f(x)f(x)f(x)是最简单易行的一种插值方法,但是插值多项式的次数是随着插值节点的数目而增加的,且次数高的插值多项式往往插值效果并不理想,会出现所谓的Runge现象,即在插值函数pn(x)p_n(x)pn(x)的两端会发生激烈地震荡(不稳定)。为此,在实际应用中常采用分段插值方法。

所谓分段插值法就是将被插值函数逐段多项式化,构造一个分段多项式作为插值函数。

分段插值:首先,将插值区间划分为若干小段,在每一小段上使用低阶插值;然后,将各小段上的插值多项式拼接在一起作为整个区间上的插值函数。如果使用的低阶插值为线性插值(两点插值),则将拼接成一条折线,用它来逼近函数f(x)f(x)f(x)

应用低阶插值的关键在于恰当地选择插值节点。由插值余项公式(9)可知,所选节点xix_ixi离插值点x越近则误差越小。

  1. 分段线性插值

将插值区间[a,b][a,b][a,b]分成
a=x0,x1,x2,⋯ ,xn=b a=x_0,x_1,x_2,\cdots,x_n=b a=x0,x1,x2,,xn=b
n个小段,在每一个小段[xi−1,xi](i=1,2,⋯ ,n)[x_{i-1},x_i](i=1,2,\cdots,n)[xi1,xi](i=1,2,,n)上,其分段线性插值的公式为:
s(x)=yi+yi−yi−1xi−xi−1(x−xi) s(x)=y_i+\frac{y_i-y_{i-1}}{x_i-x_{i-1}}(x-x_i) s(x)=yi+xixi1yiyi1(xxi)
根据
i={1x≤x0kxk−1<x≤xk时,(1≤k≤n)nx>xn i = \begin{cases} 1 \quad x\leq x_0 \\ k \quad x_{k-1}<x\leq x_k时,(1\leq k\leq n) \\ n \quad x>x_n \end{cases} i=1xx0kxk1<xxk(1kn)nx>xn
选择插值节点,即当插值节点为x0,x1,x2,⋯ ,xk−1,xk,⋯ ,xnx_0,x_1,x_2,\cdots,x_{k-1},x_k,\cdots,x_nx0,x1,x2,,xk1,xk,,xn时,依次从左至右取出各节点。如果插值点x不超过节点x1x_1x1(即在[x0,x1][x_0,x_1][x0,x1]之间),则取节点x0x_0x0x1x_1x1进行线性插值,否则,再检查x是否超过x2,⋯x_2,\cdotsx2,,依次逐步检查。一旦发现x不超过某个节点xnx_nxn,则取它与前面一个节点xn−1x_{n-1}xn1进行线性插值。如果x已超过xn−1x_{n-1}xn1,则不论是否超过xnx_nxn,插值节点均取xnx_nxnxn−1x_{n-1}xn1(也就是一律当成是在[xn−1,xn][x_{n-1},x_n][xn1,xn])范围内取插值点。

在小段[xn−1,xn][x_{n-1},x_n][xn1,xn]上,分段线性插值的误差是:
∣R(x)∣=∣f(x)−s(x)∣≤∣f(2)(ξ)∣8(xn−xn−1)2,ξ∈[xn−1,xn] |R(x)|=|f(x)-s(x)|\leq \frac{|f^{(2)}(\xi)|}{8}(x_n-x_{n-1})^2, \quad \xi \in [x_{n-1},x_n] R(x)=f(x)s(x)8f(2)(ξ)(xnxn1)2,ξ[xn1,xn]
可见,当f(2)f^{(2)}f(2)有界时,小段[xn−1,xn][x_{n-1},x_n][xn1,xn]越小,分段线性插值的误差就越小。用分段线性插值方法提高插值精度是有效的。

  1. 分段抛物插值

为了提高插值精度,可以在每一小段取3个节点xi−1,xix_{i-1},x_ixi1,xixi+1x_{i+1}xi+1进行二次插值,从而构成分段抛物插值。其插值公式如下:
y=(x−xi)(x−xi+1)(xi−1−xi)(xi−1−xi+1)⋅yx−1+(x−xi−1)(x−xi+1)(xi−xi−1)(xi−xi+1)⋅yi+(x−xi−1)(x−xi)(xi+1−xi−1)(xi+1−xi)⋅yi y=\frac{(x-x_i)(x-x_{i+1})}{(x_{i-1}-x_i)(x_{i-1}-x_{i+1})}·y_{x-1}+\frac{(x-x_{i-1})(x-x_{i+1})}{(x_i-x_{i-1})(x_i-x_{i+1})}·y_i+\frac{(x-x_{i-1})(x-x_{i})}{(x_{i+1}-x_{i-1})(x_{i+1}-x_i)}·y_i y=(xi1xi)(xi1xi+1)(xxi)(xxi+1)yx1+(xixi1)(xixi+1)(xxi1)(xxi+1)yi+(xi+1xi1)(xi+1xi)(xxi1)(xxi)yi
根据
i={1x<x1k−1xk−1<x<xk且∣x−xk−1∣≤∣x−xk∣,k=2,3,⋯ ,n−1kxk−1<x<xk且∣x−xk−1∣>∣x−xk∣,k=2,3,⋯ ,n−1n−1x>xn−1 i=\begin{cases} 1 \quad x<x_1 \\ k-1 \quad x_{k-1}<x<x_k 且 |x-x_{k-1}|\leq |x-x_k|, k=2,3,\cdots,n-1 \\ k \quad x_{k-1}<x<x_k 且|x-x_{k-1}|>|x-x_k|,k=2,3,\cdots,n-1 \\ n-1 \quad x>x_{n-1} \end{cases} i=1x<x1k1xk1<x<xkxxk1xxk,k=2,3,,n1kxk1<x<xkxxk1>xxk,k=2,3,,n1n1x>xn1
选择插值节点。即靠近x0x_0x0i=1i=1i=1,计算节点为x0,x1,x2x_0,x_1,x_2x0,x1x2;靠近xk−1x_{k-1}xk1i=k−1i=k-1i=k1,计算节点为xk−2,xk−1,xkx_{k-2},x_{k-1},x_kxk2,xk1,xk;靠近xkx_kxki=ki=ki=k,计算节点为xk−1,xk,xk+1x_{k-1},x_k,x_{k+1}xk1,xk,xk+1;靠近xnx_nxni=n−1i=n-1i=n1,计算节点为xn−2,xn−1,xnx_{n-2},x{n-1},x_nxn2,xn1,xn

  1. 分段插值方法特点

(1)分段插值方法算法简单,收敛性可以得到保证,只要节点间距充分小,就能达到任何精度的要求。

(2)如需修改某个数据,则插值函数仅在相关的某个局部范围内受影响。

(3)分段抛物插值所拼接成的插值函数曲线不一定光滑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值