(3.2)--第七章 灰色预测与数值插值.ppt

(3.2)--第七章 灰色预测与数值插值.ppt

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共94页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

;;灰色预测背景;模型的提出:基于随机的原始时间序列,经按时间累加后形成的新的时间序列所呈现的规律用一阶线性微分方程的解来逼近的模型。

模型的适用条件:

1.数据量不少于4个;

2.原始数据非负、符合指数规律变化且变化不是很快;

3..

;模型的基本定义;建模过程;则GM(1,1)模型的矩阵形式为

利用最小二乘法获得参数为;5.对数据模型作逆生成处理(累减),还原得:

;例1以我国1998-2006年全国人口总量作为预测样本,采用GM(1,1)模型进行数据预测。;利用最小二乘法得

于是得到a=-0.0062,b=124786.

3.模型求解

灰微分方程为

把系数a,b代入GM(1,1)模型白化方程的解并作逆生成处理,还原

可见,短期人口预测结果与实际情况十分接近。

用MATLAB实现建模如下:;%GM(1,1)模型

clc,clear

x0=[124761125786126743127627128453129227129988130756131448]%输入数据注意这里为列向量

n=length(x0)

lamda=x0(1:n-1)./x0(2:n)%级比

range=minmax(lamda)%级比范围

ifrange(1,1)exp(-2/(n+2))|range(1,2)exp(2/(n+2))

error(级比没有落入灰色模型的范围内)

else

%空行输出

disp();

disp(可以用GM(1,1)建模)

end;x1=cumsum(x0)%累加运算

B=[-0.5*(x1(1:n-1)+x1(2:n)),ones(n-1,1)];

Y=x0(2:n);

u=B\Y%拟合参数

k=10;

forecast1=(x1(1)-u(2)./u(1)).*exp(-u(1).*([0:n-1+k]))+u(2)./u(1);

exchange=diff(forecast1)%最后10个为预测的数据

epsilon=x0(2:n)-exchange(1:n-1)%计算残差

delta=abs(epsilon./x0(2:n))%计算相对误差

rho=1-(1-0.5*u(1))/(1+0.5*u(1))*lamda%计算级比偏差值

;二、GM(1,N)模型;建模过程;4.构造方程的白化模型为

当变化幅度较小时,可视为灰变量

5.得出模型的近似时间响应式为

6.得出累减还原式为;例2某商品的生,产需要甲.乙两种原料,产品利润以及甲、乙两种原料的市场供给等数据如表15.7所列,试预测2004年甲的供应量为400kg.乙的供应量为500kg时的产品利润(要求建立灰色GM(1,N))。

表2.原始数据表

;

这里有3个变量其中表示利润(预测对象),

分别表示甲原???和乙原料的量,每个变量都有5个相互对应的历史数据,于是形成了3个原始数列:

;记为的累加生成数列,这里:

的紧邻均值生成序列:

;于是有

所以

得估计模型

;及近似时间响应式

;%GM(1,N)

clc,clear

x0=[43837625105001131617818

83131180195306

146212233259404];%录入数据

[m,n]=size(x0);

x1_d=cumsum(x0,2);%累加序列

x11=x1_d(1,:);

z11=0.5*(x11(1:end-1)+x11(2:end));%紧邻均值生成

b=[-z11x1_d(2,2:end)x1_d(3,2:end)];

y=x0(1,2:end);

u=b\y%参数矩阵;%%引入条件

x20=[x0(2,:),400];

x30=[x0(3,:),500];

x21=cumsum(x20);x31=cumsum(x30);

fork=0:length(x21)-1

文档评论(0)

177****2883 + 关注
实名认证
内容提供者

热爱教育,专注于教育领域创作与分享,让我们共同进步。

1亿VIP精品文档

相关文档