兵工自动化 自动测量与控制 O. I. Automation
2006 年第 25 卷第 11 期 Automatic Measurement and Control 2006, Vol. 25, No. 11
·76·
文章编号:1006-1576(2006)11-0076-03
三次样条插值函数的构造与 Matlab 实现
许小勇
1
,钟太勇
1,2
(1. 云南民族大学 数学与计算机科学学院,云南 昆明 650031;2. 郧阳师范高等专科学校 数学系,湖北 丹江口 442700)
摘要:三次样条插值函数边界条件由实际问题对三次样条插值在端点的状态要求给出。以第 1 边界条件为例,
用节点处二阶导数表示三次样条插值函数,用追赶法求解相关方程组。通过 Matlab 编制三次样条函数的通用程序,
可直接显示各区间段三次样条函数体表达式,计算出已给点插值并显示各区间分段曲线图。
关键词:三次样条;插值函数;Matlab 程序
中图分类号:O242.1 文献标识码:A
Construction and Realization of Cubic Spline Interpolation Function
XU Xiao-yong
1
, ZHONG Tai-yong
1, 2
(1. School of Mathematics & Computer Science, Yunnan Nationalities University, Kunming, 650031, China;
2. Dept. of Mathematics, Yunyang Teacher College, Danjiangkou 442700, China)
Abstract: The boundary conditions of cubic spline were given by the practical state at the extreme points of discrete
function. Taking the first boundary condition as an example, it used the second order derivative of the junctions to
represent the cubic spline interpolation function, and solved the relative equations with chasing method. The universal
procedure of cubic spline was realized under the environment of Matlab, which could compute the interpolation point and
directly display the exact expression of function and segmental curve in each interval.
Keywords: Cubic spline; Interpolation function; Matlab program
0 引言
分段低次样条插值虽然计算简单、稳定性好、
收敛性有保证且易在电子计算机上实现,但只能保
证各小段曲线在连接处的连续性,不能保证整件曲
线的光滑性。利用样条插值,既可保持分段低次插
值多项式,又可提高插值函数光滑性。故给出分段
三次样条插值的构造过程、算法步骤,利用 Matlab
软件编写三次样条插值函数通用程序,并通过数值
算例证明程序的正确性。
1 三次样条函数的定义及特征
定义:设 [a,b] 上有插值节点,a=x
1
<x
2
<…<
x
n
=b,对应函数值为 y
1
,y
2
,…y
n
。若函数 S(x) 满
足 S(x
j
)= y
j
( j= 1,2,… ,n), S(x)在 [x
j
,x
j+1
]( j=
1,2,…,n-1)上都是不高于三次的多项式(为了与其
对应 j 从 1 开始,在 Matlab 中元素脚标从 1 开始)。
当 S(x)
在 [a,b] 具有二阶连续导数。则称 S(x) 为三
次样条插值函数。要求 S(x)
只需在每个子区间
[x
j
,x
j+1
] 上确定 1 个三次多项式,设为:
S
j
(x)=a
j
x
3
+b
j
x
2
+c
j
x+d
j
, (j=1,2,…,n-1) (1)
其中 a
j
,b
j
,c
j
,d
j
待定,并要使它满足:
S(x
j
)=y
j
, S(x
j
-0)=S(x
j
+0), (j=2,…,n-1) (2)
S
'(x
j
-0)=S'(x
j
+0), S"(x
j
-0)=S"(x
j
+0), (j=2,…,n-1) (3)
式 (2)、(3)共给出 n+3(n-2)=4n-6 个条件,
需要待定 4(n-1)
个系数,因此要唯一确定三次插值
函数,还要附加 2 个边界条件。通常由实际问题对
三次样条插值在端点的状态要求给出。常用边界的
条件有以下 3 类。
第 1 类边界条件:给定端点处的一阶导数值,
S'(x
1
)=y
1
',S'(x
n
)=y
n
'。
第 2 类边界条件:给定端点处的二阶导数值,
S"(x
1
)=y
1
",S"(x
n
)=y
n
"。特殊情况 y
1
"=y
n
"=0,
称为自然边界条件。
第 3 类边界条件是周期性条件,如果 y=f(x)
是以 b-a 为周期的函数,于是 S(x)
在端点处满足条
件 S'(x
1
+0)=S'(x
n
-0),S"(x+0)=S"(x
n
-0)。
下以第 1 边界条件为例,利用节点处二阶导数
来表示三次样条插值函数,给出具体的推导过程。
2 三次样条插值函数的推导过程
注意到 S(x) 在 [x
j
, x
j+1
](j=1,2,…,n-1)上是三
次多项式,于是 S"(x)在 [x
j
, x
j+1
] 上是一次多项式,
如果 S"(x) 在 [x
j
,x
j+1
](j=1,2,…,n-1)两端点上的值
已知,设 S"(x
j
)=M
j
,S"(x
j+1
)=M
j+1
,则 S"(x) 的表达
式为:
1j
j
j
j
j
1j
''
M
h
xx
M
h
xx
)x(S
+
+
−
+
−
=
,其中 h
j
=
x
j+1
-x
j
,对 S"(x) 进行两次积分,则得到 1 个具有 2
收稿日期:2006-07-21;修回日期:2006-09-09
作者简介:许小勇(1983-),男,江西人,云南民族大学在读硕士,从事智能计算、小波分析、图像处理研究。