当前位置:文档之家› 数据拟合方法

数据拟合方法

第二讲 数据拟合方法在实验中,实验和戡测常常会产生大量的数据。

为了解释这些数据或者根据这些数据做出预测、判断,给决策者提供重要的依据。

需要对测量数据进行拟合,寻找一个反映数据变化规律的函数。

数据拟合方法与数据插值方法不同,它所处理的数据量大而且不能保证每一个数据没有误差,所以要求一个函数严格通过每一个数据点是不合理的。

数据拟合方法求拟合函数,插值方法求插值函数。

这两类函数最大的不同之处是,对拟合函数不要求它通过所给的数据点,而插值函数则必须通过每一个数据点。

例如,在某化学反应中,测得生成物的质量浓度y (10 –3 g/cm 3)与时间t (min )的关系如表所示显然,连续函数关系y (t )是客观存在的。

但是通过表中的数据不可能确切地得到这种关系。

何况,由于仪器和环境的影响,测量数据难免有误差。

因此只能寻求一个近拟表达式y = (t )寻求合理的近拟表达式,以反映数据变化的规律,这种方法就是数据拟合方法。

数据拟合需要解决两个问题:第一,选择什么类型的函数)(t ϕ作为拟合函数(数学模型);第二,对于选定的拟合函数,如何确定拟合函数中的参数。

数学模型应建立在合理假设的基础上,假设的合理性首先体现在选择某种类型的拟合函数使之符合数据变化的趋势(总体的变化规律)。

拟合函数的选择比较灵活,可以选择线性函数、多项式函数、指数函数、三角函数或其它函数,这应根据数据分布的趋势作出选择。

为了问题叙述的方假设拟合函数是线性函数,即拟合函数的图形是一条平面上的直线。

而表中的数据点未能精确地落在一条直线上的原因是实验数据的误差。

则下一步是确定函数y= a + b x中系数a 和b 各等于多少从几何背景来考虑,就是要以a 和b 作为待定系数,确定一条平面直线使得表中数据所对应的10个点尽可能地靠近这条直线。

一般来讲,数据点将不会全部落在这条直线上,如果第k 个点的数据恰好落在这条直线上,则这个点的坐标满足直线的方程,即a +b x k = y k如果这个点不在直线上,则它的坐标不满足直线方程,有一个绝对值为k k y bx a -+的差异(残差)。

于是全部点处的总误差是 ∑=-+101k k ky bxa这是关于a 和b 的一个二元函数,合理的做法是选取a 和b ,使得这个函数取极小值。

但是在实际求解问题时为了操作上的方便,常常是求a 和b 使得函数∑=-+=1012)(),(k k k y bx a b a F达到极小。

为了求该函数的极小值点,令0=∂∂a F ,0=∂∂bF, 得0)(2101=-+∑=k k ky bxa , ∑==-+1010)(2k k k k x y bx a这是关于未知数a 和b 的线性方程组。

它们被称为法方程,又可以写成⎪⎪⎩⎪⎪⎨⎧=+=+∑∑∑∑∑=====101101210110110110k k k k k k k k k k k y x b x a x y b x a 求解这个二元线性方程组便得待定系数a 和b ,从而得线性拟合函数 y = a+ b x 。

下图中直线是数据的线性拟合的结果。

假设拟合函数不是线性函数,而是一个二次多项式函数。

即拟合函数的图形是一条平面上的抛物线,而表中的数据点未能精确地落在这条抛物线上的原因是实验数据的误差。

则下一步是确定函数y = a 0 + a 1 x + a 2 x 2中系数a 0、a 1和a 2各等于多少从几何背景来考虑,就是要以a 0、a 1和a 2为待定系数,确定二次曲线使得表中数据所对应的10个点尽可能地靠近这条曲线。

一般来讲,数据点将不会全部落在这条曲线上,如果第k 个点的数据恰好落在曲线上,则这个点的坐标满足二次曲线的方程,即a 0 + a 1 x k + a 2 x k 2 = y k如果这个点不在曲线上,则它的坐标不满足曲线方程,有一个误差(残差)。

于是全部点处的总误差用残差平方和表示∑=-++=10122210210])[(),,(k k k k y x a x a a a a a F这是关于a 0、a 1和a 2的一个三元函数,合理的做法是选取a 0、a 1和a 2 ,使得这个函数取极小值。

为了求该函数的极小值点,令00=∂∂a F ,01=∂∂a F ,02=∂∂a F得⎪⎪⎪⎩⎪⎪⎪⎨⎧=-++=-++=-++∑∑∑===10122210101221010122100])[(20])[(20])[(2k k k k k k k k k k k k k k x y x a x a a x y x a x a a y x a x a a 这是关于待定系数a 0、a 1和a 2的线性方程组,写成等价的形式为⎪⎪⎪⎩⎪⎪⎪⎨⎧=++=++=++∑∑∑∑∑∑∑∑∑∑∑===========101210124101131010210110110123121010101101221101010k kk k k k k k k k k k k k k k k k k kk k k k y x a x a x a x y x a x a x a x y a x a x a这就是法方程,求解这一方程组可得二次拟合函数中的三个待定系数。

下三. 数据的n 次多项式拟合x x 1 x 2 …… x m f (x ) y 1 x 2 …… y m所给数据来确定下面的函数y = a 0 + a 1 x + a 2 x 2 + …… + a n x n这里要做一个假设,即多项式的阶数n 应小于题目所给数据的数目m (例题中m = 10)。

类似前面的推导,可得数据的n 次多项式拟合中拟合函数的系数应满足的正规方程组如下⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡∑∑∑∑∑∑∑∑∑∑∑=====+==+====m k k n k mk k k mk k n mk n kmk n kmk n k mk n k mk km k kmk n k mk k y x y x y a a a x x x x xxx x m 11110121111112111从这一方程组可以看出,线性拟合方法和二次拟合方法是多项式拟合的特殊情况。

从算法上看,数据最小二乘拟合的多项式方法是解一个超定方程组⎪⎪⎩⎪⎪⎨⎧=++++=++++=++++m n m n m m nn n n yx a x a x a a y x a x a x a a y x a x a x a a 22102222221*********( m > n ) 的最小二乘解。

而多项式拟合所引出的正规方程组恰好是用超定方程组的系数矩阵的转置矩阵去左乘超定方程组左、右两端所得。

正规方程组的系数矩阵是一个病态矩阵,这类方程组被称为病态方程组。

当系数矩阵或者是右端向量有微小的误差时,可能引起方程组准确解有很大的误差。

为了避免求解这样的线性方程组,在做多项式拟合时可以将多项式中的各次幂函数做正交化变换,使得所推出的正规方程的系数矩阵是对角矩阵。

四.点集{x 1,x 2,……,x m }上的正交多项式系多项式q 0(x ),q 1(x ),q 2(x ),……,q n (x )在点集{x 1,x 2,……,x m }上的正交 ∑==mi i j i k j k x q x q q q 1)()(),(正交多项式系可以认为是幂函数系:1,x ,x 2,……,x n 通过正交变换而得到的一组函数。

正交多项式系构造的方法如下:q 0(x )=1,q 0(x ) = x – a 1 ,(a 1 = n x mi i /1∑=),q k (x ) = (x - a k ) q k -1(x ) - b k q k-2(x ) ,( k = 2,3,……,n )其中,∑∑=-=-----==mi i k mi i k i k k k k k x q x q x q q q xq a 1211211111)(/)(),/(),(∑∑=-=-----==mi i k m i i k k k k k k x q x q q q q q b 1221212211)(/)(),/(),(五.用正交多项式系组成拟合函数的多项式拟合考虑拟合函数:)()()()(x q a x q a x q a x +++= ϕ,将数据表⎪⎪⎩⎪⎪⎨⎧=++++=++++=++++mm n n m m m n n n n y x q a x q a x q a x q a y x q a x q a x q a x q a y x q a x q a x q a x q a )()()()()()()()()()()()(2211002222221120011122111100 (m > n ) 其系数矩阵为⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡)()()()()()()()()()()()(21022221201121110m n m m mn n x q x q x q x q x q x q x q x q x q x q x q x q由于多项式q 0(x ),q 1(x ),q 2(x ),……,q n (x )在点集{x 1,x 2,……,x m }上的正交,所以超定方程组的系数矩阵中不同列的列向量是相互正交的向量组。

于是用这一矩阵的转置矩阵去左乘超定方程组左、右两端得正规方程组⎪⎪⎩⎪⎪⎨⎧===),(),(),(),(),(),(11110000y q a q q y q a q q y q a q q n n n n => ⎪⎪⎩⎪⎪⎨⎧===),/(),(),/(),(),/(),(11110000n n n n q q y q a q q y q a q q y q a 其中,∑==m i i k k k x q q q 12)(),(,∑==mi i i k k y x q y q 1)(),(。

因为正规方程组中每一个方程都是一元一次方程可以直接写出原超方程组的最小二乘解,所以拟合函数为)(),(),()(),(),()(),(),()(11110000x q q q y q x q q q y q x q q q y q x n n n n +++=ϕ这一结果与用次多项式拟合所得结果在理论是完全一样的,只是形式上不同、算法实现上避免了解病态方程组。

六.指数函数的数据拟合 问题1:世界人中预测问题下表给出了本世纪六十年代世界人口的统计数据(单位:亿)有人根据表中数据,预测公元2000年世界人口会超过 60亿。

这一结论在六十年代末令人难以置信,但现在已成为事实。

试建立数学模型并根据表中数据推算出2000年世界人口的数量。

相关主题