如何利用MATLAB进行数据拟合? 您所在的位置:网站首页 bradley拟合 如何利用MATLAB进行数据拟合?

如何利用MATLAB进行数据拟合?

2024-06-25 13:32| 来源: 网络整理| 查看: 265

文章目录 前言1 引例一人口预测问题2 曲线拟合的原理3 曲线拟合的实现方法4 实际应用-家庭储蓄规律问题小结

前言

本文是科学计算与MATLAB语言课程的第5章第5、6小结的学习笔记,通过查阅本文,可以轻松掌握利用MATLAB进行数据拟合了。 E n j o y   y o u r   r e a d i n g ! Enjoy\ your\ reading! Enjoy your reading! 欢迎大家👍,收藏⭐,转发🚀, 如有问题、建议请您在评论区留言💬。

1 引例一人口预测问题

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

年份179018001810182018301840185018601870188018901900人口(百万)3.95.37.29.612.917.123.231.438.650.263.076.0年份19101920193019401950196019701980199020002010人口(百万)92.0105.7122.8131.7150.7179.3203.2226.5248.7281.4308.7

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

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));

fig6

2 曲线拟合的原理

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

x x x x 1   x 2   . . . x k . . .   x n x_1 \ x_2 \ ...x_k...\ x_n x1​ x2​ ...xk​... xn​ y y y y 1   y 2   . . . y k . . .   y n y_1\ y_2 \ ...y_k...\ y_n y1​ y2​ ...yk​... yn​

y = f ( x ) y=f(x) y=f(x) 构造函数 g ( x ) g(x) g(x)去逼近未知函数 f ( x ) f(x) f(x),使得误差 δ = g ( x i ) − f ( x i ) ( i = 1 , 2 , 3 , … , n ) \delta=g(x_i)-f(x_i)(i=1,2,3,…,n) δ=g(xi​)−f(xi​)(i=1,2,3,…,n)在某种意义下达到最小。 两个问题: (1)用什么类型的函数做逼近函数? 多项式函数 (2)误差最小到底怎么计算? 最小二乘法 最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和来寻找数据的最佳函数匹配。 设p(x)是一个多项式函数 p ( x ) = a m x + a m − 1 x m − 1 + … + a 1 x + a o p(x)=a_mx+a_{m-1}x^{m-1}+…+a_1x+a_o p(x)=am​x+am−1​xm−1+…+a1​x+ao​,且 ∑ i = 1 n ( p ( x i ) − y i ) 2 \sum\limits_{i=1}^n(p(x_i)-y_i)^2 i=1∑n​(p(xi​)−yi​)2的值最小, 则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)当经济发展到一定水平时,人口增长率反而下降。 换言之,在不同的环境和经济发展水平,人口可能有不同的增长规律。 结论: 在人口增长数据的拟合上,应该将二战后至今这一时期的数据与此前的数据分开处理。

x=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.1696 ans= 336.7857%相对误差成功减小到0.64%!

结论: (1)要对问题的背景进行详细的分析。 (2)采样点并非越多越好,适当的时候,可以减少采样点,分段进行拟合。

4 实际应用-家庭储蓄规律问题

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

x0.61.01.41.82.22.63.03.43.84y0.080.220.310.40.480.560.670.750.81.0 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

fig7 最后几组数据误差还是挺大的。 那么总结一下,曲线拟合有哪几种功能呢? (1)估算数据 (2)预测趋势 (3)总结规律 数据拟合和数据插值有什么区别呢? 相同点: (1)都属于函数逼近的方法; (2)都可以通过离散有限的数据估算其他数据。 不同点: (1)实现方法上,数据插值要求逼近函数经过样本点,而曲线拟合只需要每个数据点的误差平方和最小; (2)结果形式上,数据插值往往没有统一的逼近函数,而数据拟合有统一的逼近函数; (3)侧重点上,数据插值一般用于样本点区间内的数据计算,而曲线拟合不光可以估算区间内的数据,也可以对区间外的进行预测; (4)应用场合上,如果样本点为精确数据,使用数据插值比较好,如果数据为统计数据,则使用曲线拟合更优。

小结

曲线拟合和数据插值有所不同,各有侧重。奥里给,学好它,让它为我所用。最后不要忘记 点赞👍,收藏⭐,转发🚀, 如有问题、建议请您在评论区留言💬。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

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