灰色预测模型的matlab运行代码(讲解)

上传人:枫** 文档编号:430093654 上传时间:2023-08-29 格式:DOC 页数:7 大小:110.50KB
返回 下载 相关 举报
灰色预测模型的matlab运行代码(讲解)_第1页
第1页 / 共7页
灰色预测模型的matlab运行代码(讲解)_第2页
第2页 / 共7页
灰色预测模型的matlab运行代码(讲解)_第3页
第3页 / 共7页
灰色预测模型的matlab运行代码(讲解)_第4页
第4页 / 共7页
灰色预测模型的matlab运行代码(讲解)_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《灰色预测模型的matlab运行代码(讲解)》由会员分享,可在线阅读,更多相关《灰色预测模型的matlab运行代码(讲解)(7页珍藏版)》请在金锄头文库上搜索。

1、 灰色预测模型GM(1,1)的matlab运行代码例 由19902001年中国蔬菜产量,建立模型预测2002年中国蔬菜产量,并对预测结果作检验。分析建模:给定原始时间19902001年资料序列X(k),对X(k)生成1-AGO(累加)序列X(k)及Y。见下表 K 1 2 3 4 5 6 7 8 9 10 11 12X19519 ,19578 ,19637,19695,16602, 25723, 30379, 34473, 38485, 40514, 42400, 48337X19519, 39097, 58734, 264605,307005,355342Y - 19578 19637 405

2、14 42400 48337其中X(k)=; Y=对上述X(k)的GM(1,1),得到将 B和Y代入辨识算式,有:得灰色GM(1,1)模型为(1)灰微分方程X(k)-0.1062105 Z(k)=13999.9(2)白化方程(3)白化方程的时间响应式(4)还原为原始数据预测方程:,即(5)残差检验:残差error1=e1=,这里残差有12个。 相对残差error2=e2=,这里相对残差有12个。(6) 后验差检验:C=, 其中, S1为绝对误差序列的标准差。, S2为原始数据系列标准差, , C0.35 好;C0.6 不合格。利用matlab做求解a,b,B,并作残差分析 x0=19519,1

3、9578,19637,19695,16602,25723,30379,34473,38485,40514,42400,48337; format long; (表示设计精度) n=length(x0); (输入数据长度) x1= ; (表示x1是一矩阵) x1(1)=x0(1); for i=2:n;x1(i)=x1(i-1)+x0(i);end for i=1:n-1;B(i,1)=-0.5*(x1(i)+x1(i+1); (矩阵B的第一列)B(i,2)=1; (矩阵B的第二列)Y(i)=x0(i+1); (表示Yn数据)end alpha=(B*B)(-1)*B*Y; a=alpha(1,

4、1); b=alpha(2,1); d=b/a; (计算时间响应函数参数) c=x1(1)-d; x2(1)=x0(1); x(1)=x0(1); for i=1:n-1;x2(i+1)=c*exp(-a*i)+d; (这里x2(i+1)相当上面所讲的)x(i+1)=x2(i+1)-x2(i); (这里x(i+1) 相当原来输入数据的预测数据)end for i=2: 12;x2(i)=c*exp(-a*(i-1)+d; (对上面刚引出的x2(i)进行说明及计算)x(i)=x2(i)-x2(i-1);end for i=1:n;error(i)=x(i)-x0(i); (残差)error1(i

5、)=abs(error(i);(计算残差,abs表示绝对值)error2(i)=error1(i)/x0(i); (计算相对误差)end C=std(error1)/std(x0); (计算后验差检验数,std表示标准差) k=1; (k表示预测长度,这里每次预测下一年)a = -0.106210475032772 bb = 1.399996741173038e+04BB = 1.0e+05 * -0.293080000000000 0.000010000000000 -0.489155000000000 0.000010000000000 -0.685815000000000 0.00001

6、0000000000 -0.867300000000000 0.000010000000000 -1.078925000000000 0.000010000000000 -1.359435000000000 0.000010000000000 -1.683695000000000 0.000010000000000 -2.048485000000000 0.000010000000000 -2.443480000000000 0.000010000000000 -2.858050000000000 0.000010000000000 -3.311735000000000 0.000010000

7、000000 C (求后检验数)C = 0.163969348419772 x (原始数据的对应的预测数据,这里也是12个)x = 1.0e+04 * Columns 1 through 3 1.951900000000000 1.695769385830782 1.885790370699694 Columns 4 through 6 2.097104330304606 2.332097268346191 2.593422554345592 Columns 7 through 9 2.884030883565190 3.207203594115656 3.566589717441855 Co

8、lumns 10 through 12 3.966247180534730 4.410688625094428 4.904932361001964 eroor1 (求残差)eroor1 = 1.0e+03 * Columns 1 through 4 0 2.620306141692185 0.779096293003065 1.276043303046055 Columns 5 through 8 6.718972683461907 0.211225543455919 1.538691164348100 2.400964058843441 Columns 9 through 12 2.8191

9、02825581445 0.851528194652696 1.706886250944284 0.712323610019637 error2 (求相对误差)error2 = Columns 1 through 4 0 0.133839316666267 0.039674914345525 0.064790215945471 Columns 5 through 8 0.404708630494031 0.008211543888968 0.050649829301429 0.069647667996503 Columns 9 through 12 0.073251989751369 0.02

10、1018121998635 0.040256751201516 0.014736611912606a = -0.106210475032772b = 1.399996741173038e+04 BB = 1.0e+05 * -0.293080000000000 0.000010000000000 -0.489155000000000 0.000010000000000 -0.685815000000000 0.000010000000000 -0.867300000000000 0.000010000000000 -1.078925000000000 0.000010000000000 -1.

11、359435000000000 0.000010000000000 -1.683695000000000 0.000010000000000 -2.048485000000000 0.000010000000000 -2.443480000000000 0.000010000000000 -2.858050000000000 0.000010000000000 -3.311735000000000 0.000010000000000方法二 程序(1)一次累加生成序列的matlab命令 x0=19519,19578,19637,19695,16602,25723,30379,34473,3848

12、5,40514,42400,48337; x1(1)=x0(1); x1(1)x1(1) = 19519 for t=2:12;x1(t)=x1(t-1)+x0(t);endx1回车x1 = Columns 1 through 8 19519 39097 58734 78429 95031 120754 151133 185606 Columns 9 through 12 224091 264605 307005 355342(2)由一次累加生成序列紧邻均值生成Z的matlab命令:x0=19519,19578,19637,19695,16602,25723,30379,34473,38485

13、,40514,42400,48337; x1(1)=x0(1); for t=2:12;x1(t)=x1(t-1)+x0(t);z1 (t)=(1/2)*(x1(t)+x1(t-1);endz1 = 1.0e+05 * Columns 1 through 7 0 0.2931 0.4892 0.6858 0.8673 1.0789 1.3594 Columns 8 through 121.6837 2.0485 2.4435 2.8581 3.3117(3) 由于GM(1,1)的灰微分方程为X(t)-+aZ(k)=b设为待估参数,,利用最小二乘法得到, matlab程序为B=-z1(2:12),ones(11,1); Y=(x0(2:12); alpha=inv(B*B)*B*Y; alphaalpha = 1.0e+04 * -0.0000 1.4000

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号