
数据拟合方法.docx
8页第二讲 数据拟合方法在实验科学、社会科学和行为科学中,实验和戡测常常会产生大量的数据为了解释这 些数据或者根据这些数据做出预测、判断,给决策者提供重要的依据需要对测量数据进行拟合,寻找一个反映数据变化规律的函数数据拟合方法与数据插值方法不同,它所处理的数据量大而且不能保证每一个数据没有误差,所以要求一个函数严格通过每一个数据点是不合理的数据拟合方法求拟合函数,插值方法求插值函数这两类函数最大的不同之处是,对拟合函数不要求它通过所给的数据点,而插值函数则必须通过每一个数据点例如,在某化学反应中,测得生成物的质量浓度y (10 3 g/cm3)与时间t (min)的关系如表所示t12346810121416y4.006.418.018.799.539.8610.3310.4210.5310.610 2 468 10 12 14 16显然,连续函数关系 y(t) 是客观存在的但是通过表 中的数据不可能确切地得 到这种关系何况,由于仪 器和环境的影响,测量数据 难免有误差因此只能寻求 一个近拟表达式y =申(t)寻求合理的近拟表达式,以 反映数据变化的规律,这种 方法就是数据拟合方法数 据拟合需要解决两个问题: 第一,选择什么类型的函数申(()作为拟合函数(数学模型);第二,对于选定的 拟合函数,如何确定拟合函数中的参数。
数学模型应建立在合理假设的基础上,假设的合理性首先体现在选择某种类型的拟合函数使之符合数据变化的趋势(总体的变化规律)拟合函数的选择比较灵活,可以选择线性 函数、多项式函数、指数函数、三角函数或其它函数,这应根据数据分布的趋势作出选择为了问题叙述的i方便,^2-将例1的数据表写成一般的形式X7X8x9tx1x3 x4X5X6yyy3 y4y5y6y8yyw.线性拟合(线性模型)假设拟合函数是线性函数,即拟合函数的图形是一条平面上的直线而表中的数据点未能精确地落在一条直线上的原因是实验数据的误差则下一步是确定函数y= a + b x中系数a和b各等于多少?从几何背景来考虑,就是要以a和b作为待定系数,确定一条平面直线使得表中数据所对应的 10个点尽可能地靠近这条直线一般来讲,数据点将不会全部落在这条直线上,如果第k个点的数据恰好落在这条直线上,则这个点的坐标满足直线的方程,即a + b xk = y k如果这个点不在直线上,则它的坐标不满足直线方程,有一个绝对值为b + bxk - 的差 异(残差)于是全部点处的总误差是Z \a + bx 一 y |k k这是关于a和b的一个二元函数,合理的做法是选取a和b,使得这个函数取极小值。
但 是在实际求解问题时为了操作上的方便,常常是求a和b使得函数10F(a , b)=乙(a + bx 一 y )2 kk达到极小为了求该函数的极小值点,令k二1a f a f=o = oaa , ab工 2(a + bx 一 y ) = 0kk10乙 2(a + bx 一 y )x = 0 k k kk = 1 k = 1这是关于未知数 a 和 b 的线性方程组它们被称为法方程,又可以写成10 1010 a + x b = ykkxykkk = 1 k = 1x a + x 2 b =kkk = 1 k =1 k =1求解这个二元线性方程组便得待定系数a和b,从而得线性拟合函数y = a + b x下图中直线是数据的线性拟合的结果二.二次函数拟合(二次多项式模型)假设拟合函数不是线性函数,而是一个二次多项式函数即拟合函数的图形是一条平面 上的抛物线,而表中的数据点未能精确地落在这条抛物线上的原因是实验数据的误差则下 一步是确定函数y = a0 + a1 x + a2x 2 中系数a0、a1和a2各等于多少?从几何背景来考虑,就是要以aa1和a2为待定系数, 确定二次曲线使得表中数据所对应的 10 个点尽可能地靠近这条曲线。
一般来讲,数据点将 不会全部落在这条曲线上,如果第k个点的数据恰好落在曲线上,则这个点的坐标满足二次 曲线的方程,即a0 + a1 xk + a2xk 2 = yk如果这个点不在曲线上,则它的坐标不满足曲线方程,有一个误差(残差)于是全部点处 的总误差用残差平方和表示[(a + a x + a x 2) 一yk],使得这个函数k =1k =1k =1这是关于待定系数a0、a1和2[(a2[(a2[(aaxaxaxaxaxy ]xy ]x=0=0a2 的线性方程组,写成等价的形式为10 axak =1k =1k =1k = 1这是关于a0、a1和a2的一个三元函数,合理的做法是选取a0、a1和a2 取极小值为了求该函数的极小值点,xyk =1k =1k =1k =1这就是法方程,求解这一方程组可得二次拟合函数中的三个待定系数下图反映了例题所给 数据的二次曲线拟合的结果三.数据的n次多项式拟合xx1x2 …… xmf(x )y】x2 …… y丿m已知函数在个离散点处的函数值,假设拟合函数是n次多项式,则需要用所给数据来确定 下面的函数y = a0 + a1 x + a2x 2+ …… + anxn这里要做一个假设,即多项式的阶数n应小于题目所给数据的数目m (例题中m = 10)。
类似前面的推导,可得数据的n次多项式拟合中拟合函数的系数应满足的正规方程组如下mm乙x -・ 乙x na0ykkkk =1k=1k =1工工xm乙x 2 -m- 乙 x n + 1a1x ykkk=kkk =1k=1k =1:k =1:m乙x nkk =1m乙 x n+1 -kk=1x 2nkk =1an工k =1x n yk k丿」4土S侣 LJL4 ? ]工3纠 口 丿」Y厶4 口——VvJ5A 口 丿」Y厶看,数据最小二乘拟合的多项式方法是解一个超定方程组从算法上a + ax + ax 2 + •…+ axn = y0 11 2 1 n 1 1a + a x + a x 2 + •…+ a x n = y< 0 1 2 2 2 n 2 2= ym ( m > n)a + a x + a x 2 + •…+ a x n0 1 m 2 m n m的最小二乘解而多项式拟合所引出的正规方程组恰好是用超定方程组的系数矩阵的转置矩 阵去左乘超定方程组左、右两端所得正规方程组的系数矩阵是一个病态矩阵,这类方程组被称为病态方程组当系数矩阵或者是右端向量有微小的误差时,可能引起方程组准确解有 很大的误差。
为了避免求解这样的线性方程组,在做多项式拟合时可以将多项式中的各次幂函数做正交化变换,使得所推出的正规方程的系数矩阵是对角矩阵四.点集Mi,x2, , xm}上的正交多项式系多项式 q0(x), q1(x), q2(x), , qn(x)在点集, x2,,xm}上的正交(qk k正交多项式系可以认为是幂函数系正交多项式系构造的方法如下:m,q )=乙 q (x ) q (x )j k i j i1, x,先2, ……,xn通过正交变换而得到的一组函数x / ni=1 '),q0(x)=1,q0(x)= x -a1,(a1 =qk(x) = (x - ak)qk -1(x) -bk qk-2(x) , (k = 2, 3 其中,,n), x q 2 (x ) / 乙 q 2 (x )i k -1 i k -1 ii 二 1 i 二 1=(q , q )/(q , q )=为 q 2 (x )/为 q 2 (x )k-1 k-1 k-2 k-2 k-1 i k-2 ii 二 1=(xq , q ) /( q , qk-1 k-1 k-1 k-1bk五.用正交多项式系组成拟合函数的多1 项式拟合xx1x2 …… xmf(x )y1x2 …ym考虑拟合函数:申(x)= a0q0(x)+ a 1q 1(x)+…+ anqn(x),将数据表中的数据代入,得超定方程a q (x ) + a q (x ) + a q (x ) + ・・・ + a q (x )=0 0 1 1 1 1 2 2 1a q (x ) + a q (x ) + a q (x ) + ・・・ + a q (x )=v 0 0 2 1 1 2 2 2 2 -yn n 1 1y2其系数矩阵为+ a q (x)+aq(x ) + •…+a q (x ) =1 1 m22mn n mq (x )q(x )q (x )•• q (x )011121n1q (x )q(x )q (x )• q (x )0 21222n2q (x )q(x )q (x )• q (x2nn,qn(x)在点集{X],nx2,a q (x )0 0 m1m2m0mym (m > n))」m…,xm}上的正交,所以由于多项式 q0(x),q1(x),q2(x)超定方程组的系数矩阵中不同列的列向量是相互正交的向量组。
于是用这一矩阵的转置矩阵 去左乘超定方程组左、右两端得正规方程组'(q , q ) a = (q , y)0 0 0 0(q , q ) a = (q , y)v 1 1 1 1a = (q , y)/(q , q ) 00a\ 100=(q , y)/(q , q )1 1 1(q ,q )ann=>m(q ,q )=乙 q 2(x ) 其中, k k i 1 k im乙 q (x ) ykii 二 1i 因为正规方程组中每一个方程都是 元一次方程可以直接写出原超方程组的最小二乘解,所以拟合函数为(q , y) ,、 (q , y) ,、 (q , y) /、0 q (x) + 1 q (x) + .…+ n q (x)(q0,q0) 0 (q1,q1) 1 (qn,qn ) n这一结果与用次多项式拟合所得结果在理论是完全一样的,只是形式上不同、算法实现上避q (x)+ •…+1免了解病态方程组 六.指数函数的数据拟。
