如何利⽤MATLAB 进⾏数据拟合?
⽂章⽬录
前⾔
本⽂是课程的第5章第5、6⼩结的学习笔记,通过查阅本⽂,可以轻松掌握利⽤MATLAB进⾏数据拟合了。欢迎⼤家 ,收藏 ,转发 ,如有问题、建议请您在评论区留⾔ 。
1 引例⼀⼈⼝预测问题
⼈⼝增长是当今世界上都关注的问题,对⼈⼝增长趋势进⾏预测是各国普遍的做法。已知某国1790年到2010年间历次⼈⼝普查数据如下表所⽰,请预测该国2020年的⼈⼝数。
年份179018001810182018301840185018601870188018901900⼈⼝(百万)
3.9  5.37.29.612.917.123.231.438.650.263.076.0
年份19101920193019401950196019701980199020002010⼈⼝(百万)
92.0
105.7
122.8
131.7
150.7
179.3
203.2
226.5matlab学好了有什么用
248.7
281.4
308.7
解题思路:⼀个函数,去逼近这些数据,然后再根据到的函数,计算预测点的值。
2 曲线拟合的原理
曲线拟合的原理
与数据插值类似,曲线拟合也是⼀种函数逼近的⽅法。
Enjoy  your  reading !x=1790:10:2010;
y=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6, 50.2,63.0,76.0,92.0,105.7,122.8,131.7,150.7,179.3,203.2,226.5,248.7,281.4,308.7];plot(x,y,'*');p=polyfit(x,y,3);polyval(p,2020)
plot(x,y,'*',x,polyval(p,x));
123456
x x  x  ...x ... x 12k n y
y  y  ...y ... y 12k n
构造函数去逼近未知函数,使得误差
在某种意义下达到最⼩。
两个问题:
(1)⽤什么类型的函数做逼近函数?多项式函数
(2)误差最⼩到底怎么计算?最⼩⼆乘法
最⼩⼆乘法(⼜称最⼩平⽅法)是⼀种数学优化技术。它通过最⼩化误差的平⽅和来寻数据的最佳函数匹配。设p(x)是⼀个多项式函数
,且
的值最⼩,
则p(x)为原函数y=f(x)的逼近函数。
3 曲线拟合的实现⽅法
MATLAB中的多项式拟合函数为polyfit(),其功能为求得最⼩⼆乘拟合多项式系数,其调⽤格式为:(1)P=polyfit(X,Y,m)(2)[P,S]=polyfit(X,Y,m)(3)[P,S,mu]=polyfit(X,Y,m)
根据样本数据X和Y,产⽣⼀个m次多项式P及其在采样点误差数据S,mu是⼀个⼆元向量,mu(1)是mean(X),⽽mu(2)是std(X)。
[P,S,mu]=polyfit(X,Y,m)有什么⽤呢?mean(X)、std(X)⼜是什么意思呢?。mean函数是⼀个求数组平均值的函数,std函数是求标准差。
在引例中,我们已经⽤polyfit()函数预测了某国2020年的⼈⼝数。这个结果是否正确呢?我们⽆法得到2020年的数据,但是2016年的数据已经有了。所以,不妨再预测⼀下该国2016年的⼈⼝数。polyval(p,2016)ans=327.0964
该国2016年⼈⼝数实际为323.1。思考:相对误差1.24%,怎样才能减⼩?问题分析:
据研究,⼀个国家的⼈⼝增长具有如下特点:(1)发展越平稳,⼈⼝增长越有规律。
(2)当经济发展到⼀定⽔平时,⼈⼝增长率反⽽下降。
换⾔之,在不同的环境和经济发展⽔平,⼈⼝可能有不同的增长规律。结论:
在⼈⼝增长数据的拟合上,应该将⼆战后⾄今这⼀时期的数据与此前的数据分开处理。结论:
(1)要对问题的背景进⾏详细的分析。
(2)采样点并⾮越多越好,适当的时候,可以减少采样点,分段进⾏拟合。
4 实际应⽤-家庭储蓄规律问题
y =f (x )
g (x )f (x )δ=g (x )−i f (x )(i =i 1,2,3,…,n )p (x )=a x +m a x +m −1m −1…+a x +1a o (p (x )
−i =1∑
n
i y )i 2x=1950:10:2010;
y=[150.7,179.3,203.2,226.5,248.7,281.4,308.7];p=polyfit(x,y,3)p=polyfit(x,y,2);
plot(x,y,'*',x,polyval(p,x))polyval(p,2016)polyval(p,2020)ans=325.1696ans=
336.7857%相对误差成功减⼩到0.64%!
1234567891011
以下是某市家庭收⼊x与家庭储蓄y之间的⼀组调查数据(单位:万元),试建⽴x与y的线性函数经验公式。
x 0.6  1.0  1.4  1.8  2.2  2.6  3.0  3.4  3.84y
0.08
0.22
0.31
0.4
0.48
0.56
0.67
0.75
0.8
1.0
最后⼏组数据误差还是挺⼤的。
那么总结⼀下,曲线拟合有哪⼏种功能呢?(1)估算数据(2)预测趋势(3)总结规律
数据拟合和数据插值有什么区别呢?相同点:
(1)都属于函数逼近的⽅法;
(2)都可以通过离散有限的数据估算其他数据。不同点:
(1)实现⽅法上,数据插值要求逼近函数经过样本点,⽽曲线拟合只需要每个数据点的误差平⽅和最⼩;(2)结果形式上,数据插值往往没有统⼀的逼近函数,⽽数据拟合有统⼀的逼近函数;
(3)侧重点上,数据插值⼀般⽤于样本点区间内的数据计算,⽽曲线拟合不光可以估算区间内的数据,也可以对区间外的进⾏预测;(4)应⽤场合上,如果样本点为精确数据,使⽤数据插值⽐较好,如果数据为统计数据,则使⽤曲线拟合更优。
⼩结
曲线拟合和数据插值有所不同,各有侧重。奥⾥给,学好它,让它为我所⽤。最后不要忘记点赞 ,收藏 ,转发 ,
如有问题、建议请您在评论区留⾔ 。
x=[0.6,1.0,1.4,1.8,2.2,2.6,3.0,3.4,3.8,4];
y=[0.08,0.22,0.31,0.4,0.48,0.56,0.67,0.75,0.8,1.0];p=polyfit(x,y,1)
plot(x,y,'*',x,polyval(p,x))p=
0.2390-0.0418  %经验公式:y=0.239x-0.0418
123456