赞
踩
本文为北海的数模课程学习笔记,课程出自微信公众号:数学建模BOOM。
求赞!求收藏!求关注!
目录
GM(1,1)灰色预测是灰色系统理论中的一种线性一阶微分方程模型,用于对具有不完全信息的数据序列进行趋势预测,特别适用于数据量小且变化规律不明显的情况。
部分已知:往年数据已知。
部分未知:下一年数据未知。但是可以进行预测。
样本数据少:不确定性高。
在建立模型的最开始做的。保证这个问题适合用灰色预测,避免白忙活。
记住公式。
- clc,clear
- x0=[71.1 72.4 72.4 72.1 71.4 72.0 71.6]'; % 注意这里为列向量
- n=length(x0);
- lamda=x0(1:n-1)./x0(2:n); % 计算级比
- range=minmax(lamda'); % 计算级比的范围
- lamrange_min=exp(-2/(n+1)); % 允许的范围下界
- lamrange_max=exp(2/(n+1)); % 允许的范围上界
- % 原始数据的级比检验
- if (range(1)>lamrange_min && range(2)<lamrange_max)
- fprintf("原始数据通过级比检验")
- else
- fprintf("原始数据未能通过级比检验!!!")
- return
- 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 % 拟合参数u(1)=a,u(2)=b,左除,相当于B的逆矩阵乘Y
- syms x(t) %定义符号变量
-
- %dsolve求微分方程的符号解,即累加序列的函数表达式,而不是数值
- x=dsolve(diff(x)+u(1)*x==u(2),x(0)==x0(1)); % diff是一阶导或差分
- xt=vpa(x,6) %以保留6位小数的格式显示微分方程的解,vpa设置精度
-
- % 函数subs(x,t,[0:n-1])意味着把t=0到t=n-1依次代入x的表达式求出值
- nihe1=subs(x,t,[0:n-1]); %求已知数据对应的拟合值
- nihe1=double(nihe1); %符号数转换成数值类型,否则无法作差分运算
- nihe=[x0(1),diff(nihe1)] %差分运算,得到原始序列拟合值
yuce_result=double(subs(x,t,7))-double(subs(x,t,6)) % 原始序列的预测值,即第8年噪声
- delta=abs((x0'-nihe )./x0') %计算相对误差
- rho=1-(1-0.5*u(1))/(1+0.5*u(1))*lamda' %计算级比偏差值
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。