数学建模常用模型(一):灰色预测法
灰色预测法是一种用于处理少量数据、数据质量较差或者缺乏历史数据的预测方法。它适用于一些非线性、非平稳的系统,尤其在短期预测和趋势分析方面有着广泛的应用。灰色预测法作为一种强大的数学建模工具,通过利用有限的信息,能够在不完备的条件下进行准确的预测。它在许多领域都得到广泛应用,并且随着灰色系统理论的发展,它的应用前景将更加广阔。
1. 灰色系统理论简介
灰色预测法(Gray Forecasting Method)是一种基于少量、不完全信息的数学建模方法,用于预测未来的发展趋势。通过科学的方法分析事物的过去和现在,揭示出其中的发展规律,从而进行准确的预测。
2. 灰色系统的特点
灰色系统理论运用灰色数学处理不确定性量化问题,并充分利用已知信息,寻求系统运动规律。其独特之处在于适用于处理信息匮乏的系统。
3. 灰色生成
灰色生成是通过对原始数据进行特定要求的处理,揭示出数据背后的内在规律。常用的生成方法包括累加生成、累减均值生成和级比生成。
4. 累加生成简介
累加生成是一种关键方法,通过对原始数据列进行逐项累加,将灰色过程由灰色转变为白色,突显数据的积分特性和规律。
5. GM(1,1)模型
GM(1,1)模型是灰色预测法中常用的模型之一。它通过对原始数据进行累加生成,建立灰色微分方程,并通过求解方程来得到准确的预测值。
6. 预测值的求解
7. GM(1,1)模型精度检验
在选择模型后,对其进行精度检验以验证其合理性是必要的。常用的灰色模型精度检验方法包括相对误差大小检验法、关联度检验法和后验差检验法。下面主要介绍后验差检验法:
计算残差得:
8. 灰度通用代码
function []=huidu()
% 本程序主要用来计算根据灰色理论建立的模型的预测值。
% 应用的数学模型是 GM(1,1)。
% 原始数据的处理方法是一次累加法
y=input("请输入数据);
n=length(y);
yy=ones(n,1);
yy(1)=y(1);
for i=2:n
yy(i)=yy(i-1)+y(i);
end
for i=1:(n-1)
B(i,1)=-(yy(i)+yy(i+1))/2;B(i,2)=1;
B=ones(n-1,2);
end
BT=B';
for j=1:n-1
YN(j)=y(j+1);
end
YN=YN';
A=inv(BT*B)*BT*YN;
a=A(1);
U=A(2);
t=u/a;
i=l:n+2;
yys(i+1)=(y(1)-t).*exp(-a.*i)+t;yys(1)=y(1);
for j=n+2:-1:2
ys(j)=yys(j)-yys(j-1);
end
X=1:n;
xs=2:n+2;yn=ys(2:n+2);plot(x,y,'^r',xs,yn,'*-b');det=0;
sum1=0;
sumpe=0;
for i=l:n
sumpe=sumpe+y(i);
end
pe=sumpe/n;
for i=1:n
sum1=sum1+(y(i)-pe).^2;
end
s1=sqrt(sum1/n);
sumce=0;
for i=2:n
sumce=sumce+(y(i)-yn(i));
end
ce=sumce/(n-1);sum2=0;
for i=2:n
sum2=sum2+(y(i)-yn(i)-ce).^2;
end
s2=sqrt(sum2/(n-1));
c=(s2)/(s1);
disp(['后验差比值为:,num2str(c)]);
if c<8.35
disp(系统预测精度好 )
else if c<0.5
disp("系统预测精度合格 )
else if c<0.65
disp("系统预测精度勉强')
else
disp("系统预测精度不合格 )
end
end
end
disp(['下个拟合值为,num2str(ys(n+1))]);
disp([再下个拟合值为',num2str(ys(n+2))]);
9.运行结果
10.更多资料(代码,电子版资料,入门资料)
github上有完整资料:https://github.com/HuaandQi/-.git