MATLAB数据拟合工具在数学建模中的简单应用

1.问题描述

下表是由中国国家统计局提供的《50个城市主要食品平均价格变动情况》整理得到的2016年1月到5月豆角价格数据表,请建立数学模型解决下来两个问题:

(1)豆角价格有什么特点?

(2)对6月份豆角价格变化情况进行预测。

月份一月 二月 三月 四月 五月
日期1-1011-2021-301-1011-2021-301-1011-2021-301-1011-2021-301-1011-2021-30
价格10.3610.1912.6912.1417.416.4717.6917.2215.4813.8211.7610.939.157.92

2.模型假设,符号说明

2.1 模型假设

一个国家的宏观经济会呈现周期性,因此作为一国宏观经济的组成部分之一的物价水平也会呈现周期性,随着经济周期的上下波动,物价水平也会上下波动。基于这点,描述物价水平的数学模型——经验公式也应该具有周期性。我们不妨假设描述物价水平数学模型是一个周期函数,并且可以转化为傅里叶级数。

2.2 符号说明

从表中,我们不难发现,国家统计局会在一个月里对50个城市主要食品平均价格变动情况进行三次调查统计,分别是1-10日,11-20日和21-30日三个时间区间。因此,描述物价水平的周期函数的自变量是月份。为了方便处理,我们再做一次抽象处理,将时间抽象为整数N,其中0<=N<=36。那么如何使用N来表示某一个月呢?又如何使用N来表示某一个月里的第几次调查呢?为此,我们使用如下两个运算符(高级编程语言中都有这两个运算符):
/:整除运算符,比如13/3=4
%:取模运算符,比如13%3=1
这样整数N与月份和当月的第几次调查之间的关系可以表示如下:
调查次序Q=N%3
如果Q=0,那么调查月份M=N/3,否则M=N/3 + 1
比如取N=13,那么调查次序Q=1,调查月份M=5,这表示5月份的第一次调查,即调查时间为5月1-10日。

3.数学建模

接下来看看,如何使用MATLAB的数据拟合工具解决该问题。

设时间矩阵N = [1 2 3 4 5 6 7 8 9 10 11 12 13 14];

豆角价格的矩阵vigna= [10.36 10.19 12.69 12.14 17.4 16.47 17.69 17.22 15.48 13.82 11.76 10.93 9.15 7.92];

3.1 进入数据拟合窗口

在MATLAB命令行窗口中输入cftool,回车即可。

3.2 数据拟合

在区域1中选择相应坐标轴的变量名,在区域2中选择拟合的函数模型,在区域3会会自动显示拟合的图像,在区域4中会给出拟合后的函数表达式。

区域2中可以选择的函数模型有:

Custom Equation 自定义方程
Exponential 指数拟合
Fourier 傅里叶拟合
Gaussian 高斯拟合
Interpolant 插值
Linear Fitting 线性拟合
Polynoimal 多项式
Power 幂函数拟合
Rational 有理拟合,两个多项式之比,分子和分母都是多项式
Smoothing Spline 平滑样条
Sum of Sine 正弦曲线拟合
Weibull 韦布尔拟合

区域4中显示拟合结果的评价指标,含义如下:

SSE:Sum of Squares due to Error误差平方和,越接近0曲线的拟合效果(由最小二乘法计算得出)
R-square:越接近1,曲线的拟合效果越好
Adjusted R-square:越接近1,曲线的拟合效果越好
RMSE:root mean square error 均方根误差,越接近0曲线的拟合效果

最后看看本题的拟合效果,如下图所示。

最后看看,区域4中显示的函数模型:

General model Fourier1:
f(x) =  a0 + a1*cos(x*w) + b1*sin(x*w)
Coefficients (with 95% confidence bounds):
a0 =          13  (11.75, 14.25)
a1 =      -4.347  (-5.235, -3.459)
b1 =        0.34  (-3.128, 3.808)
w =      0.4398  (0.3295, 0.5501)
Goodness of fit:
SSE: 9.611
R-square: 0.9314
Adjusted R-square: 0.9108
RMSE: 0.9803

通过各种函数模型的拟合发现这个模型拟合效果最好,R-square: 0.9314,非常接近于1。

因此描述豆角价格变化规律的数学模型就是:

vigna = f(N) = 13 + -4.347*cos(N*0.4398) + 0.34*sin(N*0.4398)

这是一个周期函数,符合经济周期的规律。

至此,本题基本解决了。

4.总结

本文通过一个数学建模题目讲解了MATLAB中数据拟合工具的使用,该工具比较简单,但是功能很强大。MATLAB中含有许多功能强大的工具,读者有兴趣的话,可以继续探索,在使用该工具时,也可以从软件设计的角度去欣赏,个人觉得MATLAB软件的设计是一个经典的学习例子。

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注