Matlab学习笔记(5.5)曲线拟合 您所在的位置:网站首页 matlab多次拟合曲线怎么写 Matlab学习笔记(5.5)曲线拟合

Matlab学习笔记(5.5)曲线拟合

2024-04-18 17:12| 来源: 网络整理| 查看: 265

1. 拟合问题

人口增长是当今世界上都关注的问题,对人口增长趋势进行预测是各国普遍的做法。已知某国1790年到2010年间历次人口普查数据如下表所示,请预测该国2020年的人口数。

解题思路:找一个函数,去逼近这些数据,然后再根据找到的函数,计算预测点的值。

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]; p = polyfit(x,y,3); xi = 1790:0.1:2010; yi = polyval(p,xi); y2020 = polyval(p,2020); plot(x,y,'o',xi,yi,2020,y2020,'*'); title(['2020年预计人口:',num2str(y2020),'百万'])2. 曲线拟合的原理

与数据插值类似,曲线拟合也是一种函数逼近的方法。

构造函数 g(x) 去逼近未知函数 f(x) ,使得误差 \delta_i=g(x_i)-f(x_i) ,在某种意义下达到最小。

两个问题:

① 用什么类型的函数做逼近函数?

② 误差最小到底怎么计算?

最小二乘法:

设 p(x) 是一个多项式函数 p(x)=a_mx^m+a_{m-1}x^{m-1}+\dots+a_1x+a_0,求系数 a_i 的值,使得 \sum_{i=1}^{n}{\left[ p(x)-y_i \right]}^2 最小,则 p(x) 为原函数 y=f(x) 的逼近函数。

3. 曲线拟合的实现方法

MATLAB中的多项式拟合函数为polyfit(),其功能为求得最小二乘拟合多项式系数,其调用格式为:

\bullet P=polyfit(X,Y,m)

\bullet [P,S]=polyfit(X,Y,m)

\bullet [P,S,mu]=polyfit(X,Y,m):

根据样本数据X和Y,产生一个m次多项式P及其在采样点误差数据S,mu是一个二元向量,mu(1)是mean(X),而mu(2)是std(X)。

① 问题分析

在引例中,我们已经用polyfit()函数预测了某国2020年的人口数。这个结果是否正确呢?

我们无法得到2020年的数据,但是2016年的数据已经有了。所以,不妨再预测一下该国2016年的人口数。

>> polyval(p,2016) ans = 327.0964

该国2016年人口数实际为323.1,相对误差1.24%,怎样才能减小?

据研究,一个国家的人口增长具有如下特点:

\circ 发展越平稳,人口增长越有规律。

\circ 当经济发展到一定水平时,人口增长率反而下降。

换言之,在不同的环境和经济发展水平,人口可能有不同的增长规律。

② 结果:

尝试将二战后至今这一时期的数据与此前的数据分开处理,并选择合适的拟合次数

x = 1950:10:2010; y = [150.7,179.3,203.2,226.5,248.7,281.4,308.7]; p = polyfit(x,y,1); %降低次数 xi = 1950:0.1:2010; yi = polyval(p,xi); y2016 = polyval(p,2016); plot(x,y,'o',xi,yi,2016,y2016,'*'); m = 100*abs(y2016-323.1)/323.1; format bank title(['2016年人口估计:',num2str(y2016),'百万,'... ,'误差:',num2str(m),'%'])

③ 结论

\bullet 要对问题的背景进行详细的分析

\bullet 采样点并非越多越好,适当的时候,可以减少采样点,分段进行拟合

4. 家庭储蓄规律问题

以下是某市家庭收入x与家庭储蓄y之间的一组调查数据(单位:万元), 试建立x与y的线性函数经验公式。

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); xi=0.6:0.1:4; yi=polyval(p,xi); plot(x,y,'o',xi,yi); title('家庭储蓄规律问题:经验公式') text(1.8,0.3,['$$y=(',num2str(p(1)),')x+(',num2str(p(2)),')$$'],... 'interpreter','latex');5. 总结

曲线拟合的三种功能:

① 估算数据

② 预测趋势

③ 总结规律



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有