基于Matlab的井冈山红色旅游人次和收入灰色预测研究
- 格式:pdf
- 大小:494.48 KB
- 文档页数:4
基于MATLAB的灰色预测GM(1,1)模型在经济分析中的
应用
宋秀英
【期刊名称】《数学学习与研究:教研版》
【年(卷),期】2011(000)011
【摘要】灰色预测通过鉴别系统因素之间发展趋势的相异程度,即进行关联分析,并对原始数据进行生成处理来寻找系统变动的规律.MATLAB具有强大的数据处理和分析功能,可以方便、快捷、准确、直观地进行预测分析.本文介绍了灰色预测模型GM(1,1)的基本原理和精度检验方法,并用GM(1,1)模型对经济指标进行了预测.考虑到人工计算的复杂性和不准确性,本文将MATLAB程序用于GM(1,1)模型对经济指标的预测中,得到了理想的预测结果.
【总页数】3页(P93-95)
【作者】宋秀英
【作者单位】四川信息职业技术学院数学教研室,628017
【正文语种】中文
【中图分类】N941.5
【相关文献】
1.灰色预测系统GM(1,1)模型及其Matlab实现 [J], 殷鹏远
2.改进的灰色预测GM(1,1)模型的MATLAB实现 [J], 杨旭
3.灰色预测GM(1,1)模型在大学普及率中的应用研究
——基于西藏GER的实证分析 [J], 邱婧玲
4.灰色预测GM(1,1)模型在大学普及率中的应用研究--基于西藏GER的实证分析[J], 邱婧玲
5.福建省2030年碳达峰前二氧化碳排放趋势研究——基于GM(1,1)、GM(2,1)与GM(1,1)邓聚龙灰色预测模型 [J], 柳尧云;林润玮;阎虎勤
因版权原因,仅展示原文概要,查看原文内容请购买。
灰色预测作用:求累加数列、求a b的值、求预测方程、求残差clc %清屏,以使结果独立显示x=[71.1 72.4 72.4 72.1 71.4 72.0 71.6];format long; %设置计算精度if length(x(:,1))==1 %对输入矩阵进行判断,如不是一维列矩阵,进行转置变换 x=x';endn=length(x); %取输入数据的样本量z=0;for i=1:n %计算累加值,并将值赋予矩阵bez=z+x(i,:);be(i,:)=z;endfor i=2:n %对原始数列平行移位y(i-1,:)=x(i,:);endfor i=1:n-1 %计算数据矩阵B的第一列数据c(i,:)=-0.5*(be(i,:)+be(i+1,:));endfor j=1:n-1 %计算数据矩阵B的第二列数据e(j,:)=1;endfor i=1:n-1 %构造数据矩阵BB(i,1)=c(i,:);B(i,2)=e(i,:);endalpha=inv(B'*B)*B'*y; %计算参数矩阵即a b的值for i=1:n+1 %计算数据估计值的累加数列,如改为n+1为n+m可预测后m-1个值ago(i,:)=(x(1,:)-alpha(2,:)/alpha(1,:))*exp(-alpha(1,:)*(i-1))+alpha(2,:)/alpha(1,: );%显示输出预测值的累加数列endvar(1,:)=ago(1,:) %显示输出预测值for i=1:n %如改n为n+m-1,可预测后m-1个值var(i+1,:)=ago(i+1,:)-ago(i,:); %估计值的累加数列的还原,并计算出下一预测值endfor i=1:nerror(i,:)=x(i,:)-var(i,:); %计算残差endc=std(error)/std(x); %调用统计工具箱的标准差函数计算后验差的比值c ago %显示输出预测值的累加数列alpha %显示输出参数数列var %显示输出预测值error %显示输出误差c %显示后验差的比值作用:数据处理判断是否可以用灰色预测、求级比、求累加数列、求a b的值、求预测方程clc,clearx0=[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') %计算级比的范围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)=bx=dsolve('Dx+a*x=b','x(0)=x0'); %求微分方程的符号解x=subs(x,{'a','b','x0'},{u(1),u(2),x0(1)}) %代入估计参数值和初始值yuce1=subs(x,'t',[0:n-1]); %求已知数据的预测值y=vpa(x,6) %其中的6表示显示6位数字yuce=[x0(1),diff(yuce1)] %差分运算,还原数据。
1 引言随着社会的发展,我国对高素质人才的需求不断增加,从而使得我国的考研报考人数不断增加,国内学生的竞争压力与之成正比关系。
因此,正确地对考研报考人数进行预测可以帮助考生提前了解考研的压力指数,并且对未来规划进行一个较完善的判断。
该行为,同时也有利于我国的国民素质朝着更好的、更适合自己的方向发展。
2 灰色模型基本原理2.1 灰色模型灰色模型来源于系统论,一般将同时发展具有已知信息和未知信息的系统可以称为系统论。
灰色模型的优点则在于能够利用少量的数据建模。
其中的预测模型一般为GM 模型,报告中所采用的方法为GM(1,1),其中的1和1则分别表示一阶和变量的个数为一。
GM(1,1)模型,用于先生成一组原始数列,再对原始数据进行一次累加,将一次累加后的数据变形形成紧邻均值数列。
原始数据数列和紧邻均值数列一起构成GM (1,1)的基本形式,基本形式中含有两个未知量,一个是灰作用量,一个是发展系数。
最后将基本形式变形建立微分方程,取一个初始值并利用此微分方程即能求出拟合数列的递推式。
2.1.1用数学公式解释灰色模型基本原理设是原始数列,对原始进行一次累加得到数列,其中,…以此类推得出:为数列的紧邻均值生成数列,其中在一般情况下取值0.5,其目的是在一次累加数列的基础上使数据变得更平滑,更具有规律。
其中的和构成成为G M(1,1)的基本形式,。
将其中的b称作灰作用量,-a 为发展系数。
为了解出灰作用量和发展系数的值,我们引入矩阵形式:由定积分的几何意义以及变形后又可以得出GM (1,1)的白化微分方程:最终构造成了GM(1,1)模型的拟合公式:其中,该拟合公式可以用来进行自变量已知的因变量预测。
灰色模型在MATLAB 程序软件中的应用——基于灰色模型的研究生入学考试报考人数预测【摘要】近年来,随着社会的不断发展,社会对高素质人才的需求不断增加,我国研究生入学考试人数也在逐年递增。
本文以2010年—2019年的考研报考人数为数据源,采用灰色GM (1,1)模型在MATLAB 程序软件中的应用,对2020年—2025年的考研报考人数进行预测。
灰色预测专设工⑼他QA—叫吋)为原始数列.其1次累❖加生成数列为恥=妙①曲⑵,…卅何),其中X° 仇)二工* ° (0.址=1=2= -:n5-1卷定义卫的决导数为d(k) = *町(上)=x 叫咼-x cl)(Jt-l).令为数列工①的邻值生成数列.即却(去)=^(*) + (1- a)x0)(t-lX于是定义GM (L 1)的灰微分方程模型为d(k)-血⑴住)=K即或严>(£) + “尹⑻=人⑴在式(1)中』。
>(灼称为灰导数,我称为发展系数, 弧称为白化背景值,b称为灰作用量乜将时刻表殳二2「3「/代入(1)式有V!1「—ay=代⑶ B =Ib*- :X闵0)-Z,:](K)1于是G\I <1»1)複至可表示为Y = Bu.現在问题归结为求sb 在值。
用一元线性回归・即最小二秦法求它们的活计值 为注二实陌上回归分析中求估计值是用软件计尊的・有标准程序求解,iOmaClab 等。
GM <1» 1>的白化晏対于G\I <1> 1)的灰微分方程(1) >如果将灰导数打(Q 的时刻 视为连绫变里"则x°)视为时问(函数卅⑺,于是*〉(Q 対血于导数里级 心2 >白化背臬值申的对应于导数卅⑴。
于是G\I (1,1)的坝徽 分方樂対应于的白微分方程为内・则数堀列X©可以塗互G\I <19 1) 且可以进行页色预测。
否朋,対数摄做适当的克换处理■如平移叢换:取C 使得鞍据列严伙)=工⑴伙)+ G 上=1,2,…,的级比都華住可吝禎盖内。
心⑴⑴ + o?i> (r)二◎ dr<2)GM mi )质色预测的步骤1 •教摇的枪绘与处連为了ftilGAl (1,1)建複方法的可行性,亲要为已知期S 做必要的检蛉处理。
设原始教据列为了 逛=(乂°(1)*6(2)严炉00; >计算数列的级比如果所有的级比都落在可容覆盖区间 • fc =A-2,3"・如果対所有的|p 伙)|<0・1 -则认为达到较高的要求,否则 若旳所有的|。
灰色系统预测GM(1,1)模型及其Matlab 实现预备知识(1)灰色系统白色系统是指系统内部特征是完全已知的;黑色系统是指系统内部信息完全未知的;而灰色系统是介于白色系统和黑色系统之间的一种系统,灰色系统其内部一部分信息已知,另一部分信息未知或不确定。
(2)灰色预测 灰色预测,是指对系统行为特征值的发展变化进行的预测,对既含有已知信息又含有不确定信息的系统进行的预测,也就是对在一定范围内变化的、与时间序列有关的灰过程进行 预测。
尽管灰过程中所显示的现象是随机的、杂乱无章的,但毕竟是有序的、有界的,因此得到的数据集合具备潜在的规律。
灰色预测是利用这种规律建立灰色模型对灰色系统进行预测。
目前使用最广泛的灰色预测模型就是关于数列预测的一个变量、一阶微分的GM(1,1)模型。
它是基于随机的原始时间序列,经按时间累加后所形成的新的时间序列呈现的规律可用一阶线性微分方程的解来逼近。
经证明,经一阶线性微分方程的解逼近所揭示的原始时间序列呈指数变化规律。
因此,当原始时间序列隐含着指数变化规律时,灰色模型GM(1,1)的预测是非常成功的。
1 灰色系统的模型GM(1,1)1.1 GM(1,1)的一般形式设有变量X (0)={X (0)(i ),i =1,2,...,n}为某一预测对象的非负单调原始数据列,为建立灰色预测模型:首先对X(0)进行一次累加(1—AGO , Acum ul at ed Ge nera ting Opera to r)生成一次累加序列: X (1)={X(1)(k ),k =1,2,…,n}其中X (1)(k )=∑=ki 1X (0)(i)=X (1)(k-1)+ X (0)(k) (1)对X(1)可建立下述白化形式的微分方程:dtdX )1(十)1(aX =u (2)即G M(1,1)模型。
上述白化微分方程的解为(离散响应): ∧X(1)(k +1)=(X (0)(1)-a u )ake -+au (3)或∧X (1)(k )=(X (0)(1)-a u ))1(--k a e +au (4)式中:k 为时间序列,可取年、季或月。
s=[493 372 445;372 445 176;445 176 235;176 235 378;235 378 429;378 429 561;429 561 651;561 651 467;651 467 527;467 527 668;527 668 841;668 841 526;841 526 480;526 480 567;480 567 685];p=s';t=[176 235 378 429 561 651 467 527 668 841 526 480 567 685 507];%数据归一化处理%mapminmax函数默认将数据归一化到[-1,1][normInput,ps]=mapminmax(p);[normTarget,ts]=mapminmax(t);%将输入的15组数据的20%,即3组,用来作为测试数据;% 样本的20%,即3组,用来作为变化数据;%另外9组用来正常输入,用来训练;testPercent=0.20; % Adjust as desiredvalidatePercent=0.20; % Adust as desired[trainSamples,validateSamples,testSamples]=dividevec(normInput,normTarget,valida tePercent,testPercent);% 设置网络参数for j=1:200NodeNum1=20; % 隐层第一层节点数NodeNum2=40; % 隐层第二层节点数TypeNum=1; % 输出维数TF1='tansig';TF2='tansig';TF3='tansig';%各层传输函数,TF3为输出层传输函数%如果训练结果不理想,可以尝试更改传输函数,以下这些是各类传输函数%TF1 = 'tansig';TF2 = 'logsig';%TF1 = 'logsig';TF2 = 'purelin';%TF1 = 'tansig';TF2 = 'tansig';%TF1 = 'logsig';TF2 = 'logsig';%TF1 = 'purelin';TF2 = 'purelin';net=newff(minmax(normInput),[NodeNum1,NodeNum2,TypeNum],{TF1 TF2 TF3},'traingdx');%网络创建% 设置训练参数net.trainParam.epochs=10000;%训练次数设置net.trainParam.goal=1e-6;%训练目标设置net.trainParam.lr=0.01;%学习率设置,应设置为较少值,太大虽然会在开始加快收敛速度,但临近最佳点时,会产生动荡,而致使无法收敛% 指定训练参数%---------------------------------------------------% net.trainFcn = 'traingd'; % 梯度下降算法% net.trainFcn = 'traingdm'; % 动量梯度下降算法%% net.trainFcn = 'traingda'; % 变学习率梯度下降算法% net.trainFcn = 'traingdx'; % 变学习率动量梯度下降算法%% (大型网络的首选算法)% net.trainFcn = 'trainrp'; % RPROP(弹性BP)算法,内存需求最小%% (共轭梯度算法)% net.trainFcn = 'traincgf'; % Fletcher-Reeves修正算法% net.trainFcn = 'traincgp'; % Polak-Ribiere修正算法,内存需求比Fletcher-Reeves 修正算法略大% net.trainFcn = 'traincgb'; % Powell-Beal复位算法,内存需求比Polak-Ribiere修正算法略大%% (大型网络的首选算法)%net.trainFcn = 'trainscg'; % Scaled Conjugate Gradient算法,内存需求与Fletcher-Reeves修正算法相同,计算量比上面三种算法都小很多% net.trainFcn = 'trainbfg'; % Quasi-Newton Algorithms - BFGS Algorithm,计算量和内存需求均比共轭梯度算法大,但收敛比较快% net.trainFcn = 'trainoss'; % One Step Secant Algorithm,计算量和内存需求均比BFGS 算法小,比共轭梯度算法略大%% (中型网络的首选算法)%net.trainFcn = 'trainlm'; % Levenberg-Marquardt算法,内存需求最大,收敛速度最快% net.trainFcn = 'trainbr'; % 贝叶斯正则化算法%% 有代表性的五种算法为:'traingdx','trainrp','trainscg','trainoss', 'trainlm' net.trainfcn='traingdm';[net,tr] = train(net,trainSamples.P,trainSamples.T,[],[],validateSamples,testSamples); [normTrainOutput,Pf,Af,E,trainPerf] = sim(net,trainSamples.P,[],[],trainSamples.T);%正常输入的9组p数据,BP得到的结果t[normValidateOutput,Pf,Af,E,validatePerf] = sim(net,validateSamples.P,[],[],validateSamples.T);%用作变量3的数据p,BP得到的结果t[normTestOutput,Pf,Af,E,testPerf] = sim(net,testSamples.P,[],[],testSamples.T);%用作测试的3组数据p,BP得到的结果ttrainOutput = mapminmax('reverse',normTrainOutput,ts);%正常输入的9组p数据,BP 得到的归一化后的结果ttrainInsect = mapminmax('reverse',trainSamples.T,ts);%正常输入的9组数据t validateOutput = mapminmax('reverse',normValidateOutput,ts);%用作变量3的数据p,BP得到的归一化的结果tvalidateInsect = mapminmax('reverse',validateSamples.T,ts);%用作变量3的数据t testOutput = mapminmax('reverse',normTestOutput,ts);%用作变量3组数据p,BP得到的归一化的结果ttestInsect = mapminmax('reverse',testSamples.T,ts);%用作变量3组数据t%绝对误差计算absTrainError = trainOutput-trainInsect;absTestError = testOutput-testInsect;error_sum=sqrt(absTestError(1).^2+absTestError(2).^2+absTestError(3).^2);All_error=[absTrainError absTestError error_sum];eps=90;%其为3组测试数据的标准差,或者每个数据偏差在一定范围内而判别if((abs(absTestError(1))<=30 )&(abs(absTestError(2))<=30)&(abs(absTestError(3))<=3 0)|(error_sum<=eps))save mynetdata netbreakendjendjMin_error_sqrt=min(All_error)testOutputtestInsect%---------------------------------------------------% 数据分析和绘图%---------------------------------------------------figureplot(1:12,[trainOutput validateOutput],'b-',1:12,[trainInsect validateInsect],'g--',13:15,testOutput,'m*',13:15,testInsect,'ro');title('o为真实值,*为预测值')xlabel('各组');ylabel('交通量(辆次/昼夜)');figurexx=1:length(All_error);plot(xx,All_error)title('误差变化图')。
基于MATLAB的人口预测研究一、本文概述1、人口预测的背景和意义在当今社会,人口预测已经成为一个至关重要的研究领域。
随着全球化的推进和科技的飞速发展,各国政府、企业和研究机构越来越意识到人口数据对未来战略规划的重要性。
人口预测不仅仅是关于数量的预测,更是对人口结构、年龄分布、性别比例、迁移趋势等多维度的综合分析。
背景上,全球人口正在经历前所未有的变化。
一些国家面临人口老龄化的严峻挑战,而另一些国家则正在经历人口爆炸式增长。
这些变化对经济发展、社会福利、环境保护等诸多方面产生深远影响。
因此,准确预测人口变化,为政策制定者提供科学依据,已成为现代社会不可或缺的任务。
在意义方面,人口预测对于国家和地区的发展至关重要。
通过人口预测,政府可以合理规划教育资源、医疗资源和社会保障资源,确保人民的基本生活需求得到满足。
人口预测对于经济发展也具有重要意义。
例如,预测劳动力市场的变化可以帮助企业调整人力资源策略,应对潜在的人才短缺或过剩问题。
人口预测还有助于环境保护和城市规划。
通过预测人口分布和迁移趋势,政府可以制定更加合理的环境保护政策和城市规划方案,实现可持续发展。
因此,基于MATLAB的人口预测研究具有重要的理论价值和现实意义。
MATLAB作为一种强大的数学计算软件,具有强大的数据处理能力和丰富的算法库,为人口预测提供了有力的工具。
通过MATLAB,研究人员可以更加准确、高效地分析人口数据,为政府决策和企业战略提供有力支持。
2、MATLAB在人口预测中的应用及优势MATLAB作为一种功能强大的科学计算与数据分析软件,其在人口预测研究中的应用越来越广泛。
MATLAB提供了丰富的数据处理和算法实现工具,使得人口预测模型的构建、参数估计、结果分析和可视化展示等过程变得高效且直观。
MATLAB在数据处理方面具有显著优势。
人口预测研究通常涉及大量的历史人口数据,这些数据往往需要进行清洗、整合和变换。
MATLAB 提供了强大的数据处理功能,包括数据导入、数据清洗、数据转换等,使得研究者能够迅速完成数据预处理工作,为后续的人口预测模型建立提供可靠的数据基础。
灰色预测模型matlab程序精确版(推荐完整)编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(灰色预测模型matlab程序精确版(推荐完整))的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为灰色预测模型matlab程序精确版(推荐完整)的全部内容。
灰色预测模型matlab程序精确版(推荐完整)编辑整理:张嬗雒老师尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布到文库,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是我们任然希望灰色预测模型matlab程序精确版(推荐完整) 这篇文档能够给您的工作和学习带来便利.同时我们也真诚的希望收到您的建议和反馈到下面的留言区,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请下载收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为〈灰色预测模型matlab程序精确版(推荐完整)〉这篇文档的全部内容。
灰色预测模型matlab程序灰色模型预测是在数据不呈现一定规律下可以采取的一种建模和预测方法,其预测数据与原始数据存在一定的规律相似性%下面程序是灰色模型GM(1,1)程序二次拟合和等维新陈代谢改进预测程序,matla b6.5 ,使用本程序请注明,程序存储为gm1。
m%x = [5999,5903,5848,5700,7884];gm1(x); 测试数据%二次拟合预测GM(1,1)模型function gmcal=gm1(x)sizexd2 = size(x,2);%求数组长度k=0;for y1=xk=k+1;if k〉1x1(k)=x1(k—1)+x(k);%累加生成z1(k-1)=-0。