论文部分内容阅读
[摘要]数据拟合在很多地方都有应用,主要用来处理实验或观测的原始离散数据。通过拟合可以更好的分析和解释数据。在引用前人的算法基础上,采用正交多项式最小二乘法进行曲线拟合,通过实验对算法进行了分析,并给出了C语言实现的代码。
[关键词]数据拟合 正交多项式 最小二乘法 算法分析 代码实现
中图分类号:TP301文献标识码:A文章编号:1671-7597(2009)0920093-02
在科学实验和工程实践中,会产生很多原始数据,为更好地分析和解释这些数据,通常用曲线来进行拟合。借助于数据拟合可以很好地获取数据的整体特征,但拟合的方式、次数都将影响最终的效果。一般来说,拟合效果是通过误差来判断的。下文先是介绍了拟合算法,随后根据实验数据,从误差角度进行了分析。
一、算法分析
曲线拟合是数值逼近的一种方法。它用带有参数的简单函数逼近待定函数,并根据函数在观察点的取值状况确定参数。给定一组观测值,(xi,yi)(I=0,1,…n),选取一组简单函数φk(x)(k=0,1,…n)作为基函数,通过确定拟合模型φ(x)=μkφk(x)的待定参数μk,使φ(x)与观测值(xi,yi)在总体上尽可能接近。这种确定φ(x)的方法称为离散数据的曲线拟合。
离散数据的曲线拟合需要解决两个问题:
1.合模型的选取。在线性模型中,拟合函数是一些基函数的线性组合,选取一组适当的基函数是决定拟合效果好坏的关键因素。一般来说,需要对问题进行仔细的分析,根据问题本身的性质决定基函数的形式。如果没有与问题有关的背景信息,则可以通过分析观测数据的分步规律,选择拟合模型的基函数。通常基函数可以取多项式函数、三角函数、指数函数和样条函数等。本文主要采用多项式函数。
2.型参数的确定。模型参数选择的原则是使误差在拟合标准下取极小值,不同的拟合标准决定了不同的参数确定方法。常见的拟合标准有:最大误差绝对值最小、误差绝对值之和最小、误差平方和最小。前两项虽然很直观,但是用来确定参数却很困难;第三个就是通常所说的最小二乘标准,使用比较方便,采用最小二乘标准的拟合也称为最小二乘拟合。本文即采用最小二乘标准。
在实际问题中,怎样由观测的数据设计和确定“最贴近”的拟合曲线?关键在于选择适当的拟合曲线类型,有时根据专业知识和工作经验即可确定拟合曲线类型;在对拟合曲线一无所知的情况下,不妨先绘制数据的粗略图形,或许从中观测出拟合曲线的类型;更一般地,对数据进行多种曲线类型的拟合,并计算均方误差,用数学试验的方法找出在最小二乘意义下的误差最小的拟合函数。
多项式拟合的基函数的模型虽然形式简单,但是法方程组的系数矩阵是严重病态的矩阵,将影响拟合计算的数值稳定性。
为了克服多项式拟合中病态的系数矩阵,可以另外选择一组多项式基函数,使它对应的系数矩阵为对角阵,这就是正交多项式拟合。以下主要介绍正交多项式拟合算法,并通过实验程序,对误差加以分析。
二、正交多项式最小二乘法数据拟合算法
以下是通过给定的一组测试数据,求解正交多项式进行数据拟合的算法。其中(x,y)是给定的一组观测值,μk是最终多项式的系数。||δ||22是拟合误差。
三、试验程序实现及结果分析
以下是用C编写的正交多项式最小二乘数据拟合的程序实现代码,主要用来产生一些试验数据,为后续的结果分析做准备。
试验数据:
试验结果表明针对上述实例,只需5次拟合就可达到精度,即5次拟合精度和6、7、8、9次拟合精度相同。可见并不是拟合次数越高拟合效果越好。所以一般情况下,拟合次数限制在20次内。
针对前一算法,继续测试,分别取N=20,200,2000,20000,M=1015。
测试数据产生来源:y=x-e-x,从x0=0开始,取步长h=0.1的若干个数据点。
测试结果如下:取N=2000,取M=10,运行结果如图1-2所示;取N=2000,取M=15,运行结果如图1-3所示。
由以上数据可以看出,随着数据量的增加,误差绝对值最大值也在增大。
此外,改变步长,即h,对误差平方和和误差绝对值和的影响较显著,但对误差绝对值最大值影响不显著。当测试数据点数超过万次,增大步长会降低误差平方和和误差绝对值和。
如:取M=15,N=20000,H=0.1时,误差为:dt(0)=4.403835e+000dt(1)=5.721071e+001 dt(2)=8.884759e-001;而取M=15,N=20000,H=0.5时,误差为:dt(0)=1.510947e+000dt(1)=1.596108e+001dt
(2)=9.0718113e-001。
综上所述,拟合次数要视情况而定,并不是拟合次数越高拟合效果越好;拟合是在一定范围内进行的,步长对拟合效果有影响,一般应根据经验选取合适的值。
四、小结
文章对给出的最小二乘法进行数据拟合的算法进行了分析,运用C语言实现了该算法。并用其做了试验,通过实验对结果进行了分析。得出并不是拟合次数越高越好,并且数据点的选取个数及步长对试验结果均有影响。希望本文可以对那些准备使用或已经使用最小二乘进行数据拟合的应用给予帮助。
参考文献:
[1]马正飞、殷翔,数学计算方法与软件的工程应用[M].北京:化学工业出版社,2002.
[2]徐士良,数值分析与算法[M]北京:机械工业出版社,2007.
[3]张韵华等,数值计算方法和算法第二版[M].北京:科学出版社,2006.
[4]徐士良,常用算法程序集C语言描述第三版[M].北京:清华大学出版社,2004.
[5](美)John H.Mathews,Kurtis D.Fink著,数值方法(MATLAB版)(第三版)[M].北京:电子工业出版社,2002.6.
作者简介:
邵慧莹(1976-),女,吉林永吉人,讲师,硕士,研究方向:软件工程与计算机网络。
[关键词]数据拟合 正交多项式 最小二乘法 算法分析 代码实现
中图分类号:TP301文献标识码:A文章编号:1671-7597(2009)0920093-02
在科学实验和工程实践中,会产生很多原始数据,为更好地分析和解释这些数据,通常用曲线来进行拟合。借助于数据拟合可以很好地获取数据的整体特征,但拟合的方式、次数都将影响最终的效果。一般来说,拟合效果是通过误差来判断的。下文先是介绍了拟合算法,随后根据实验数据,从误差角度进行了分析。
一、算法分析
曲线拟合是数值逼近的一种方法。它用带有参数的简单函数逼近待定函数,并根据函数在观察点的取值状况确定参数。给定一组观测值,(xi,yi)(I=0,1,…n),选取一组简单函数φk(x)(k=0,1,…n)作为基函数,通过确定拟合模型φ(x)=μkφk(x)的待定参数μk,使φ(x)与观测值(xi,yi)在总体上尽可能接近。这种确定φ(x)的方法称为离散数据的曲线拟合。
离散数据的曲线拟合需要解决两个问题:
1.合模型的选取。在线性模型中,拟合函数是一些基函数的线性组合,选取一组适当的基函数是决定拟合效果好坏的关键因素。一般来说,需要对问题进行仔细的分析,根据问题本身的性质决定基函数的形式。如果没有与问题有关的背景信息,则可以通过分析观测数据的分步规律,选择拟合模型的基函数。通常基函数可以取多项式函数、三角函数、指数函数和样条函数等。本文主要采用多项式函数。
2.型参数的确定。模型参数选择的原则是使误差在拟合标准下取极小值,不同的拟合标准决定了不同的参数确定方法。常见的拟合标准有:最大误差绝对值最小、误差绝对值之和最小、误差平方和最小。前两项虽然很直观,但是用来确定参数却很困难;第三个就是通常所说的最小二乘标准,使用比较方便,采用最小二乘标准的拟合也称为最小二乘拟合。本文即采用最小二乘标准。
在实际问题中,怎样由观测的数据设计和确定“最贴近”的拟合曲线?关键在于选择适当的拟合曲线类型,有时根据专业知识和工作经验即可确定拟合曲线类型;在对拟合曲线一无所知的情况下,不妨先绘制数据的粗略图形,或许从中观测出拟合曲线的类型;更一般地,对数据进行多种曲线类型的拟合,并计算均方误差,用数学试验的方法找出在最小二乘意义下的误差最小的拟合函数。
多项式拟合的基函数的模型虽然形式简单,但是法方程组的系数矩阵是严重病态的矩阵,将影响拟合计算的数值稳定性。
为了克服多项式拟合中病态的系数矩阵,可以另外选择一组多项式基函数,使它对应的系数矩阵为对角阵,这就是正交多项式拟合。以下主要介绍正交多项式拟合算法,并通过实验程序,对误差加以分析。
二、正交多项式最小二乘法数据拟合算法
以下是通过给定的一组测试数据,求解正交多项式进行数据拟合的算法。其中(x,y)是给定的一组观测值,μk是最终多项式的系数。||δ||22是拟合误差。
三、试验程序实现及结果分析
以下是用C编写的正交多项式最小二乘数据拟合的程序实现代码,主要用来产生一些试验数据,为后续的结果分析做准备。
试验数据:
试验结果表明针对上述实例,只需5次拟合就可达到精度,即5次拟合精度和6、7、8、9次拟合精度相同。可见并不是拟合次数越高拟合效果越好。所以一般情况下,拟合次数限制在20次内。
针对前一算法,继续测试,分别取N=20,200,2000,20000,M=1015。
测试数据产生来源:y=x-e-x,从x0=0开始,取步长h=0.1的若干个数据点。
测试结果如下:取N=2000,取M=10,运行结果如图1-2所示;取N=2000,取M=15,运行结果如图1-3所示。
由以上数据可以看出,随着数据量的增加,误差绝对值最大值也在增大。
此外,改变步长,即h,对误差平方和和误差绝对值和的影响较显著,但对误差绝对值最大值影响不显著。当测试数据点数超过万次,增大步长会降低误差平方和和误差绝对值和。
如:取M=15,N=20000,H=0.1时,误差为:dt(0)=4.403835e+000dt(1)=5.721071e+001 dt(2)=8.884759e-001;而取M=15,N=20000,H=0.5时,误差为:dt(0)=1.510947e+000dt(1)=1.596108e+001dt
(2)=9.0718113e-001。
综上所述,拟合次数要视情况而定,并不是拟合次数越高拟合效果越好;拟合是在一定范围内进行的,步长对拟合效果有影响,一般应根据经验选取合适的值。
四、小结
文章对给出的最小二乘法进行数据拟合的算法进行了分析,运用C语言实现了该算法。并用其做了试验,通过实验对结果进行了分析。得出并不是拟合次数越高越好,并且数据点的选取个数及步长对试验结果均有影响。希望本文可以对那些准备使用或已经使用最小二乘进行数据拟合的应用给予帮助。
参考文献:
[1]马正飞、殷翔,数学计算方法与软件的工程应用[M].北京:化学工业出版社,2002.
[2]徐士良,数值分析与算法[M]北京:机械工业出版社,2007.
[3]张韵华等,数值计算方法和算法第二版[M].北京:科学出版社,2006.
[4]徐士良,常用算法程序集C语言描述第三版[M].北京:清华大学出版社,2004.
[5](美)John H.Mathews,Kurtis D.Fink著,数值方法(MATLAB版)(第三版)[M].北京:电子工业出版社,2002.6.
作者简介:
邵慧莹(1976-),女,吉林永吉人,讲师,硕士,研究方向:软件工程与计算机网络。