主题
Search

三次样条


CubicSpline

三次样条是由分段三次样条构成的多项式,这些多项式穿过一组m控制点。每个多项式的二阶导数通常在端点处设置为零,因为这提供了一个边界条件,完成了m-2方程组。这产生了一个所谓的“自然”三次样条,并导致一个简单的三对角系统,可以很容易地求解以给出多项式的系数。然而,这种选择不是唯一可能的,并且可以使用其他边界条件来代替。

三次样条在 Wolfram 语言 中实现为BSplineCurve[pts,SplineDegree ->3].

考虑一组 n+1 点的一维样条 (y_0,y_1,...,y_n)。根据 Bartels et al. (1998, pp. 10-13),设样条的第 i 段表示为

 Y_i(t)=a_i+b_it+c_it^2+d_it^3,
(1)

其中 t 是参数 t in [0,1]i=0, ..., n-1。那么

Y_i(0)=y_i=a_i
(2)
Y_i(1)=y_(i+1)=a_i+b_i+c_i+d_i.
(3)

对每个区间中的 y_i(t) 求导,得到

Y_i^'(0)=D_i=b_i
(4)
Y_i^'(1)=D_(i+1)=b_i+2c_i+3d_i.
(5)

求解 (2)-(5) 中的 a_ib_ic_id_i,得到

a_i=y_i
(6)
b_i=D_i
(7)
c_i=3(y_(i+1)-y_i)-2D_i-D_(i+1)
(8)
d_i=2(y_i-y_(i+1))+D_i+D_(i+1).
(9)

现在要求二阶导数在点处也匹配,因此

Y_(i-1)(1)=y_i
(10)
Y_(i-1)^'(1)=Y_i^'(0)
(11)
Y_i(0)=y_i
(12)
Y_(i-1)^('')(1)=Y_i^('')(0),
(13)

对于内部点,以及端点满足

Y_0(0)=y_0
(14)
Y_(n-1)(1)=y_n
(15)

这总共给出了 4(n-1)+2=4n-2 个方程,用于求解 4n未知数。为了获得另外两个条件,要求端点处的二阶导数为零,因此

Y_0^('')(0)=0
(16)
Y_(n-1)^('')(1)=0.
(17)

重新排列所有这些方程(Bartels et al. 1998, pp. 12-13)得到以下优美的对称三对角系统

 [2 1     ; 1 4 1    ;  1 4 1   ;   1 4 1  ; | ... ... ... ... ... ...;     1 4 1;      1 2][D_0; D_1; D_2; D_3; |; D_(n-1); D_n]=[3(y_1-y_0); 3(y_2-y_0); 3(y_3-y_1); |; 3(y_(n-1)-y_(n-3)); 3(y_n-y_(n-2)); 3(y_n-y_(n-1))].
(18)

如果曲线是闭合的,则系统变为

 [4 1     1; 1 4 1    ;  1 4 1   ;   1 4 1  ; | ... ... ... ... ... ...;     1 4 1; 1     1 4][D_0; D_1; D_2; D_3; |; D_(n-1); D_n]=[3(y_1-y_n); 3(y_2-y_0); 3(y_3-y_1); |; 3(y_(n-1)-y_(n-3)); 3(y_n-y_(n-2)); 3(y_0-y_(n-1))].
(19)

参见

贝塞尔曲线, 样条, 薄板样条

使用 Wolfram|Alpha 探索

参考文献

Bartels, R. H.; Beatty, J. C.; 和 Barsky, B. A. "Hermite and Cubic Spline Interpolation." Ch. 3 in An Introduction to Splines for Use in Computer Graphics and Geometric Modelling. San Francisco, CA: Morgan Kaufmann, pp. 9-17, 1998.Burden, R. L.; Faires, J. D.; 和 Reynolds, A. C. Numerical Analysis, 6th ed. Boston, MA: Brooks/Cole, pp. 120-121, 1997.Press, W. H.; Flannery, B. P.; Teukolsky, S. A.; 和 Vetterling, W. T. "Cubic Spline Interpolation." §3.3 in Numerical Recipes in FORTRAN: The Art of Scientific Computing, 2nd ed. Cambridge, England: Cambridge University Press, pp. 107-110, 1992.

在 Wolfram|Alpha 上引用

三次样条

请引用为

Weisstein, Eric W. "Cubic Spline." 来自 MathWorld--Wolfram Web 资源。 https://mathworld.net.cn/CubicSpline.html

主题分类