带二阶Hermite插值条件的最小二乘估计
2014-09-04
(西华大学数学与计算机学院, 四川 成都 610039)
插值,即构造函数使得已知点能最大程度的满足某种函数关系,通过构造已知点和点之间的某种内在规律的数量关系,进而推测未知点的性质。在现实生活中,我们的研究通常是基于有限样本数据,且已知的这些数据也很可能不会恰好满足已知的某个函数。插值法就是构造函数,从而揭示样本数据间的内在规律的方法。
常见的插值法有:Lagrange插值、Newton插值多项式、Hermite插值、分段低次插值、三次样条插值[1-7]。每种插值法都有其优缺点。Lagrange插值结构紧凑、思想清晰、显式表示、公式对称,与插值节点的编号无关,适合理论分析;但是该方法无承袭性。Newton插值法既有Lagrange插值公式便于理论分析的优点,又具有承袭性,从而在需要增加节点时,可大大减少计算量;然而该法只是Lagrange插值公式的一种变形[8-11]。Hermite插值作为显式算法,简单且收敛性、稳定性好,而且具有局部性,即如果要修改某个数据,插值曲线仅仅在某个局部范围内受到影响,而代数插值却会影响到整个插值区间;然而该法光滑性不高,若要提高光滑度,必须提供较多的信息才能达到。分段三次Hermite插值比分段线性插值效果明显要好,但其要求给出节点上的导数值,所要提供的已知信息变多,其光滑度也不高,只有一阶导数连续。三次样条插值具有良好的收敛性与稳定性,又有二阶光滑性,理论上和实际都有重要意义。
实际工作中,变量间未必都有线性关系,如服药后血药浓度与时间的关系、疾病疗效与疗程长短的关系、毒物剂量与致死率的关系等常呈曲线关系。曲线拟合是指选择适当的曲线类型来拟合观测数据,并用拟合的曲线方程分析两变量间的关系。已知数据通常本身不一定可靠,个别数据的误差甚至可能远远大于已知数据,不妨记样本数据点为(xk,yk),k=1,2,…,n,并称为拟合点。最小二乘法在工业技术和其他科学研究中有广泛应用。如果还要求拟合曲线必须经过另外s个点(xk,yk),k=1,2,…,s,那么这s个点就称为插值点,文献[1-5]中讨论了带插值条件的最小二乘法,文献[6]系统地阐述了最小二乘法。本文将在插值条件的基础上,增加满足一阶导数和二阶导数条件的要求,即二阶Hermite插值条件。下面给出带二阶Hermite插值条件的最小二乘法的定义。
1 主要结果及证明
同理可证
(2)
其中:
若将δ看作关于自变量a、b的二元函数,则上述问题转化为求函数δ=δ[a,b]在哪些点取得最小值。即解方程组
(3)
故方程组的解为
(4)
经过带二阶Hermite插值条件的最小二乘法的拟合,使得曲线的拟合效果更好。
2 Lingo程序设计
设n为需要拟合的点的个数,k为满足插值点、一阶导数点、二阶导数点的个数,s-1是需要寻找的拟合曲面的次数,则带n个拟合点、k个插值点、k个一阶导数点及k个二阶导数点的s-1次曲线拟合的Lingo程序如下:
model:
sets:
shuju/1..n/:x,y;
chazhi/1..k/:a,b,c,d,e,f;
xishu/1..s/:z;
endsets
data:
x=?;!输入拟合点数据;
y=?;
a=?;!输入插值点数据;
b=?;
c=?;!输入一阶导数点数据;
d=?;
e=?;!输入二阶导数点数据;
f=?;
enddata
min=@sum(shuju:(z(s)*x^(s-1)+z(s-1)*x^(s-2)+..+z(2)*x+z(1)-y)^2);
@for(chazhi:z(s)*a^(s-1)+z(s-1)*a^(s-2)+..+z(2)*a+z(1)=b);
@for(chazhi:(s-1)*z(s)*c^(s-2)+(s-2)*z(s-1)*c^(s-3)+..+2*z(3)*c+z(2)=d);
@for(chazhi:(s-1)*(s-2)*z(s)*e^(s-3)+(s-2)*(s-3)*z(s-1)*e^(s-4)+...+2*z(3)=f);
@free(z(i));(i>1)
end
示例
拟合点357 9 26.3 25.724.823.9插值点126.8一阶导数点1-1二阶导数点1-5
model:
sets:
shuju/1..4/:x,y;
chazhi/1..1/:a,b,c,d,e,f;
xishu/1..4/:z;
endsets
data:
x=3 5 7 9;
y=26.3 25.7 24.8 23.9;
a=1;
b=26.8;
c=1;
d=-1;
e=1;
f=-5;
enddata
min=@sum(shuju:(z(4)*x^3+z(3)*x^2+z(2)*x+z(1)-y)^2);
@for(chazhi:z(4)*a^3+z(3)*a^2+z(2)*a+z(1)=b);
@for(chazhi:3*z(4)*c^2+2*z(3)*c+z(2)=d);
@for(chazhi:6*z(4)*e+2*z(3)=f);
@free(z(1));
@free(z(2));
@free(z(3));
@free(z(4));
end
运行结果
VariableValueReduced CostZ(1)24.955950.000000Z(2)5.0321400.000000Z(3)-3.5321400.000000Z(4)0.34404650.000000
[1]颜宁生. 带Hermite插值条件的最小二乘估计[J].大学数学学报: 2011, 27(5) : 80-84.
[2]颜宁生. 带插值条件的最小二乘法[J].北京服装学院学报: 2007, 27(2) : 42-48.
[3]颜宁生. 带一个插值点的最小二乘估计和最大似然估计[J].北京服装学院学报, 2008, 28(3) : 56-59.
[4]张光远, 李庆福, 颜宁生. 带Hermite 插值条件下的三点曲线拟合[J].温州职业技术学院学报, 2009, 9(4) : 61- 63.
[5]颜宁生. 带一个插值点的回归模型的参数分析[J].高等数学研究, 2010, 13(4) : 6- 8.
[6]贾小勇, 徐传胜, 白欣. 最小二乘法的创立及思想方法[J].西北大学学报:自然科学版, 2006, 36(3) : 507 -511.
[7]Liu Guangpu, Gao Yuchun.The Application of MATLAB in Communication Theory [J]. Procedia Engineering, 2012, 28(3):321-324.
[8]吉家锋,张晓丽,谢维成.用MATLAB计算等距三次样条插值问题[J].四川工业学院学报,2003(S1): 37-40.
[9]刘卫国.MATLAB程序设计与应用[M].2版.北京:高等教育出版社,2006.
[10]张德丰.MATLAB程序设计与典型应用[M].北京:电子工业出版社,2009.
[11]李海涛. MATLAB程序设计教程[M].北京:高等教育出版社,2010.