线性最小二乘法及matlab例程
线性最小二乘法
曲线拟合:已知平面上一组横坐标互不相同的点,寻求一个函数,使其与所有数据点最为接近。
拟合函数:
f
(
x
)
=
a
1
r
1
(
x
)
+
a
2
r
2
(
x
)
+
⋅
⋅
⋅
+
a
m
r
m
(
x
)
f(x)=a_{1}r_{1}(x)+a_{2}r_{2}(x)+\cdot\cdot\cdot+a_{m}r_{m}(x)
f(x)=a1r1(x)+a2r2(x)+⋅⋅⋅+amrm(x)
a
k
a_{k}
ak为待定系数,
r
k
(
x
)
r_{k}(x)
rk(x)为实现选定的一组线性无关函数,比如:当你观察已知数据点的分布大致为一条直线,就可以选
r
k
(
x
)
=
a
1
(
x
)
+
a
2
r_{k}(x)=a_{1}(x)+a_{2}
rk(x)=a1(x)+a2这种形式。
拟合准则:使得
δ
i
2
=
∑
i
=
1
n
[
f
(
x
i
−
y
i
)
]
2
δ^2_{i}=\sum_{i=1}^{n} [f(x_{i}-y_{i})]^2
δi2=∑i=1n[f(xi−yi)]2最小。
系数
a
k
a_{k}
ak和函数
r
k
(
x
)
r_{k}(x)
rk(x)的确定:参考链接
matlab实现
1.解方程组的方法
x=[19 25 31 38 44]';
y=[19.0 32.3 49.0 73.3 97.8]';
r=[ones(5,1),x.^2];
ab=r\y
x0=19:0.1:44;
y0=ab(1)+ab(2)*x0.^2;
plot(x,y,'o',x0,y0,'r')
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200726130940442.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc2NDk3NA==,size_16,color_FFFFFF,t_70#pic_center)
2.多项式拟合法
使用函数
p
o
l
y
f
i
t
(
x
0
,
y
0
,
m
)
polyfit(x_{0},y_{0},m)
polyfit(x0,y0,m),前面是已知数据点,m是拟合多项式的次数,返回值是拟合多项式的系数向量。
可以用
p
o
l
y
v
a
l
(
a
,
x
)
polyval(a,x)
polyval(a,x)计算多项式在
x
x
x处的值。
做已知数据的散点图:
%已知某企业1990-1998年的生产利润如下:要预测1997和1998年的利润
x0=[1990 1991 1992 1993 1994 1995 1996];
y0=[70 122 144 152 174 196 202];
plot(x0,y0,'*')
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200726131620611.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc2NDk3NA==,size_16,color_FFFFFF,t_70#pic_center)
从图片止咳看出,数据呈线性排列,所以选择拟合函数为一次多项式。
x0=[1990 1991 1992 1993 1994 1995 1996];
y0=[70 122 144 152 174 196 202];
a=polyfit(x0,y0,1)
y97=polyval(a,1997)
y98=polyval(a,1998)
得到:
>> ex5_6_2
a =
1.0e+04 *
0.0021 -4.0705
y97 =
233.4286
y98 =
253.9286
即拟合多项式
y
=
a
1
x
+
a
2
y=a_{1}x+a_{2}
y=a1x+a2的系数
a
1
=
21
,
a
2
=
−
4070.5
a_{1}=21,a_{2}=-4070.5
a1=21,a2=−4070.5,1998he 1997年预测利润如上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)