B样条曲线反算控制点
1 De Boor算法
设 u ∈ [ u j , u j + 1 ) u\in[u_j,u_{j+1}) u∈[uj,uj+1), V i , 0 = V i V_{i,0}=V_i Vi,0=Vi,对于 i = j − p , ⋯ , j i=j-p,\cdots,j i=j−p,⋯,j
令
V i , k = u i + p + 1 − k − u u i + p + 1 − k − u i V i − 1 , k − 1 + u − u i u i + p + 1 − k − u i V i , k − 1 , k = 1 , ⋯ , p , i = j − p + k , ⋯ , j V_{i,k}=\dfrac{u_{i+p+1-k}-u}{u_{i+p+1-k}-u_i}V_{i-1,k-1}+\dfrac{u-u_i}{u_{i+p+1-k}-u_i}V_{i,k-1},\quad k=1,\cdots,p,\quad i=j-p+k,\cdots,j Vi,k=ui+p+1−k−uiui+p+1−k−uVi−1,k−1+ui+p+1−k−uiu−uiVi,k−1,k=1,⋯,p,i=j−p+k,⋯,j
其中
V
i
V_i
Vi为控制点,
p
p
p为B样条的幂次,
P
(
u
)
P(u)
P(u)为B样条曲线,则
P
(
u
)
=
V
j
,
p
.
P(u)=V_{j,p}.
P(u)=Vj,p.
2 B样条曲线上点的计算公式
设 u ∈ [ u j , u j + 1 ) u\in[u_j,u_{j+1}) u∈[uj,uj+1),则
当
p
=
3
p=3
p=3时,
P
(
u
)
=
(
u
j
+
1
−
u
)
3
(
u
j
+
1
−
u
j
)
(
u
j
+
1
−
u
j
−
1
)
(
u
j
+
1
−
u
j
−
2
)
V
j
−
3
+
[
(
u
j
+
1
−
u
)
2
(
u
−
u
j
−
2
)
(
u
j
+
1
−
u
j
)
(
u
j
+
1
−
u
j
−
1
)
(
u
j
+
1
−
u
j
−
2
)
+
(
u
j
+
1
−
u
)
(
u
−
u
j
−
1
)
(
u
j
+
2
−
u
)
(
u
j
+
1
−
u
j
)
(
u
j
+
1
−
u
j
−
1
)
(
u
j
+
2
−
u
j
−
1
)
+
(
u
−
u
j
)
(
u
j
+
2
−
u
)
2
(
u
j
+
1
−
u
j
)
(
u
j
+
2
−
u
j
)
(
u
j
+
2
−
u
j
−
1
)
]
V
j
−
2
+
[
(
u
j
+
1
−
u
)
(
u
−
u
j
−
1
)
2
(
u
j
+
1
−
u
j
)
(
u
j
+
1
−
u
j
−
1
)
(
u
j
+
2
−
u
j
−
1
)
+
(
u
−
u
j
)
(
u
j
+
2
−
u
)
(
u
−
u
j
−
1
)
(
u
j
+
1
−
u
j
)
(
u
j
+
2
−
u
j
)
(
u
j
+
2
−
u
j
−
1
)
+
(
u
−
u
j
)
2
(
u
j
+
3
−
u
)
(
u
j
+
1
−
u
j
)
(
u
j
+
2
−
u
j
)
(
u
j
+
3
−
u
j
)
]
V
j
−
1
+
(
u
−
u
j
)
3
(
u
j
+
1
−
u
j
)
(
u
j
+
2
−
u
j
)
(
u
j
+
3
−
u
j
)
V
j
.
\begin{aligned} P(u)=&\dfrac{(u_{j+1}-u)^3}{(u_{j+1}-u_j)(u_{j+1}-u_{j-1})(u_{j+1}-u_{j-2})}V_{j-3} +\left[\dfrac{(u_{j+1}-u)^2(u-u_{j-2})}{(u_{j+1}-u_j)(u_{j+1}-u_{j-1})(u_{j+1}-u_{j-2})}\right. \\ & \left. +\dfrac{(u_{j+1}-u)(u-u_{j-1})(u_{j+2}-u)}{(u_{j+1}-u_j)(u_{j+1}-u_{j-1})(u_{j+2}-u_{j-1})} +\dfrac{(u-u_j)(u_{j+2}-u)^2}{(u_{j+1}-u_j)(u_{j+2}-u_j)(u_{j+2}-u_{j-1})}\right]V_{j-2} \\ &+\left[\dfrac{(u_{j+1}-u)(u-u_{j-1})^2}{(u_{j+1}-u_j)(u_{j+1}-u_{j-1})(u_{j+2}-u_{j-1})} +\dfrac{(u-u_j)(u_{j+2}-u)(u-u_{j-1})}{(u_{j+1}-u_j)(u_{j+2}-u_j)(u_{j+2}-u_{j-1})} \right. \\ &\left. +\dfrac{(u-u_j)^2(u_{j+3}-u)}{(u_{j+1}-u_j)(u_{j+2}-u_j)(u_{j+3}-u_j)}\right]V_{j-1} +\dfrac{(u-u_j)^3}{(u_{j+1}-u_j)(u_{j+2}-u_j)(u_{j+3}-u_j)}V_j. \end{aligned}
P(u)=(uj+1−uj)(uj+1−uj−1)(uj+1−uj−2)(uj+1−u)3Vj−3+[(uj+1−uj)(uj+1−uj−1)(uj+1−uj−2)(uj+1−u)2(u−uj−2)+(uj+1−uj)(uj+1−uj−1)(uj+2−uj−1)(uj+1−u)(u−uj−1)(uj+2−u)+(uj+1−uj)(uj+2−uj)(uj+2−uj−1)(u−uj)(uj+2−u)2]Vj−2+[(uj+1−uj)(uj+1−uj−1)(uj+2−uj−1)(uj+1−u)(u−uj−1)2+(uj+1−uj)(uj+2−uj)(uj+2−uj−1)(u−uj)(uj+2−u)(u−uj−1)+(uj+1−uj)(uj+2−uj)(uj+3−uj)(u−uj)2(uj+3−u)]Vj−1+(uj+1−uj)(uj+2−uj)(uj+3−uj)(u−uj)3Vj.
当
p
=
2
p=2
p=2时,
P
(
u
)
=
(
u
j
+
1
−
u
)
2
(
u
j
+
1
−
u
j
)
(
u
j
+
1
−
u
j
−
1
)
V
j
−
2
+
[
(
u
j
+
1
−
u
)
(
u
−
u
j
−
1
)
(
u
j
+
1
−
u
j
)
(
u
j
+
1
−
u
j
−
1
)
+
(
u
−
u
j
)
(
u
j
+
2
−
u
)
(
u
j
+
1
−
u
j
)
(
u
j
+
2
−
u
j
)
]
V
j
−
1
+
(
u
−
u
j
)
2
(
u
j
+
1
−
u
j
)
(
u
j
+
2
−
u
j
)
V
j
.
\begin{aligned} P(u)=&\dfrac{(u_{j+1}-u)^2}{(u_{j+1}-u_j)(u_{j+1}-u_{j-1})}V_{j-2} +\left[\dfrac{(u_{j+1}-u)(u-u_{j-1})}{(u_{j+1}-u_j)(u_{j+1}-u_{j-1})} \right. \\ &\left.+\dfrac{(u-u_j)(u_{j+2}-u)}{(u_{j+1}-u_j)(u_{j+2}-u_j)}\right]V_{j-1} +\dfrac{(u-u_j)^2}{(u_{j+1}-u_j)(u_{j+2}-u_j)}V_j. \end{aligned}
P(u)=(uj+1−uj)(uj+1−uj−1)(uj+1−u)2Vj−2+[(uj+1−uj)(uj+1−uj−1)(uj+1−u)(u−uj−1)+(uj+1−uj)(uj+2−uj)(u−uj)(uj+2−u)]Vj−1+(uj+1−uj)(uj+2−uj)(u−uj)2Vj.
当
p
=
1
p=1
p=1时,
P
(
u
)
=
u
j
+
1
−
u
u
j
+
1
−
u
j
V
j
−
1
+
u
−
u
j
u
j
+
1
−
u
j
V
j
.
P(u)=\dfrac{u_{j+1}-u}{u_{j+1}-u_j}V_{j-1}+\dfrac{u-u_j}{u_{j+1}-u_j}V_j.
P(u)=uj+1−ujuj+1−uVj−1+uj+1−uju−ujVj.
3 3次B样条曲线反求控制点
3.1 3次B样条曲线
当
p
=
3
p=3
p=3并且
u
∈
[
u
j
,
u
j
+
1
)
u\in[u_j,u_{j+1})
u∈[uj,uj+1)时,
P
(
u
)
=
∑
i
=
0
n
N
i
,
3
(
u
)
V
i
=
∑
i
=
j
−
3
j
N
i
,
3
(
u
)
V
i
.
P(u)=\sum^n_{i=0}N_{i,3}(u)V_i=\sum^j_{i=j-3}N_{i,3}(u)V_i.
P(u)=i=0∑nNi,3(u)Vi=i=j−3∑jNi,3(u)Vi.
其中,
N
j
−
3
,
3
(
u
)
=
(
u
j
+
1
−
u
)
3
(
u
j
+
1
−
u
j
)
(
u
j
+
1
−
u
j
−
1
)
(
u
j
+
1
−
u
j
−
2
)
.
N
j
−
2
,
3
(
u
)
=
(
u
j
+
1
−
u
)
2
(
u
−
u
j
−
2
)
(
u
j
+
1
−
u
j
)
(
u
j
+
1
−
u
j
−
1
)
(
u
j
+
1
−
u
j
−
2
)
+
(
u
j
+
1
−
u
)
(
u
−
u
j
−
1
)
(
u
j
+
2
−
u
)
(
u
j
+
1
−
u
j
)
(
u
j
+
1
−
u
j
−
1
)
(
u
j
+
2
−
u
j
−
1
)
+
(
u
−
u
j
)
(
u
j
+
2
−
u
)
2
(
u
j
+
1
−
u
j
)
(
u
j
+
2
−
u
j
)
(
u
j
+
2
−
u
j
−
1
)
.
N
j
−
1
,
3
(
u
)
=
(
u
j
+
1
−
u
)
(
u
−
u
j
−
1
)
2
(
u
j
+
1
−
u
j
)
(
u
j
+
1
−
u
j
−
1
)
(
u
j
+
2
−
u
j
−
1
)
+
(
u
−
u
j
)
(
u
j
+
2
−
u
)
(
u
−
u
j
−
1
)
(
u
j
+
1
−
u
j
)
(
u
j
+
2
−
u
j
)
(
u
j
+
2
−
u
j
−
1
)
+
(
u
−
u
j
)
2
(
u
j
+
3
−
u
)
(
u
j
+
1
−
u
j
)
(
u
j
+
2
−
u
j
)
(
u
j
+
3
−
u
j
)
.
N
j
,
3
(
u
)
=
(
u
−
u
j
)
3
(
u
j
+
1
−
u
j
)
(
u
j
+
2
−
u
j
)
(
u
j
+
3
−
u
j
)
.
\begin{aligned} N_{j-3,3}(u)=&\dfrac{(u_{j+1}-u)^3}{(u_{j+1}-u_j)(u_{j+1}-u_{j-1})(u_{j+1}-u_{j-2})}. \\ N_{j-2,3}(u)=&\dfrac{(u_{j+1}-u)^2(u-u_{j-2})}{(u_{j+1}-u_j)(u_{j+1}-u_{j-1})(u_{j+1}-u_{j-2})} +\dfrac{(u_{j+1}-u)(u-u_{j-1})(u_{j+2}-u)}{(u_{j+1}-u_j)(u_{j+1}-u_{j-1})(u_{j+2}-u_{j-1})} \\ &+\dfrac{(u-u_j)(u_{j+2}-u)^2}{(u_{j+1}-u_j)(u_{j+2}-u_j)(u_{j+2}-u_{j-1})}. \\ N_{j-1,3}(u)=&\dfrac{(u_{j+1}-u)(u-u_{j-1})^2}{(u_{j+1}-u_j)(u_{j+1}-u_{j-1})(u_{j+2}-u_{j-1})} +\dfrac{(u-u_j)(u_{j+2}-u)(u-u_{j-1})}{(u_{j+1}-u_j)(u_{j+2}-u_j)(u_{j+2}-u_{j-1})} \\ &+\dfrac{(u-u_j)^2(u_{j+3}-u)}{(u_{j+1}-u_j)(u_{j+2}-u_j)(u_{j+3}-u_j)}. \\ N_{j,3}(u)=&\dfrac{(u-u_j)^3}{(u_{j+1}-u_j)(u_{j+2}-u_j)(u_{j+3}-u_j)}. \end{aligned}
Nj−3,3(u)=Nj−2,3(u)=Nj−1,3(u)=Nj,3(u)=(uj+1−uj)(uj+1−uj−1)(uj+1−uj−2)(uj+1−u)3.(uj+1−uj)(uj+1−uj−1)(uj+1−uj−2)(uj+1−u)2(u−uj−2)+(uj+1−uj)(uj+1−uj−1)(uj+2−uj−1)(uj+1−u)(u−uj−1)(uj+2−u)+(uj+1−uj)(uj+2−uj)(uj+2−uj−1)(u−uj)(uj+2−u)2.(uj+1−uj)(uj+1−uj−1)(uj+2−uj−1)(uj+1−u)(u−uj−1)2+(uj+1−uj)(uj+2−uj)(uj+2−uj−1)(u−uj)(uj+2−u)(u−uj−1)+(uj+1−uj)(uj+2−uj)(uj+3−uj)(u−uj)2(uj+3−u).(uj+1−uj)(uj+2−uj)(uj+3−uj)(u−uj)3.
于是,可以得到
N
j
−
3
,
3
(
u
j
)
=
(
u
j
+
1
−
u
j
)
2
(
u
j
+
1
−
u
j
−
1
)
(
u
j
+
1
−
u
j
−
2
)
.
N
j
−
2
,
3
(
u
j
)
=
(
u
j
+
1
−
u
j
)
(
u
j
−
u
j
−
2
)
(
u
j
+
1
−
u
j
−
1
)
(
u
j
+
1
−
u
j
−
2
)
+
(
u
j
−
u
j
−
1
)
(
u
j
+
2
−
u
j
)
(
u
j
+
1
−
u
j
−
1
)
(
u
j
+
2
−
u
j
−
1
)
.
N
j
−
1
,
3
(
u
j
)
=
(
u
j
−
u
j
−
1
)
2
(
u
j
+
1
−
u
j
−
1
)
(
u
j
+
2
−
u
j
−
1
)
.
N
j
,
3
(
u
j
)
=
0.
\begin{aligned} N_{j-3,3}(u_j)=&\dfrac{(u_{j+1}-u_j)^2}{(u_{j+1}-u_{j-1})(u_{j+1}-u_{j-2})}. \\ N_{j-2,3}(u_j)=&\dfrac{(u_{j+1}-u_j)(u_j-u_{j-2})}{(u_{j+1}-u_{j-1})(u_{j+1}-u_{j-2})} +\dfrac{(u_j-u_{j-1})(u_{j+2}-u_j)}{(u_{j+1}-u_{j-1})(u_{j+2}-u_{j-1})}. \\ N_{j-1,3}(u_j)=&\dfrac{(u_j-u_{j-1})^2}{(u_{j+1}-u_{j-1})(u_{j+2}-u_{j-1})}. \\ N_{j,3}(u_j)=&0. \end{aligned}
Nj−3,3(uj)=Nj−2,3(uj)=Nj−1,3(uj)=Nj,3(uj)=(uj+1−uj−1)(uj+1−uj−2)(uj+1−uj)2.(uj+1−uj−1)(uj+1−uj−2)(uj+1−uj)(uj−uj−2)+(uj+1−uj−1)(uj+2−uj−1)(uj−uj−1)(uj+2−uj).(uj+1−uj−1)(uj+2−uj−1)(uj−uj−1)2.0.
则有
P
(
u
j
)
=
∑
i
=
j
−
3
j
N
i
,
3
(
u
j
)
V
i
=
N
j
−
3
,
3
(
u
j
)
V
j
−
3
+
N
j
−
2
,
3
(
u
j
)
V
j
−
2
+
N
j
−
1
,
3
(
u
j
)
V
j
−
1
.
P(u_j)=\sum^j_{i=j-3}N_{i,3}(u_j)V_i=N_{j-3,3}(u_j)V_{j-3}+N_{j-2,3}(u_j)V_{j-2} +N_{j-1,3}(u_j)V_{j-1}.
P(uj)=i=j−3∑jNi,3(uj)Vi=Nj−3,3(uj)Vj−3+Nj−2,3(uj)Vj−2+Nj−1,3(uj)Vj−1.
3.2 根据型值点列出方程组
假设
节点矢量 { 0 , 0 , 0 , u 1 , u 2 , ⋯ , u n − 1 , u n , 1 , 1 , 1 } \{0,0,0,u_1,u_2,\cdots,u_{n-1},u_n,1,1,1\} {0,0,0,u1,u2,⋯,un−1,un,1,1,1}
型值点序列 { P 1 , ⋯ , P n } \{P_1,\cdots,P_n\} {P1,⋯,Pn}
控制点序列 { V 1 , ⋯ , V n + 2 } \{V_1,\cdots,V_{n+2}\} {V1,⋯,Vn+2}
则
u
1
=
0
,
u
n
=
1.
V
1
=
P
1
,
V
n
+
2
=
P
n
.
\begin{aligned} &u_1=0,\quad u_n=1. \\ &V_1=P_1,\quad V_{n+2}=P_n. \\ \end{aligned}
u1=0,un=1.V1=P1,Vn+2=Pn.
并且
(
N
2
,
3
(
u
2
)
N
3
,
3
(
u
2
)
N
4
,
3
(
u
2
)
⋱
⋱
⋱
N
n
−
1
,
3
(
u
n
−
1
)
N
n
,
3
(
u
n
−
1
)
N
n
+
1
,
3
(
u
n
−
1
)
)
(
V
2
⋮
V
n
+
1
)
=
(
P
2
⋮
P
n
+
1
)
\begin{aligned} \begin{pmatrix} N_{2,3}(u_2) & N_{3,3}(u_2) & N_{4,3}(u_2) & & \\ & \ddots & \ddots & \ddots & \\ & & N_{n-1,3}(u_{n-1}) & N_{n,3}(u_{n-1}) & N_{n+1,3}(u_{n-1}) \\ \end{pmatrix} \begin{pmatrix} V_2 \\ \vdots \\ V_{n+1} \\ \end{pmatrix} =\begin{pmatrix} P_2 \\ \vdots \\ P_{n+1} \\ \end{pmatrix} \end{aligned}
⎝⎛N2,3(u2)N3,3(u2)⋱N4,3(u2)⋱Nn−1,3(un−1)⋱Nn,3(un−1)Nn+1,3(un−1)⎠⎞⎝⎜⎛V2⋮Vn+1⎠⎟⎞=⎝⎜⎛P2⋮Pn+1⎠⎟⎞
上式共有
n
−
2
n-2
n−2个方程,但有
n
n
n个控制点需要求解,因此需要补充端点条件。
3.3 端点条件
如果给定端点切矢,
P
1
′
=
T
1
P_1'=T_1
P1′=T1,
P
n
′
=
T
n
P_n'=T_n
Pn′=Tn,即
T
1
=
P
1
′
=
3
u
2
−
u
1
(
V
2
−
V
1
)
.
T
n
=
P
n
′
=
3
u
n
−
u
n
−
1
(
V
n
+
2
−
V
n
+
1
)
.
\begin{aligned} &T_1=P_1'=\dfrac{3}{u_2-u_1}(V_2-V_1). \\ &T_n=P_n'=\dfrac{3}{u_n-u_{n-1}}(V_{n+2}-V_{n+1}). \\ \end{aligned}
T1=P1′=u2−u13(V2−V1).Tn=Pn′=un−un−13(Vn+2−Vn+1).
如果取自由端点条件,则
P
1
′
′
=
0
P_1''=0
P1′′=0,
P
n
′
′
=
0
P_n''=0
Pn′′=0,即
0
=
P
1
′
′
=
6
(
u
2
−
u
1
)
2
(
V
1
−
V
2
)
−
6
(
u
2
−
u
1
)
(
u
3
−
u
1
)
(
V
2
−
V
3
)
.
0
=
P
n
′
′
=
6
(
u
n
−
u
n
−
1
)
(
u
n
−
u
n
−
2
)
(
V
n
−
V
n
+
1
)
−
6
(
u
n
−
u
n
−
1
)
2
(
V
n
+
1
−
V
n
+
2
)
.
\begin{aligned} &0=P_1''=\dfrac{6}{(u_2-u_1)^2}(V_1-V_2)-\dfrac{6}{(u_2-u_1)(u_3-u_1)}(V_2-V_3). \\ &0=P_n''=\dfrac{6}{(u_n-u_{n-1})(u_n-u_{n-2})}(V_n-V_{n+1})-\dfrac{6}{(u_n-u_{n-1})^2}(V_{n+1}-V_{n+2}). \\ \end{aligned}
0=P1′′=(u2−u1)26(V1−V2)−(u2−u1)(u3−u1)6(V2−V3).0=Pn′′=(un−un−1)(un−un−2)6(Vn−Vn+1)−(un−un−1)26(Vn+1−Vn+2).
于是得到如下方程组
(
b
1
c
1
N
2
,
3
(
u
2
)
N
3
,
3
(
u
2
)
N
4
,
3
(
u
2
)
⋱
⋱
⋱
N
n
−
1
,
3
(
u
n
−
1
)
N
n
,
3
(
u
n
−
1
)
N
n
+
1
,
3
(
u
n
−
1
)
a
n
b
n
)
(
V
2
V
3
⋮
V
n
V
n
+
1
)
=
(
d
1
P
2
⋮
P
n
−
1
d
n
)
\begin{aligned} \begin{pmatrix} b_1 & c_1 & & & \\ N_{2,3}(u_2) & N_{3,3}(u_2) & N_{4,3}(u_2) & & \\ & \ddots & \ddots & \ddots & \\ & & N_{n-1,3}(u_{n-1}) & N_{n,3}(u_{n-1}) & N_{n+1,3}(u_{n-1}) \\ & & & a_n & b_n \\ \end{pmatrix} \begin{pmatrix} V_2 \\ V_3 \\ \vdots \\ V_n \\ V_{n+1} \\ \end{pmatrix} =\begin{pmatrix} d_1 \\ P_2 \\ \vdots \\ P_{n-1} \\ d_n \\ \end{pmatrix} \end{aligned}
⎝⎜⎜⎜⎜⎛b1N2,3(u2)c1N3,3(u2)⋱N4,3(u2)⋱Nn−1,3(un−1)⋱Nn,3(un−1)anNn+1,3(un−1)bn⎠⎟⎟⎟⎟⎞⎝⎜⎜⎜⎜⎜⎛V2V3⋮VnVn+1⎠⎟⎟⎟⎟⎟⎞=⎝⎜⎜⎜⎜⎜⎛d1P2⋮Pn−1dn⎠⎟⎟⎟⎟⎟⎞
其中,
当给定端点切矢时,
b
1
=
3
u
2
−
u
1
.
c
1
=
0.
d
1
=
P
1
′
+
3
u
2
−
u
1
P
1
.
a
n
=
0.
b
n
=
3
u
n
−
u
n
−
1
.
d
n
=
3
u
n
−
u
n
−
1
P
n
−
P
n
′
.
\begin{aligned} &b_1=\dfrac{3}{u_2-u_1}. \\ &c_1=0. \\ &d_1=P_1'+\dfrac{3}{u_2-u_1}P_1. \\ &a_n=0. \\ &b_n=\dfrac{3}{u_n-u_{n-1}}. \\ &d_n=\dfrac{3}{u_n-u_{n-1}}P_n-P_n'. \end{aligned}
b1=u2−u13.c1=0.d1=P1′+u2−u13P1.an=0.bn=un−un−13.dn=un−un−13Pn−Pn′.
当取自由端点条件时,
b
1
=
6
(
u
2
−
u
1
)
2
+
6
(
u
2
−
u
1
)
(
u
3
−
u
1
)
.
c
1
=
−
6
(
u
2
−
u
1
)
(
u
3
−
u
1
)
.
d
1
=
6
(
u
2
−
u
1
)
2
P
1
.
a
n
=
−
6
(
u
n
−
u
n
−
1
)
(
u
n
−
u
n
−
2
)
.
b
n
=
6
(
u
n
−
u
n
−
1
)
(
u
n
−
u
n
−
2
)
+
6
(
u
n
−
u
n
−
1
)
2
.
d
n
=
6
(
u
n
−
u
n
−
1
)
2
P
n
.
\begin{aligned} &b_1=\dfrac{6}{(u_2-u_1)^2}+\dfrac{6}{(u_2-u_1)(u_3-u_1)}. \\ &c_1=-\dfrac{6}{(u_2-u_1)(u_3-u_1)}. \\ &d_1=\dfrac{6}{(u_2-u_1)^2}P_1. \\ &a_n=-\dfrac{6}{(u_n-u_{n-1})(u_n-u_{n-2})}. \\ &b_n=\dfrac{6}{(u_n-u_{n-1})(u_n-u_{n-2})}+\dfrac{6}{(u_n-u_{n-1})^2}. \\ &d_n=\dfrac{6}{(u_n-u_{n-1})^2}P_n. \\ \end{aligned}
b1=(u2−u1)26+(u2−u1)(u3−u1)6.c1=−(u2−u1)(u3−u1)6.d1=(u2−u1)26P1.an=−(un−un−1)(un−un−2)6.bn=(un−un−1)(un−un−2)6+(un−un−1)26.dn=(un−un−1)26Pn.
两种端点条件可以混合使用。但首、末端点都分别与首、末型值点重合,即
V
1
=
P
1
,
V
n
+
2
=
P
n
.
V_1=P_1,\quad V_{n+2}=P_n.
V1=P1,Vn+2=Pn.
3.4 追赶法求解方程组
设
A = ( a 1 c 1 b 2 a 2 c 2 ⋱ ⋱ ⋱ b n − 1 a n − 1 c n − 1 b n a n ) A=\begin{pmatrix}a_1 & c_1 & & & \\b_2 & a_2 & c_2 & & \\& \ddots & \ddots & \ddots & \\ & & b_{n-1} & a_{n-1} & c_{n-1} \\ & & & b_n & a_n \end{pmatrix} A=⎝⎜⎜⎜⎜⎛a1b2c1a2⋱c2⋱bn−1⋱an−1bncn−1an⎠⎟⎟⎟⎟⎞,对于一切 ∣ i − j ∣ > 1 |i-j|>1 ∣i−j∣>1, A i j = 0 A_{ij}=0 Aij=0。
如果
A
A
A满足Doolittle分解,即
L
U
=
A
=
(
1
p
2
1
⋱
⋱
p
n
−
1
1
p
n
1
)
(
q
1
c
1
q
2
c
2
⋱
⋱
q
n
−
1
c
n
−
1
q
n
)
\begin{aligned} LU=A=\begin{pmatrix} 1 & & & & \\ p_2 & 1 & & & \\ & \ddots & \ddots & & \\ & & p_{n-1} & 1 & \\ & & & p_n & 1 \end{pmatrix} \begin{pmatrix} q_1 & c_1 & & & \\ & q_2 & c_2 & & \\ & & \ddots & \ddots & \\ & & & q_{n-1} & c_{n-1} \\ & & & & q_n \\ \end{pmatrix} \end{aligned}
LU=A=⎝⎜⎜⎜⎜⎛1p21⋱⋱pn−11pn1⎠⎟⎟⎟⎟⎞⎝⎜⎜⎜⎜⎛q1c1q2c2⋱⋱qn−1cn−1qn⎠⎟⎟⎟⎟⎞
其中
{
q
1
=
a
1
,
p
i
=
b
i
q
i
−
1
,
i
=
2
,
⋯
,
n
q
i
=
a
i
−
p
i
c
i
−
1
,
i
=
2
,
⋯
,
n
\begin{aligned} \begin{cases} q_1=a_1, \\ p_i=\dfrac{b_i}{q_{i-1}},\quad i=2,\cdots,n \\ q_i=a_i-p_ic_{i-1},\quad i=2,\cdots,n \\ \end{cases} \end{aligned}
⎩⎪⎪⎨⎪⎪⎧q1=a1,pi=qi−1bi,i=2,⋯,nqi=ai−pici−1,i=2,⋯,n
于是,求
A
x
=
b
Ax=b
Ax=b等价于求
{
L
y
=
b
U
x
=
y
\begin{cases}Ly=b \\Ux=y\end{cases}
{Ly=bUx=y,其中
b
=
(
b
1
,
⋯
,
b
n
)
T
b=(b_1,\cdots,b_n)^T
b=(b1,⋯,bn)T,故有
(
1
p
2
1
⋱
⋱
p
n
1
)
(
y
1
y
2
⋮
y
n
)
=
(
b
1
b
2
⋮
b
n
)
\begin{aligned} \begin{pmatrix} 1 & & & \\ p_2 & 1 & & \\ & \ddots & \ddots & \\ & & p_n & 1 \\ \end{pmatrix} \begin{pmatrix} y_1 \\ y_2 \\ \vdots \\ y_n \\ \end{pmatrix} =\begin{pmatrix} b_1 \\ b_2 \\ \vdots \\ b_n \\ \end{pmatrix} \end{aligned}
⎝⎜⎜⎛1p21⋱⋱pn1⎠⎟⎟⎞⎝⎜⎜⎜⎛y1y2⋮yn⎠⎟⎟⎟⎞=⎝⎜⎜⎜⎛b1b2⋮bn⎠⎟⎟⎟⎞
解得
{
y
1
=
b
1
,
y
i
=
b
i
−
p
i
y
i
−
1
,
i
=
2
,
⋯
,
n
.
\begin{cases}y_1=b_1, \\y_i=b_i-p_iy_{i-1},\quad i=2,\cdots,n.\end{cases}
{y1=b1,yi=bi−piyi−1,i=2,⋯,n.
再由
(
q
1
c
1
⋱
⋱
q
n
−
1
c
n
−
1
q
n
)
(
x
1
⋮
x
n
−
1
x
n
)
=
(
y
1
⋮
y
n
−
1
y
n
)
\begin{aligned} \begin{pmatrix} q_1 & c_1 & & \\ & \ddots & \ddots & \\ & & q_{n-1} & c_{n-1} \\ & & & q_n \\ \end{pmatrix} \begin{pmatrix} x_1 \\ \vdots \\ x_{n-1} \\ x_n \\ \end{pmatrix} =\begin{pmatrix} y_1 \\ \vdots \\ y_{n-1} \\ y_n \\ \end{pmatrix} \end{aligned}
⎝⎜⎜⎛q1c1⋱⋱qn−1cn−1qn⎠⎟⎟⎞⎝⎜⎜⎜⎛x1⋮xn−1xn⎠⎟⎟⎟⎞=⎝⎜⎜⎜⎛y1⋮yn−1yn⎠⎟⎟⎟⎞
解得
{
x
n
=
y
n
q
n
,
x
i
=
y
i
−
c
i
x
i
+
1
q
i
,
i
=
n
−
1
,
⋯
,
1.
\begin{cases}x_n=\dfrac{y_n}{q_n},\\ x_i=\dfrac{y_i-c_ix_{i+1}}{q_i},\quad i=n-1,\cdots,1.\end{cases}
⎩⎪⎨⎪⎧xn=qnyn,xi=qiyi−cixi+1,i=n−1,⋯,1.