1. 程式人生 > >MATLAB資料擬合工具在數學建模中的運用

MATLAB資料擬合工具在數學建模中的運用

1.問題描述

下表是由中國國家統計局提供的《50個城市主要食品平均價格變動情況》整理得到的2016年1月到5月豆角價格資料表,請建立數學模型解決下來兩個問題:

(1)豆角價格有什麼特點?

(2)對6月份豆角價格變化情況進行預測。

月份                                      一月                                      二月                                      三月                                      四月                                      五月
日期 1-10 11-20 21-30 1-10 11-20 21-30 1-10 11-20 21-30 1-10 11-20 21-30 1-10 11-20 21-30
價格 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

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軟體的設計是一個經典的學習例子。