1. 引言
根据前一章《数值分析(5):插值法》可知,给定 n + 1 n+1 n+1个点,可以用Newton法或lagrange法插出一个 n n n次多项式函数 φ ( x ) \varphi(x) φ(x),让 φ ( x ) \varphi(x) φ(x)能够精确地穿过这 n + 1 n+1 n+1个点,且通过插值余项我们可以知道不处于这 n + 1 n+1 n+1个点的原函数值和插值函数值之间的差异,即:
那么是不是给的点越多,插值出来的多项式函数 φ ( x ) \varphi(x) φ(x)在其他点处的误差就越小呢?即插值余项 R n ( x ) R_n(x) Rn(x)越小?答案是否定的,因为 f ( n + 1 ) ( ξ x ) f^{(n+1)}(\xi_x) f(n+1)(ξx)不一定能被一个常数控制住,所以不一定n越大, R n ( x ) R_n(x) Rn(x)越小。
如下图所示,给定11个点,用lagrange插值法插值得到的 L 10 ( x ) L_{10}(x) L10(x)如图虚线所示,而原本的函数为实线所示,明显在 ∣ x ∣ < 3.63 |x|<3.63 ∣x∣<3.63这个区间内,误差是较小的,而在这个区间外,误差是较大的,这个现象称为Runge现象
为了克服这种现象,可以采用分段低次插值方法或选择非等距的特殊节点。
2. 分段低次插值方法
2.1 分段线性插值
分段线性插值就是相邻插值节点之间用线段连接,从而构成的插值函数。
分段线性插值的定义如下:
分段线性插值多项式 φ ( x ) \varphi(x) φ(x)依赖于节点个数 n + 1 n+1 n+1,还依赖于节点 x 0 , x 1 , … , x n x_0, x_1,…,x_n x0,x1,…,xn之间的距离 h k = x k − x k + 1 h_k=x_k -x_{k+1} hk=xk−xk+1
利用线性插值多项式的误差估计:
可以得到下面定理:
定理的本质是根据一个个小区间
[
x
k
.
x
k
−
1
]
[x_k.x_{k-1}]
[xk.xk−1]的误差估计得到一个整体大区间
[
a
,
b
]
[a,b]
[a,b]的误差估计。
2.2 分段三次Hermite插值
分段线性插值的不足之处是,节点处的导数不连续,那么为了让导数能够连续从而让插值曲线看上去更加平滑,需要用到三次Hermite插值(Hermite插值是带导数的插值,三次Hermite插值意味着最高阶次数为3,有4个待定系数)
分段三次Hermite插值的构造方法如下,就是每两个节点间的多项式是Hermite三次多项式,不仅要求节点处
x
i
x_i
xi的函数值
φ
(
x
i
)
=
f
(
x
i
)
\varphi(x_i)=f(x_i)
φ(xi)=f(xi),还要求节点处
x
i
x_i
xi的导数值
φ
′
(
x
i
)
=
f
′
(
x
i
)
\varphi'(x_i)=f'(x_i)
φ′(xi)=f′(xi)。
在每个小区间
[
x
k
,
x
k
+
1
]
[x_k,x_{k+1}]
[xk,xk+1]上用基于Newton的Hermite插值,即用均差形式:
上式对于
k
=
0
,
1
,
…
,
n
−
1
k =0,1,…,n-1
k=0,1,…,n−1均成立。
同样地,小区间内三次Hermite插值多项式的误差估计为:
那么对于整个大区间内的误差估计,自然地存在以下定理:
3. 三次样条插值函数
什么是样条:是指飞机或轮船等的制造过程中为描绘出光滑的外形曲线(放样)所用的工具。样条本质上是一段一段的三次多项式拼合而成的曲线,在拼接处,不仅函数是连续的,且一阶和二阶导数也是连续的。
1946年,Schoenberg将样条引入数学,即所谓的样条函数.
可以看到在前面的分段三次Hermite插值中,虽然能够保证插值函数 φ ( x ) \varphi(x) φ(x)在节点处连续,但是一般在节点处的导数我们并不知道,所以可以认为分段三次Hermite插值的要求过高了。
本节的样条插值函数只要求在节点处的导数值相等即可,不要求等于 f ′ ( x i ) f'(x_i) f′(xi)。
三次样条插值函数的定义如下:
如何求解三次样条插值函数?
有以下两种方法:
3.1 待定系数法
因为每个小区间内的函数是三次多项式函数,所以将 f ( x ) f(x) f(x)的定义域分成 n n n个区间后有 4 n 4n 4n个待定系数。
根据连续性条件可知,节点处的函数值要相等且等于给定的 f ( x ) f(x) f(x)函数值,节点处的一阶导数连续,二阶导数连续,即:
还需要两个条件才能完全地确定这n个小区间的三次样条插值多项式,而这两个条件就构成了边界条件,有以下两种边界条件:
3.2 三弯矩法
因为
S
(
x
)
S(x)
S(x)在子区间
[
x
j
,
x
j
+
1
]
[x_j,x_{j+1}]
[xj,xj+1]上是三次多项式。因此
S
′
′
(
x
)
S''(x)
S′′(x)在
[
x
j
,
x
j
+
1
]
[x_j,x_{j+1}]
[xj,xj+1]上是线性函数,不妨令:
那么根据lagrange插值法可得:
做两次不定积分后得:
利用在节点处的函数值相等,即:
S
(
x
j
)
=
f
(
x
j
)
,
S
(
x
j
+
1
)
=
f
(
x
j
+
1
)
S(x_j)=f(x_j),S(x_{j+1})=f(x_{j+1})
S(xj)=f(xj),S(xj+1)=f(xj+1),可以求出积分常数
C
1
,
C
2
C_1,C_2
C1,C2
那么小区间内的插值函数
S
(
x
)
S(x)
S(x)还有
M
j
M_j
Mj待确定。我们还有一阶导数连续这个条件没用(注意二阶导数连续这个条件在构造插值函数
S
(
x
)
S(x)
S(x)的时候已经在
M
j
M_j
Mj中体现了)
把
C
1
,
C
2
C_1,C_2
C1,C2这两个参数代入
S
(
x
)
S(x)
S(x)中,然后对其求导,得:
计算出在
x
j
+
x^+_{j}
xj+处的导数值为:
再计算得到在
x
j
−
x^-_{j}
xj−处的导数值为:
两者相等,即得:
若采用II性边界条件,即:
那么上式(6.6),可以得到一个关系式,用矩阵表示即为:
系数矩阵和等式右边的值矩阵都已知,并且由于
λ
i
+
μ
i
=
1
\lambda_i+\mu_i=1
λi+μi=1且两者都介于0~1之间,所以上式的系数矩阵是严格对角占优矩阵,可以对其进行Doolittle分解,从而求解出
M
i
(
i
=
1
,
2
,
.
.
.
,
n
−
1
)
M_i(i=1,2,...,n-1)
Mi(i=1,2,...,n−1)
接下来来看一道例题:
如果采用I型边界条件,即:
那么求出
S
′
(
x
)
S'(x)
S′(x)后得到:
根据上面的两个方程,再综合前面得到的方差,可以得到以下的矩阵关系式:
系数矩阵同样是一个严格对角占优矩阵。
下面来看一道相关例题:
3.3 插值余项
那么与分段线性插值相类似地,三次样条插值的插值余项是:
参考文献:
关治,陆金甫《数值方法》