最小二乘法数据拟合
- 格式:doc
- 大小:130.82 KB
- 文档页数:4
最小二乘法数据拟合
设给定数据),(i i f x ,),,2,1(m i =
在集合},,,{Span 10n ϕϕϕ =Φ中找一个函数
)()(*
0**
x a x S k n
k k ϕ∑==,)(m n < (1) 其误差是
i i i f x S -=)(*δ,),,2,1(m i = (2)
使)(*
x S 满足
2
1
)(2
*1
1
2
])()[(min ])()[(i i m
i i x S i i m
i i m
i i
f x S x f x S x -=-=∑∑∑=Φ
∈==ωωδ
(3)
0)(≥x ω是],[b a 上给定的权函数。上述求逼近函数)(*x S 的方法就称为曲线拟合的最小二
乘法。满足关系式(3)的函数)(*
x S 称为上述最小二乘问题的最小二乘解。 并且有结论:
1)对于给定的函数表),(i i f x ,),,2,1(m i =,在函数类},,,{Span 10n ϕϕϕ =Φ中存在唯一的函数)()(*0**
x a x S k n
k k ϕ∑==
,使得关系式(3)成立。 2)最小二乘解的系数*
*1*0,,,n a a a 可以通过解法方程
),(),(0
ϕϕϕf a
k
n
k j
k
=∑=,),,2,1,0(n j = (4)
作为曲线拟合的一种常用的情况,如果讨论的是代数多项式拟合,即取
},,,,1{},,,{210n n x x x =ϕϕϕ
那么相应的法方程(4)就是
⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢
⎣⎡∑∑∑∑∑∑∑∑∑∑∑∑++i n i i i i i i i n n i i n i
i n i
i n i
i i
i i i n
i
i i
i i
f x f x f a a a x x
x x
x
x x x ωωωωωωωωωωωω
102112 (5)
其中,)(i i x ωω=,并且将
∑
=m
i 1
简写成“
∑
”。
此时,k
n
k k
x
a x S ∑==
**
)(,称它为数据拟合多项式,上述拟合称为多项式拟合。
例:已知某高度传感器测得的数据如下表:
试用最小二乘法求多项式曲线与此数据组拟合。
(一)算法:
解:取二次方多项式去拟合(当然也可以取三次、四次等,次数越高计算越复杂),
2210)(x a x a a x f y ++==
由式(5)可建立法方程组(其中取1)(=i x ω)
⎥⎥⎥
⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎣⎡∑∑∑∑∑∑∑∑∑∑∑∑============712
7
171
21071
7
1
7143271717132717
17
12
1i i i i i i i i i i i i i
i i i i i i
i i i i i
i
y x y x y a a a x x
x x x x x x
(6)
由表1的数据可以计算出
∑=71
i i x ,∑=7
1
2i i
x
,
∑=7
1
3i i
x
,
∑=7
1
4i i
x
,
∑=71
i i
y ,∑=71
i i
i y x ,∑=7
1
2i i i
y x
将表2中算得的结果代入法方程(6),可得:
⎪⎩
⎪
⎨⎧=++=++=++14762
-354100304926-10030101980-30104210210210a a a a a a a a a 解方程组可得:
⎪⎩⎪
⎨⎧-==-=88.3445472
10a a a 故所求拟合曲线为:
23864.04321.33185.1)(x x x f y -+-==
(二)用MATLAB 编程求解: 多项式函数 使用 polyfit (x,y,n ),n 为次数
拟合曲线 x=[1,2,3,4,6,7,8]; y=[2,3,6,7,5,3,2];
解:MATLAB 程序如下:
x=[1,2,3,4,6,7,8]; y=[2,3,6,7,5,3,2]; p=polyfit(x,y,2) x1=0:0.01:10; y1=polyval(p,x1); plot(x,y,'*r',x1,y1,'-b')
计算结果为: p =
-0.3864 3.4318 -1.3182