MATLAB数据拟合工具在数学建模中的运用
来源:互联网 发布:干软件二次开发怎么样 编辑:程序博客网 时间:2024/05/16 14:21
1.问题描述
下表是由中国国家统计局提供的《50个城市主要食品平均价格变动情况》整理得到的2016年1月到5月豆角价格数据表,请建立数学模型解决下来两个问题:
(1)豆角价格有什么特点?
(2)对6月份豆角价格变化情况进行预测。
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软件的设计是一个经典的学习例子。
- MATLAB数据拟合工具在数学建模中的运用
- 数学建模--数据拟合
- MATLAB在数学建模中的应用
- MATLAB 在数学建模中的应用
- 《Matlab在数学建模中的应用》笔记系列1-线性规划
- MATLAB数学建模(9)-遗传算法工具
- MatLab建模学习笔记6——数据拟合方法
- 数学建模中的Matlab模板程序
- MATLAB数据拟合中的若干问题(待续)
- matlab在建模中的应用
- 《Matlab在数学建模中的应用》笔记2-非线性规划&整数规划
- 《Matlab在数学建模中的应用》笔记3-灰色预测(GM(1,1))
- 《Matlab在数学建模中的应用》笔记4-遗传算法(GA)
- 数学建模常用Matlab/Lingo/c代码总结系列——插值拟合
- 数学建模常用Matlab/Lingo/c代码总结系列——非线性拟合
- 统计建模在AOI中的运用
- matlab拟合工具简介
- Matlab与数学建模
- C++默认参数
- ARMv8 與 Linux的新手筆記
- EventBus笔记(一)
- Android的Handler,Looper源码剖析
- poj2186 Popular Cows
- MATLAB数据拟合工具在数学建模中的运用
- mysql获取按日期排序获取最新的记录
- C++抽象类练习题——games
- 互联网技术学习中的一些资源总结
- Web开发基础准备——Flask版
- 算法导论_第十六章_动态规划
- 物理扇区和逻辑扇区(相对扇区)的关系
- 2016年6月5日 19:07:13
- 利用Handler在主线程与子线程之间互发消息,handler详解