三次样条插值原理+Matlab代码
1.1 分段插值
1.1.1 龙格现象
例1-1: 给定函数 f ( x ) = 1 1 + 25 x 2 f(x) = \frac{1}{1+25x^2} f(x)=1+25x21, x ∈ [ − 1 , 1 ] x \in [-1,1] x∈[−1,1],构造10次拉格朗日插值多项式 L 10 ( x ) L_{10}(x) L10(x)。
解: 对
[
−
1
,
1
]
[-1,1]
[−1,1] 作等距分割,取
h
=
2
10
=
0
h=\frac{2}{10}=0
h=102=0,
x
i
=
−
1
+
0.2
i
x_i=-1+0.2i
xi=−1+0.2i,取插值点为
(
x
i
,
1
1
+
25
x
2
)
(x_i,\frac{1}{1+25x^2})
(xi,1+25x21),
i
=
0
,
1
,
⋯
,
10
i=0,1,\cdots,10
i=0,1,⋯,10。解得
L
10
(
x
)
L_{10}(x)
L10(x) 如图所示。
龙格(Runge)现象揭示了高次插值多项式的缺陷.它说明高次多项式的插值效果不一定由于低次多项式的插值效果,同时表明等距插值不能保证有较好的插值效果.为此,我们引入了分段低次插值多项式来提高插值函数的逼近效果.
1.1.2分段线性插值
对给定区间
[
a
,
b
]
[a,b]
[a,b] 作分割,
a
=
x
0
<
x
1
<
⋯
<
x
n
=
b
a=x_0<x_1<\cdots<x_n=b
a=x0<x1<⋯<xn=b。在每个小区间
[
x
i
,
x
i
+
1
]
[x_i,x_{i+1}]
[xi,xi+1] 上作
f
(
x
)
f(x)
f(x) 以
{
x
i
,
x
i
+
2
}
\{x_i,x_{i+2}\}
{xi,xi+2} 为节点的线性插值,记插值函数为
p
i
(
x
)
p_i(x)
pi(x),则
p
i
(
x
)
=
x
−
x
i
+
1
x
i
−
x
i
+
1
f
(
x
i
)
+
x
−
x
i
x
i
+
1
−
x
i
f
(
x
i
+
1
)
p_i(x) = \frac{x-x_{i+1}}{x_i-x_{i+1}}f(x_i) + \frac{x-x_i}{x_{i+1}-x_i}f(x_{i+1})
pi(x)=xi−xi+1x−xi+1f(xi)+xi+1−xix−xif(xi+1),
x
i
≤
x
≤
x
i
+
1
x_i \le x \le x_{i+1}
xi≤x≤xi+1,
则
p
(
x
)
p(x)
p(x) 为:
{
p
0
(
x
)
=
x
−
x
1
x
0
−
x
1
f
(
x
0
)
+
x
−
x
0
x
1
−
x
0
f
(
x
1
)
,
x
∈
[
x
0
,
x
1
]
p
1
(
x
)
=
x
−
x
2
x
1
−
x
2
f
(
x
1
)
+
x
−
x
1
x
2
−
x
1
f
(
x
2
)
,
x
∈
[
x
1
,
x
2
]
⋮
⋮
p
n
−
1
(
x
)
=
x
−
x
n
x
n
−
1
−
x
n
f
(
x
n
−
1
)
+
x
−
x
n
−
1
x
n
−
x
n
−
1
f
(
x
n
)
,
x
∈
[
x
n
−
1
,
x
n
]
\begin{cases} p_0(x) = \frac{x-x_1}{x_0-x_1}f(x_0) + \frac{x-x_0}{x_1-x_0}f(x_1), & x \in [x_0,x_1] \\ p_1(x) = \frac{x-x_2}{x_1-x_2}f(x_1) + \frac{x-x_1}{x_2-x_1}f(x_2), & x \in [x_1,x_2] \\ \vdots &\vdots \\ p_{n-1}(x) = \frac{x-x_n}{x_{n-1}-x_n}f(x_{n-1}) + \frac{x-x_{n-1}}{x_n-x_{n-1}}f(x_n), & x \in [x_{n-1},x_n] \\ \end{cases}
⎩
⎨
⎧p0(x)=x0−x1x−x1f(x0)+x1−x0x−x0f(x1),p1(x)=x1−x2x−x2f(x1)+x2−x1x−x1f(x2),⋮pn−1(x)=xn−1−xnx−xnf(xn−1)+xn−xn−1x−xn−1f(xn),x∈[x0,x1]x∈[x1,x2]⋮x∈[xn−1,xn]
对于例1-1,应用分段线性插值的结果如图所示。
分段线性插值算法简单,只要区间充分小,就能保证它的误差要求。它的一个显著特点是它的局部性,如果修改了某个节点
(
x
i
,
f
(
x
i
)
)
(x_i, f(x_i))
(xi,f(xi)) 的值,仅在相邻的两个区间
[
x
i
−
1
,
x
i
]
[x_{i-1}, x_i]
[xi−1,xi] ,
[
x
i
,
x
i
+
1
]
[x_i, x_{i+1}]
[xi,xi+1] 受到影响,分段线性插值的缺点是在插值节点处不光滑。
1.2 三次样条插值
为了解决分段线性插值在插值节点处不光滑的问题,我们在每段上使用3次多项式进行分段,这样在节点处一阶和二阶连续可导。这样就可以使得插值函数 ( S(x) ) 的光滑程度高,而且保证二阶导函数的连续性。
定义1.2 给定区间
[
a
,
b
]
[a,b]
[a,b] 上
n
+
1
n+1
n+1 个节点
a
=
x
0
<
x
1
<
⋯
<
x
n
=
b
a=x_0<x_1<\cdots<x_n=b
a=x0<x1<⋯<xn=b 和这些节点上的函数值
{
f
(
x
i
)
=
y
i
,
i
=
0
,
1
,
⋯
,
n
}
\{ f(x_i) = y_i, i=0,1,\cdots,n \}
{f(xi)=yi,i=0,1,⋯,n},若 (S(x))满足:
{
S
(
x
i
)
=
y
i
,
i
=
0
,
1
,
⋯
,
n
}
\{ S(x_i) = y_i, i=0,1,\cdots,n \}
{S(xi)=yi,i=0,1,⋯,n},
S
(
x
)
S(x)
S(x) 在每个小区间
[
x
i
,
x
i
+
1
]
[x_i,x_{i+1}]
[xi,xi+1] 上是一个三次多项式;$S(x)$在
[
a
,
b
]
[a,b]
[a,b] 上有连续的二阶导数,则称
S
(
x
)
S(x)
S(x)为
f
(
x
)
f(x)
f(x)关于在区间
[
a
,
b
]
[a,b]
[a,b] 上的三次样条插值函数,称
{
x
0
,
x
1
,
⋯
,
x
n
}
\{ x_0,x_1,\cdots,x_n \}
{x0,x1,⋯,xn}为样条节点。
公式推导:
记
{
M
i
=
S
′
′
(
x
)
,
m
i
=
S
′
(
x
)
,
i
=
0
,
1
,
⋯
,
n
}
\{ M_i=S''(x),\ m_i=S'(x),\ i=0,1,\cdots,n \}
{Mi=S′′(x), mi=S′(x), i=0,1,⋯,n},
S
i
(
x
)
S_i(x)
Si(x)为区间
[
x
i
,
x
i
+
1
]
[x_i,x_{i+1}]
[xi,xi+1]上
S
(
x
)
S(x)
S(x)的表达式。由于
S
i
(
x
)
S_i(x)
Si(x)是一个三次多项式,则
S
i
′
′
(
x
)
S''_i(x)
Si′′(x)是一次多项式。用插值点
{
(
x
i
,
S
i
′
′
(
x
i
)
)
,
(
x
i
,
S
i
′
′
(
x
i
+
1
)
)
}
\{ (x_i,S''_i(x_i)),\ (x_i,S''_i(x_{i+1})) \}
{(xi,Si′′(xi)), (xi,Si′′(xi+1))}作线性插值。则:
S
i
′
′
(
x
)
=
x
−
x
i
+
1
x
i
−
x
i
+
1
M
i
+
x
−
x
i
x
i
+
1
−
x
i
M
i
+
1
,
x
∈
[
x
i
,
x
i
+
1
]
.
S''_i(x) =\frac{x-x_{i+1}}{x_i-x_{i+1}}M_i+\frac{x-x_i}{x_{i+1}-x_i}M_{i+1},\ x\in [x_i,x_{i+1}].
Si′′(x)=xi−xi+1x−xi+1Mi+xi+1−xix−xiMi+1, x∈[xi,xi+1].
对
S
i
′
′
(
x
)
S''_i(x)
Si′′(x)进行两次积分,即:
S
i
′
(
x
)
=
(
x
−
x
i
+
1
)
2
2
(
x
i
−
x
i
+
1
)
M
i
+
(
x
−
x
i
)
2
2
(
x
i
+
1
−
x
i
)
M
i
+
1
+
c
,
x
∈
[
x
i
,
x
i
+
1
]
.
S'_i(x) =\frac{(x-x_{i+1})^2}{2(x_i-x_{i+1})}M_i+\frac{(x-x_i)^2}{2(x_{i+1}-x_i)}M_{i+1}+c,\,\,x\in [x_i,x_{i+1}].
Si′(x)=2(xi−xi+1)(x−xi+1)2Mi+2(xi+1−xi)(x−xi)2Mi+1+c,x∈[xi,xi+1].
S
i
(
x
)
=
(
x
−
x
i
+
1
)
3
6
(
x
i
−
x
i
+
1
)
M
i
+
(
x
−
x
i
)
3
6
(
x
i
+
1
−
x
i
)
M
i
+
1
+
c
x
+
d
,
x
∈
[
x
i
,
x
i
+
1
]
.
S_i(x) =\frac{(x-x_{i+1})^3}{6(x_i-x_{i+1})}M_i+\frac{(x-x_i)^3}{6(x_{i+1}-x_i)}M_{i+1}+cx+d,\ x\in [x_i,x_{i+1}].
Si(x)=6(xi−xi+1)(x−xi+1)3Mi+6(xi+1−xi)(x−xi)3Mi+1+cx+d, x∈[xi,xi+1].
令
c
x
+
d
=
C
(
x
i
+
1
−
x
)
+
D
(
x
−
x
i
)
cx+d=C(x_{i+1}-x)+D(x-x_i)
cx+d=C(xi+1−x)+D(x−xi),则:
S
i
(
x
)
=
(
x
−
x
i
+
1
)
3
6
(
x
i
−
x
i
+
1
)
M
i
+
(
x
−
x
i
)
3
6
(
x
i
+
1
−
x
i
)
M
i
+
1
+
C
(
x
i
+
1
−
x
)
+
D
(
x
−
x
i
)
,
x
∈
[
x
i
,
x
i
+
1
]
.
S_i(x) =\frac{(x-x_{i+1})^3}{6(x_i-x_{i+1})}M_i+\frac{(x-x_i)^3}{6(x_{i+1}-x_i)}M_{i+1}+C(x_{i+1}-x)+D(x-x_i),\,\,x\in [x_i,x_{i+1}].
Si(x)=6(xi−xi+1)(x−xi+1)3Mi+6(xi+1−xi)(x−xi)3Mi+1+C(xi+1−x)+D(x−xi),x∈[xi,xi+1].
记
h
i
=
x
i
+
1
−
x
i
h_i=x_{i+1}-x_i
hi=xi+1−xi,则:
S
i
(
x
)
=
(
x
i
+
1
−
x
)
3
6
h
i
M
i
+
(
x
−
x
i
)
3
6
h
i
M
i
+
1
+
C
(
x
i
+
1
−
x
)
+
D
(
x
−
x
i
)
,
x
∈
[
x
i
,
x
i
+
1
]
.
S_i(x) =\frac{(x_{i+1}-x)^3}{6h_i}M_i+\frac{(x-x_i)^3}{6h_i}M_{i+1}+C(x_{i+1}-x)+D(x-x_i),\,\,x\in [x_i,x_{i+1}].
Si(x)=6hi(xi+1−x)3Mi+6hi(x−xi)3Mi+1+C(xi+1−x)+D(x−xi),x∈[xi,xi+1].
又因为
S
i
(
x
i
)
=
y
i
,
S
i
(
x
i
+
1
)
=
y
i
+
1
S_i(x_i)=y_i,S_i(x_{i+1})=y_{i+1}
Si(xi)=yi,Si(xi+1)=yi+1,代入解得,
C
=
y
i
h
i
−
h
i
M
i
6
C=\frac{y_i}{h_i}-\frac{h_iM_i}{6}
C=hiyi−6hiMi,
D
=
y
i
+
1
h
i
−
h
i
M
i
+
1
6
D=\frac{y_{i+1}}{h_i}-\frac{h_iM_{i+1}}{6}
D=hiyi+1−6hiMi+1,则:
S
i
(
x
)
=
(
x
i
+
1
−
x
)
3
M
i
+
(
x
−
x
i
)
3
M
i
+
1
6
h
i
+
(
x
i
+
1
−
x
)
y
i
+
(
x
−
x
i
)
y
i
+
1
h
i
−
h
i
6
[
(
x
i
+
1
−
x
)
M
i
+
(
x
−
x
i
)
M
i
+
1
]
,
x
∈
[
x
i
,
x
i
+
1
]
.
S_i(x) =\frac{(x_{i+1}-x)^3M_i+(x-x_i)^3M_{i+1}}{6h_i}+\frac{(x_{i+1}-x)y_i+(x-x_i)y_{i+1}}{h_i}-\frac{h_i}{6}\left[ (x_{i+1}-x)M_i+(x-x_i)M_{i+1} \right],\,x\in [x_i,x_{i+1}].
Si(x)=6hi(xi+1−x)3Mi+(x−xi)3Mi+1+hi(xi+1−x)yi+(x−xi)yi+1−6hi[(xi+1−x)Mi+(x−xi)Mi+1],x∈[xi,xi+1].
所以,
S
i
′
(
x
)
=
−
(
x
−
x
i
+
1
)
2
2
h
i
M
i
+
(
x
−
x
i
)
2
2
h
i
M
i
+
1
+
y
i
+
1
h
i
−
h
i
M
i
+
1
6
−
y
i
h
i
+
h
i
M
i
6
.
S'_i(x) =-\frac{(x-x_{i+1})^2}{2h_i}M_i+\frac{(x-x_i)^2}{2h_i}M_{i+1}+\frac{y_{i+1}}{h_i}-\frac{h_iM_{i+1}}{6}-\frac{y_i}{h_i}+\frac{h_iM_i}{6}.
Si′(x)=−2hi(x−xi+1)2Mi+2hi(x−xi)2Mi+1+hiyi+1−6hiMi+1−hiyi+6hiMi.
又因为
x
x
x 在内节点
x
i
x_i
xi 处连续,即
S
i
′
(
x
i
)
=
S
i
−
1
′
(
x
i
)
S'_i(x_i) = S'_{i-1}(x_i)
Si′(xi)=Si−1′(xi) ,可以得到:
−
(
x
i
−
x
i
+
1
)
2
2
h
i
M
i
+
y
i
+
1
h
i
−
h
i
M
i
+
1
6
−
y
i
h
i
+
h
i
M
i
6
=
(
x
−
x
i
−
1
)
2
2
h
i
−
1
M
i
+
y
i
h
i
−
1
−
h
i
−
1
M
i
6
−
y
i
−
1
h
i
−
1
+
h
i
−
1
M
i
−
1
6
-\frac{(x_i-x_{i+1})^2}{2h_i}M_i + \frac{y_{i+1}}{h_i} - \frac{h_iM_{i+1}}{6} - \frac{y_i}{h_i} + \frac{h_iM_i}{6} = \frac{(x-x_{i-1})^2}{2h_{i-1}}M_i + \frac{y_i}{h_{i-1}} - \frac{h_{i-1}M_i}{6} - \frac{y_{i-1}}{h_{i-1}} + \frac{h_{i-1}M_{i-1}}{6}
−2hi(xi−xi+1)2Mi+hiyi+1−6hiMi+1−hiyi+6hiMi=2hi−1(x−xi−1)2Mi+hi−1yi−6hi−1Mi−hi−1yi−1+6hi−1Mi−1
整理得:
f
[
x
i
,
x
i
+
1
]
−
h
i
M
i
3
−
h
i
M
i
+
1
6
=
f
[
x
i
−
1
,
x
i
]
+
h
i
−
1
M
i
3
+
h
i
−
1
M
i
−
1
6
f[x_i,x_{i+1}] - \frac{h_iM_i}{3} - \frac{h_iM_{i+1}}{6} = f[x_{i-1},x_i] + \frac{h_{i-1}M_i}{3} + \frac{h_{i-1}M_{i-1}}{6}
f[xi,xi+1]−3hiMi−6hiMi+1=f[xi−1,xi]+3hi−1Mi+6hi−1Mi−1
其中
f
[
x
i
,
x
i
+
1
]
=
y
i
+
1
−
y
i
x
i
+
1
−
x
i
f[x_i,x_{i+1}] = \frac{y_{i+1}-y_i}{x_{i+1}-x_i}
f[xi,xi+1]=xi+1−xiyi+1−yi。整理得:
6
{
f
[
x
i
,
x
i
+
1
]
−
f
[
x
i
−
1
,
x
i
]
}
=
2
(
h
i
−
1
+
h
i
)
M
i
+
h
i
−
1
M
i
−
1
+
h
i
M
i
+
1
6\{ f[x_i,x_{i+1}] - f[x_{i-1},x_i] \} = 2(h_{i-1}+h_i)M_i + h_{i-1}M_{i-1} + h_iM_{i+1}
6{f[xi,xi+1]−f[xi−1,xi]}=2(hi−1+hi)Mi+hi−1Mi−1+hiMi+1
两边同除
(
h
i
−
1
−
h
i
)
(h_{i-1}-h_i)
(hi−1−hi) ,得:
6
{
f
[
x
i
,
x
i
+
1
]
−
f
[
x
i
−
1
,
x
i
]
}
(
h
i
−
1
+
h
i
)
=
2
M
i
+
h
i
−
1
(
h
i
−
1
+
h
i
)
M
i
−
1
+
h
i
(
h
i
−
1
+
h
i
)
M
i
+
1
\frac{6\{ f[x_i,x_{i+1}] - f[x_{i-1},x_i] \}}{(h_{i-1}+h_i)} = 2M_i + \frac{h_{i-1}}{(h_{i-1}+h_i)}M_{i-1} + \frac{h_i}{(h_{i-1}+h_i)}M_{i+1}
(hi−1+hi)6{f[xi,xi+1]−f[xi−1,xi]}=2Mi+(hi−1+hi)hi−1Mi−1+(hi−1+hi)hiMi+1
令
λ
i
=
h
i
(
h
i
−
1
+
h
i
)
\lambda_i = \frac{h_i}{(h_{i-1}+h_i)}
λi=(hi−1+hi)hi,
μ
i
=
1
−
λ
i
=
h
i
−
1
(
h
i
−
1
+
h
i
)
\mu_i = 1 - \lambda_i = \frac{h_{i-1}}{(h_{i-1}+h_i)}
μi=1−λi=(hi−1+hi)hi−1,
d
i
=
6
{
f
[
x
i
,
x
i
+
1
]
−
f
[
x
i
−
1
,
x
i
]
}
(
h
i
−
1
+
h
i
)
=
6
f
[
x
i
−
1
,
x
i
,
x
i
+
1
]
d_i = \frac{6\{ f[x_i,x_{i+1}] - f[x_{i-1},x_i] \}}{(h_{i-1}+h_i)} = 6f[x_{i-1},x_i,x_{i+1}]
di=(hi−1+hi)6{f[xi,xi+1]−f[xi−1,xi]}=6f[xi−1,xi,xi+1],则
μ
i
M
i
−
1
+
2
M
i
+
λ
i
M
i
+
1
=
d
i
=
6
f
[
x
i
−
1
,
x
i
,
x
i
+
1
]
,
i
=
1
,
2
,
⋯
,
n
−
1
\mu_iM_{i-1} + 2M_i + \lambda_iM_{i+1} = d_i = 6f[x_{i-1},x_i,x_{i+1}] ,\ i=1,2,\cdots,n-1
μiMi−1+2Mi+λiMi+1=di=6f[xi−1,xi,xi+1], i=1,2,⋯,n−1
上式是关于
M
i
M_i
Mi (
i
=
0
,
1
,
⋯
,
n
i=0,1,\cdots,n
i=0,1,⋯,n)的线性方程组,共有
n
−
1
n-1
n−1 个方程,比未知参数
n
+
1
n+1
n+1 少2,因而还需要两个方程才可能唯一确定
S
(
x
)
S(x)
S(x)。
一般通过对边界附加适当的条件,即用边界条件给出所需要的两方程。常用的有以下三种边界条件:
(1) 已知
S
′
′
(
x
0
)
=
M
0
S''(x_0) = M_0
S′′(x0)=M0 和
S
′
′
(
x
n
)
=
M
n
S''(x_n) = M_n
S′′(xn)=Mn,此时
n
−
1
n-1
n−1 个方程组有
n
−
1
n-1
n−1 个未知量
{
M
i
,
i
=
1
,
2
,
⋯
,
n
−
1
}
\{ M_i, i=1,2,\cdots,n-1 \}
{Mi,i=1,2,⋯,n−1},
当
M
0
=
0
,
M
n
=
0
M_0=0, M_n=0
M0=0,Mn=0 时,称为自然边界条件。
[ 2 λ 1 μ 2 2 λ 2 ⋱ ⋱ ⋱ μ n − 2 2 λ n − 2 μ n − 1 2 ] [ M 1 M 2 ⋮ M n − 2 M n − 1 ] = [ 6 f [ x 0 , x 1 , x 2 ] − μ 1 M 0 6 f [ x 1 , x 2 , x 3 ] ⋮ 6 f [ x n − 3 , x n − 2 , x n − 1 ] 6 f [ x n − 2 , x n − 1 , x n ] − λ n − 1 M n ] = [ d 1 − μ 1 M 0 d 2 ⋮ d n − 2 d n − 1 − λ n − 1 M n ] . \left[ \begin{matrix} 2 & \lambda_1 & & & \\ \mu_2 & 2 & \lambda_2 & & \\ & \ddots & \ddots & \ddots & \\ & & \mu_{n-2} & 2 & \lambda_{n-2} \\ & & & \mu_{n-1} & 2 \\ \end{matrix} \right] \left[ \begin{array}{c} M_1 \\ M_2 \\ \vdots \\ M_{n-2} \\ M_{n-1} \\ \end{array} \right] = \left[ \begin{array}{c} 6f[x_0,x_1,x_2] - \mu_1M_0 \\ 6f[x_1,x_2,x_3] \\ \vdots \\ 6f[x_{n-3},x_{n-2},x_{n-1}] \\ 6f[x_{n-2},x_{n-1},x_n] - \lambda_{n-1}M_n \\ \end{array} \right] = \left[ \begin{array}{c} d_1 - \mu_1M_0 \\ d_2 \\ \vdots \\ d_{n-2} \\ d_{n-1} - \lambda_{n-1}M_n \\ \end{array} \right] . 2μ2λ12⋱λ2⋱μn−2⋱2μn−1λn−22 M1M2⋮Mn−2Mn−1 = 6f[x0,x1,x2]−μ1M06f[x1,x2,x3]⋮6f[xn−3,xn−2,xn−1]6f[xn−2,xn−1,xn]−λn−1Mn = d1−μ1M0d2⋮dn−2dn−1−λn−1Mn .
(2) 已知 S ′ ( x 0 ) = m 0 S'(x_0) = m_0 S′(x0)=m0 和 S ′ ( x n ) = m n S'(x_n) = m_n S′(xn)=mn,代入 S ′ ( x ) S'(x) S′(x) 在 [ x 0 , x 1 ] [x_0,x_1] [x0,x1] 和 [ x n − 1 , x n ] [x_{n-1},x_n] [xn−1,xn] 的表达式种,即
{
2
M
0
+
M
1
=
6
h
0
[
f
[
x
0
,
x
1
]
−
m
0
]
=
d
0
M
n
−
1
+
2
M
n
=
6
h
n
−
1
[
m
n
−
f
[
x
n
−
1
,
x
n
]
]
=
d
n
,
\left\{ \begin{array}{l} 2M_0 + M_1 = \frac{6}{h_0}[f[x_0,x_1] - m_0] = d_0 \\ M_{n-1} + 2M_n = \frac{6}{h_{n-1}}[m_n - f[x_{n-1},x_n]] = d_n \\ \end{array} \right. ,
{2M0+M1=h06[f[x0,x1]−m0]=d0Mn−1+2Mn=hn−16[mn−f[xn−1,xn]]=dn,得到
n
+
1
n+1
n+1 个方程,
n
+
1
n+1
n+1 个未知量。
[
2
1
μ
1
2
λ
1
⋱
⋱
⋱
μ
n
−
1
2
λ
n
−
1
1
2
]
[
M
0
M
1
⋮
M
n
−
1
M
n
]
=
[
6
h
0
(
f
[
x
0
,
x
1
]
−
m
0
)
6
f
[
x
0
,
x
1
,
x
2
]
⋮
6
f
[
x
n
−
2
,
x
n
−
1
,
x
n
]
6
h
n
−
1
(
m
n
−
f
[
x
n
−
1
,
x
n
]
)
]
=
[
d
0
d
1
⋮
d
n
−
1
d
n
]
.
\left[ \begin{matrix} 2 & 1 & & & \\ \mu_1 & 2 & \lambda_1 & & \\ & \ddots & \ddots & \ddots & \\ & & \mu_{n-1} & 2 & \lambda_{n-1} \\ & & & 1 & 2 \\ \end{matrix} \right] \left[ \begin{array}{c} M_0 \\ M_1 \\ \vdots \\ M_{n-1} \\ M_n \\ \end{array} \right] = \left[ \begin{array}{c} \frac{6}{h_0}(f[x_0,x_1] - m_0) \\ 6f[x_0,x_1,x_2] \\ \vdots \\ 6f[x_{n-2},x_{n-1},x_n] \\ \frac{6}{h_{n-1}}(m_n - f[x_{n-1},x_n]) \\ \end{array} \right] = \left[ \begin{array}{c} d_0 \\ d_1 \\ \vdots \\ d_{n-1} \\ d_n \\ \end{array} \right] .
2μ112⋱λ1⋱μn−1⋱21λn−12
M0M1⋮Mn−1Mn
=
h06(f[x0,x1]−m0)6f[x0,x1,x2]⋮6f[xn−2,xn−1,xn]hn−16(mn−f[xn−1,xn])
=
d0d1⋮dn−1dn
.
(3) 已知 S ( x ) S(x) S(x) 是以 b − a b-a b−a 为周期(或 x n − x 0 x_n-x_0 xn−x0)的周期函数,即 f ( x 0 ) = f ( x n ) f(x_0) = f(x_n) f(x0)=f(xn), S ( k ) ( x 0 ) = S ( k ) ( x n ) S^{(k)}(x_0) = S^{(k)}(x_n) S(k)(x0)=S(k)(xn), ( k = 0 , 1 , 2 ) (k=0,1,2) (k=0,1,2)。
取 m 0 = m n m_0 = m_n m0=mn, M 0 = M n M_0 = M_n M0=Mn,将 S ′ ( x 0 ) = S ′ ( x n ) S'(x_0) = S'(x_n) S′(x0)=S′(xn) 加入方程组,此时化为 n n n 个变量, n n n 个方程的方程组。
令
λ
0
=
h
0
h
−
1
+
h
0
=
h
0
h
0
+
h
n
−
1
\lambda_0 = \frac{h_0}{h_{-1} + h_0} = \frac{h_0}{h_0 + h_{n-1}}
λ0=h−1+h0h0=h0+hn−1h0,
μ
0
=
1
−
λ
0
=
h
n
−
1
h
0
+
h
n
−
1
\mu_0 = 1 - \lambda_0 = \frac{h_{n-1}}{h_0 + h_{n-1}}
μ0=1−λ0=h0+hn−1hn−1,
d
0
=
6
h
0
+
h
n
−
1
[
f
[
x
0
,
x
1
]
−
f
[
x
−
1
,
x
0
]
]
=
6
f
[
x
−
1
,
x
0
,
x
1
]
d_0 = \frac{6}{h_0 + h_{n-1}}[f[x_0,x_1] - f[x_{-1},x_0]] = 6f[x_{-1},x_0,x_1]
d0=h0+hn−16[f[x0,x1]−f[x−1,x0]]=6f[x−1,x0,x1]。
[
2
λ
0
μ
0
μ
1
2
λ
1
⋱
⋱
⋱
μ
n
−
2
2
λ
n
−
2
λ
n
−
1
μ
n
−
1
2
]
[
M
0
M
1
⋮
M
n
−
2
M
n
−
1
]
=
[
6
f
[
x
−
1
,
x
0
,
x
1
]
6
f
[
x
0
,
x
1
,
x
2
]
⋮
6
f
[
x
n
−
3
,
x
n
−
2
,
x
n
−
1
]
6
f
[
x
n
−
2
,
x
n
−
1
,
x
n
]
]
=
[
d
0
d
1
⋮
d
n
−
2
d
n
−
1
]
.
\left[ \begin{matrix} 2 & \lambda_0 & & & \mu_0 \\ \mu_1 & 2 & \lambda_1 & & \\ & \ddots & \ddots & \ddots & \\ & & \mu_{n-2} & 2 & \lambda_{n-2} \\ \lambda_{n-1} & & & \mu_{n-1} & 2 \\ \end{matrix} \right] \left[ \begin{array}{c} M_0 \\ M_1 \\ \vdots \\ M_{n-2} \\ M_{n-1} \\ \end{array} \right] = \left[ \begin{array}{c} 6f[x_{-1},x_0,x_1] \\ 6f[x_0,x_1,x_2] \\ \vdots \\ 6f[x_{n-3},x_{n-2},x_{n-1}] \\ 6f[x_{n-2},x_{n-1},x_n] \\ \end{array} \right] = \left[ \begin{array}{c} d_0 \\ d_1 \\ \vdots \\ d_{n-2} \\ d_{n-1} \\ \end{array} \right] .
2μ1λn−1λ02⋱λ1⋱μn−2⋱2μn−1μ0λn−22
M0M1⋮Mn−2Mn−1
=
6f[x−1,x0,x1]6f[x0,x1,x2]⋮6f[xn−3,xn−2,xn−1]6f[xn−2,xn−1,xn]
=
d0d1⋮dn−2dn−1
.
原稿截图
参考
[1] 数值计算方法.马东升,董宁.
[2] 数值计算方法与算法(第三版).张韵华.等.
[3] 高等工程数学(第4版).于寅.
后续
会增加一些例题,完善Matlab代码。(2024/11/24已完成)