Skip to content

19.7.1 三次样条

因为高次插值逼近多项式通常有并不想要的振荡, 故将近似区间用所谓的节点分为子区间并考虑在每个子区间用相对简单的近似函数是有用的. 特别地, 常使用三次多项式. 这类分片逼近要求在节点处光滑过渡.

19.7.1.1 插值样条

1. 三次插值样条的定义和性质

设给定 N 个插值点 (xi,fi)(i=1,2,,N;x1<x2<<xN) . 三次插值样条 S(x) 由下列性质唯一确定:

(1) S(x) 满足插值条件 S(xi)=fi(i=1,2,,N) .

(2) S(x) 在任一子区间 [xi,xi+1](i=1,2,,N1) 内为次数不高于 3 的多项式.

(3) S(x) 在整个插值区间 [x1,xN] 上是二次连续可微的.

(4) S(x) 满足特殊的边界条件

**a) S(x1)=S(xN)=0 (我们称之为自然样条) 或

**b) S(x1)=f1,S(xN)=fN(f1,fN 为已知值 )

c) 当 f1=fN 时, S(x1)=S(xN),S(x1)=S(xN)S(x1)=S(xN) (称为周期样条).

由这些性质可得,对所有满足插值条件 g(xi)=fi(i=1,2,,N) 的二次连续可微函数 g(x) ,有

(19.235)x1xN[S(x)]2dxx1xN[g(x)]2dx

成立 (霍拉迪 (Holladay) 定理). 依据 (19.235),可称 S(x) 有最小全曲率,因为对已知曲线的曲率 κ ,其首次逼近为 κS (参见第 331 页 3.6.1.2,4.). 可见若称为样条的细弹性尺穿过点 (xi,fi)(i=1,2,,N) ,则其弯曲线沿着三次样条 S(x) .

2. 确定样条系数

三次插值样条 S(x) 在区间 [xi,xi+1] 上具有如下形式:

S(x)=Si(x)=ai+bi(xxi)+ci(xxi)2+di(xxi)3(i=1,2,,N1).

(19.236)

子区间的长度记为 hi=xi+1xi . 自然样条的系数以如下方式确定.

(1) 由插值条件得

(19.237)ai=fi(i=1,2,,N1).

引入不出现在多项式里的附加系数 aN=fN 是合理的.

(2) S(x) 在内节点的连续性要求

(19.238)di1=cici13hi1(i=2,3,,N1).

由自然条件得到 c1=0 ,且若引入 cN=0,(19.238)i=N 依旧成立.

(3)由 S(x) 在内节点的连续性得到关系

(19.239)bi1=aiai1hi12ci1+ci3hi1(i=2,3,,N).

(4) S(x) 在内节点的连续性要求

ci1hi1+2(hi1+hi)ci+ci+1hi=3(ai+1aihiaiai1hi1)(i=2,3,,N1).

(19.240)

因为(19.237),用来确定系数 ci(i=2,3,,N1;c1=cN=0) 的线性方程组 (19.240) 的右端已知. 其左端有如下形式:

(2(h1+h2)h2h22(h2+h3)h30h32(h3+h4)h40hN2hN22(hN2+hN1))(c2c3c4cN1).

(19.241)

系数矩阵是三对角的,故由 LR 分解 (参见第 1243 页 19.2.1.1,2.),非常容易数值求解线性方程组 (19.240). 于是 (19.239) 和 (19.238) 的所有其他系数 ci 可以确定.

19.7.1.2 光滑样条

在实际应用中已知的函数值 fi 通常是测量值,故有某些误差. 在这种情况下, 插值要求并不合理. 这就是引进三次光滑样条的原因. 若在三次插值样条中将插值要求换为

(19.242)i=1N[fiS(xi)σi]2+λx1xN[S(x)]2dx=min!

可得此类样条. 保持 S,S,S 连续性的这一要求,使得确定系数的问题是一个带方程形式条件的约束最优化问题. 使用拉格朗日函数 (参见第 611 页 6.2.5.6) 即可得到解. 详情可见 [19.34], [19.35].

在 (19.242) 中, λ(λ>0) 表示事先给定的光滑参数. 作为特殊情况,当 λ=0 时为三次插值样条. 当 λ 很大时得到光滑的近似曲线,但回到测量值不准确. 作为另一种特殊情况,当 λ= 时结果是逼近回归线. 可适当选取 λ ,例如通过机屏对话. 在 (19.242) 中的参数 σi(σi>0) 表示数值 fi(i=1,2,,N) 的测量误差的标准偏差 (参见第 1109 页 16.4.1.3, 2.).

插值点和测量点的坐标至今与样条函数的节点坐标是一致的. 对大的 N ,该方法导致包含大量三次函数 (19.236) 的样条. 由于在许多实际应用中, 只有段数很少的样条才是满意的, 一个可能的解答是自由选取节点的数目和位置. 从数值观点看, 以下面形式的样条代替 (19.236) 也是合理的:

(19.243)S(x)=i=1r+2aiNi,4(x),

这里 r 表示自由选取的节点的个数,而函数 Ni,4(x) 是所谓 4 阶正规化 B 样条 (基样条),即关于第 i 个节点的三次多项式. 详情可见 [19.8],[19.6].

version 1.24.0