欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Matlab實現(xiàn)灰色預測的示例代碼

 更新時間:2022年05月17日 16:10:32   作者:slandarer  
這篇文章主要為大家詳細介紹了如何利用Matlab實現(xiàn)灰色預測,文中的示例代碼講解詳細,具有一定的參考價值,感興趣的小伙伴可以了解一下

模型介紹

略微帶過一下原理:

灰色預測對于趨勢不強的數(shù)據(jù),將其原始數(shù)據(jù)進行累加后得到具有明顯趨勢的新數(shù)據(jù)進行擬合,假設原數(shù)據(jù)為: 

則新數(shù)據(jù)集X(1)中數(shù)據(jù)為:

通常認為累加數(shù)據(jù)服從指數(shù)分布,欸那我們直接假設:

直接進行一個非線性擬合不就完事了,但是,從小學二年級開始,老師就教導我們,像這用指數(shù)函數(shù)擬合啊,各個參數(shù)的變化對于整體曲線的影響效果差別很大啊,直接擬合誤差會很大啊,怎么能給他整成一個線性擬合???(直接擬合我有試過,能夠大體描述趨勢并做出預測,但是誤差會比灰色預測大一點)。

指數(shù)函數(shù)一般符合一個微分方程: 

解常微分方程易得: 

這樣我們只需要將a,u這倆常數(shù)求出來就能得到x(1)(t) ,就能得到X(1)序列然后逐項做差就能得到X(0)序列。

當k≤t≤k+1時,有:

帶入回之前的微分方程就有: 

實際上直接進行線性擬合就好了,當然我們也可以拿最小二乘法裝模作樣的分析一下,令: 

基礎代碼

核心代碼非常短,只有六行,代碼中給出了詳細的注釋,基礎繪圖還是MATLAB風比較簡陋,后面會給出圖像修飾代碼。

X0=[15 16.1 17.3 18.4 18.7 19.1 19.9 21.3 22.5];
t=1:9;    % 原始數(shù)據(jù)自變量范圍
pt=10:12; % 預測數(shù)據(jù)自變量范圍

X1=cumsum(X0);                    % 累加生成趨勢明顯新序列
Z=X1(1:end-1)+diff(X1)./2;        % 均值,即(X1(1:end-1)+X1(2:end))./2
a_u=polyfit(-Z,X0(2:end),1);      % a_u=(B'*B)\B'*Y,B=[-Z,ones]
a=a_u(1);u=a_u(2);
P=(X1(1)-u/a)./exp(a.*([t,pt]-1))+u/a; % 求X1擬合值
P=[P(1),diff(P)];                      % X1逐項做差求預測值

% 繪圖
plot([t,pt],P,'*-');
hold on
plot(t,X0,'s-')  
legend('預測值','真實值');

基礎代碼+修飾

X0=[15 16.1 17.3 18.4 18.7 19.1 19.9 21.3 22.5];
t=1:9;    % 原始數(shù)據(jù)自變量范圍
pt=10:12; % 預測數(shù)據(jù)自變量范圍

X1=cumsum(X0);                    % 累加生成趨勢明顯新序列
Z=X1(1:end-1)+diff(X1)./2;        % 均值,即(X1(1:end-1)+X1(2:end))./2
a_u=polyfit(-Z,X0(2:end),1);      % a_u=(B'*B)\B'*Y,B=[-Z,ones]
a=a_u(1);u=a_u(2);
P=(X1(1)-u/a)./exp(a.*([t,pt]-1))+u/a; % 求X1擬合值
P=[P(1),diff(P)];                      % X1逐項做差求預測值

% 繪圖
plot([t,pt],P,'s-','Color',[82,124,179]./255,'MarkerFaceColor',[82,124,179]./255,...
    'MarkerEdgeColor',[1,1,1],'LineWidth',2,'MarkerSize',16)  
hold on
plot(t,X0,'d-.','Color',[169,64,71]./255,'MarkerFaceColor',[169,64,71]./255,...
    'MarkerEdgeColor',[1,1,1],'LineWidth',2,'MarkerSize',16)  

% 增添圖例
lgd=legend('fitting result','original data');
lgd.Location='best';
lgd.FontSize=16;

% 坐標區(qū)域修飾
ax=gca;grid on;box off
ax.LineWidth=2;
ax.Color=[249,250,245]./255;
ax.XMinorTick='on';
ax.YMinorTick='on';
ax.GridLineStyle='-.';
ax.XColor=[1,1,1].*.2;
ax.YColor=[1,1,1].*.2;
ax.FontName='Cambria';
ax.FontSize=14;

到此這篇關于Matlab實現(xiàn)灰色預測的示例代碼的文章就介紹到這了,更多相關Matlab灰色預測內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C語言函數(shù)指針數(shù)組實現(xiàn)計算器功能

    C語言函數(shù)指針數(shù)組實現(xiàn)計算器功能

    這篇文章主要通過C語言函數(shù)指針數(shù)組實現(xiàn)了計算器的功能,是一個很好而且流程詳細的小例子,感興趣的新手朋友們可以自己動手也寫一遍
    2022-04-04
  • 詳解C語言實現(xiàn)空間索引四叉樹

    詳解C語言實現(xiàn)空間索引四叉樹

    本文主要介紹了用C語言實現(xiàn)四叉樹,對算法感興趣的同學,可以參考下,并且試驗一下。
    2021-05-05
  • 詳解C++基礎——類繼承

    詳解C++基礎——類繼承

    這篇文章主要介紹了C++類繼承,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • C語言植物大戰(zhàn)數(shù)據(jù)結構二叉樹遞歸

    C語言植物大戰(zhàn)數(shù)據(jù)結構二叉樹遞歸

    這篇文章主要為大家介紹了C語言植物大戰(zhàn)數(shù)據(jù)結構二叉樹遞歸,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • C語言之如何求三次方根

    C語言之如何求三次方根

    這篇文章主要介紹了C語言之如何求三次方根問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • C++實現(xiàn)將長整型數(shù)轉換為字符串的示例代碼

    C++實現(xiàn)將長整型數(shù)轉換為字符串的示例代碼

    這篇文章主要介紹了C++實現(xiàn)將長整型數(shù)轉換為字符串的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • 哈希表實驗C語言版實現(xiàn)

    哈希表實驗C語言版實現(xiàn)

    以下是對哈希表實驗用C語言實現(xiàn)的代碼進行了詳細的分析介紹,需要的朋友可以參考下
    2013-07-07
  • C語言字符串函數(shù)介紹與模擬實現(xiàn)詳解

    C語言字符串函數(shù)介紹與模擬實現(xiàn)詳解

    字符串函數(shù)(String?processing?function)也叫字符串處理函數(shù),指的是編程語言中用來進行字符串處理的函數(shù),如C,pascal,Visual以及LotusScript中進行字符串拷貝,計算長度,字符查找等的函數(shù)
    2022-02-02
  • C語言實現(xiàn)掃雷游戲(含注釋詳解)

    C語言實現(xiàn)掃雷游戲(含注釋詳解)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)掃雷游戲,含注釋,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C++中new和delete匹配使用過程詳解

    C++中new和delete匹配使用過程詳解

    關于 new 和 delete 的使用相信大家并不陌生,可是為什么使用 new 的時候要用 delete,使用 new[] 的時候又要用 delete[]呢?本文就來和大家詳細說說
    2023-02-02

最新評論