最小二乘法拟合多项式论文
学号:201117912 姓名:刘苗苗 专业:计算机科学与技术
一 最小二乘法的基本原理
从整体上考虑近似函数
同所给数据点
(i=0,1,…,m)误差
(i=0,1,…,m)的大小,常用的方法有以下三种:一是误差 (i=0,1,…,m)绝对值的最大值
的∞—范数;二是误差绝对值的和
,即误差 向量
,即误差向量r的1—范数;三是误差平方
和的算术平方根,即误差向量r的2—范数;前两种方法简单、自然,但不便于微分运算 ,后一种方法相当于考虑 2—范数的平方,因此在曲线拟合中常采用误差平方和
来 度量误差 (i=0,1,…,m)的整体大小。
(i=0,1,…,m),在取定的函数类
数据拟合的具体作法是:对给定数据 中,求
,使误差
的曲线
=
称
(i=0,1,…,m)的平方和最小,即
(i=0,1,…,m)的距离平方和为最小
从几何意义上讲,就是寻求与给定点
(图6-1)。函数
为拟合 函数或最小二乘解,求拟合函数的方法称为曲线拟合的最小二乘法。
在曲线拟合中,函数类可有不同的选取方法.
6—1
二 多项式拟合 假设给定数据点的函数类,现求一
(i=0,1,…,m),为所有次数不超过
,使得
的多项式构成
(1)
当拟合函数为多项式时,称为多项式拟合,满足式(1)的多项式。特别地,当n=1时,称为线性拟合或直线拟合。 显然
为的多元函数,因此上述问题即为求元函数求极值的必要条件,得
称为最小二乘拟合
的极值 问题。由多
(2)
即
(3)是关于
的线性方程组,用矩阵表示为
(3)
(4)
式(3)或式(4)称为正规方程组或法方程组。
可以证明,方程组(4)的系数矩阵是一个对称正定矩阵,故存在唯一解。从式(4)中解出
(k=0,1,…,n),从而可得多项式
(5)
可以证明,式(5)中的
满足式(1),即
为所求的拟合多项式。我们把的平方误差,记作
由式(2)可得
(6)
多项式拟合的一般方法可归纳为以下几步:
(1) 由已知数据画出函数粗略的图形——散点图,确定拟合多项式的次数n; (2) 列表计算
(3) 写出正规方程组,求出
和;
;
称为最小二乘拟合多项式
(4) 写出拟合多项式。 在实际应用中,或;当时所得的拟合多项式就是拉格朗日或牛顿插值多项式。
第三 例:已知f(-2)=8.3,f(-1)=4.7,f(1)=4.7,f(3)=14.3,求最小二乘拟合多项式。 x -2 -1 1 3 y 8.3 4.7 4.7 14.3 (1)当取n=1,设拟合函数为
y?a0?a1x列表如下 x 0 1 2 3 正规方程组为 xi yi
yi xiyi -2 -1 1 3 1 8.3 4.7 4.7 14.3 32 4 1 1 9 15 -16.6 -4.7 4.7 42.9 26.3 ?41??a0??32???????? ?115??a1??26.3?解方程组得
a1?1.2407 a0?7.6898 (见程序一)!
故得x与y的拟合直线为
y?1.2407x?7.6898
(2)当n=2时。 设拟合曲线方程为
列表如下 I 0 1 2 3 正规方程组 xi yi
xiyi 4 1 1 9 15 -8 -1 1 27 17 16 1 1 81 99 33.2 4.7 4.7 128.7 171.3 -2 -1 1 3 1 8.3 4.7 4.7 14.3 32 -16.6 -4.7 4.7 42.9 26.3 ?4115??a0????11517??a1?a?151799???2?解得:a2
故拟合二次多项式为
??32?????26.3?????171.3????
?1.2 a1?0 a0?3.5 (见程序二)!
2y?3.5?1.2x图行为:
(3)当n=3时 设三次拟合多项式为:
y?a0?a1x?a2x?a3x解得
a0?3.5
故拟合三次多项式为
23
a1?0 a2?1.2 a3?0 (见程序三)!
y?3.5?1.2x2
此函数与当n=2时相同。
程序一
x=[-2 -1 1 3];
y=[8.3 4.7 4.7 14.3]; p=polyfit(x,y,1) % r=poly2sym(p)
x1=linspace(-2,3,300) y1=polyval(p,x1) % y1=1.2*x1.^2+3.5; plot(x1,y1) 程序二
x=[-2 -1 1 3];
y=[8.3 4.7 4.7 14.3]; p=polyfit(x,y,2) % r=poly2sym(p)
x1=linspace(-2,3,300) y1=polyval(p,x1) % y1=1.2*x1.^2+3.5; plot(x1,y1) 程序三
x=[-2 -1 1 3];
y=[8.3 4.7 4.7 14.3]; p=polyfit(x,y,3) % r=poly2sym(p)
x1=linspace(-2,3,300) y1=polyval(p,x1) % y1=1.2*x1.^2+3.5; plot(x1,y1)
Matlab程序: