楼主: zhpcy666
2697 3

求助,GM(1,1)预测 [推广有奖]

  • 0关注
  • 2粉丝

VIP

已卖:339份资源

博士生

27%

还不是VIP/贵宾

-

威望
0
论坛币
49778 个
通用积分
25.0450
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2001 点
帖子
99
精华
0
在线时间
390 小时
注册时间
2005-3-26
最后登录
2025-11-22

楼主
zhpcy666 发表于 2009-6-3 11:30:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

我在使用GM(1,1)在matlab中进行预测的时候,运行程序出现这样的错误

??? function GM1=fungry1(x0) %输入原始数据x0
    |
Error: Function definitions are not permitted at the prompt or in scripts.

不知道怎样调整.请帮帮忙!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:DEFINITIONS definition permitted function Scripts 预测

沙发
dxmboy88 发表于 2009-6-15 14:32:06
你得先给x0赋值,也就是你手上的原始数据,比如
x0=[7.777 7.9726 7.1108 6.6415 6.8747 6.9085 6.7809 6.705 6.6305 6.787 7.2766 6.923 6.6873 7.58 7.21]
网上的GM(1,1)的MATLAB程序很多的,不难找,祝你好运!

藤椅
benben88088 发表于 2009-6-17 22:18:08
给x0赋值,然后利用下面的主程序:
function GM1=GM(x0)%输入原始数据x0
T=input('T=');%从键盘输入从最后一个历史数据算起的第T时点
x1=zeros(1,length(x0));
B=zeros(length(x0)-1,2);
yn=zeros(length(x0)-1,1);
Hatx0=zeros(1,length(x0)+T);
Hatx00=zeros(1,length(x0));Hatx1=zeros(1,length(x0)+T);
epsilon=zeros(length(x0),1);
omega=zeros(length(x0),1);
for i=1:length(x0)
    for j=1:i
        x1(i)=x1(i)+x0(j);
    end
end
for i=1:length(x0)-1
    B(i,1)=(-1/2)*(x1(i)+x1(i+1));
    B(i,2)=1;
    yn(i)=x0(i+1);
end
HatA=(inv(B'*B))*B'*yn
for k=1:length(x0)+T
    Hatx1(k)=(x0(1)-HatA(2)/HatA(1))*exp(-HatA(1)*(k-1))+HatA(2)/HatA(1);
end
Hatx0(1)=Hatx1(1);
for k=2:length(x0)+T
    Hatx0(k)=Hatx1(k)-Hatx1(k-1)
end
for i=1:length(x0)
    epsilon(i)=x0(i)-Hatx0(i);
    omega(i)=(epsilon(i)/x0(i))*100
end
% x0;Hatx0;epsilon;omega;
c=std(epsilon)/std(x0) ;p=0;
for i=1:length(x0)
    if abs(epsilon(i)-mean(epsilon))<0.6745*std(x0)
        p=p+1;
    end
end
p=p/length(x0)
if p>0.95&c<0.35
    disp('The model is good ,and the forecast is:'),disp(Hatx0(length(x0)+T))
elseif p>0.85&c<0.5
    disp('The model is eligibility ,and the forecast is:'),disp(Hatx0(length(x0)+T))
elseif p>0.70&c<0.65
    disp('The model is not good ,and the forecast is:'),disp(Hatx0(length(x0)+T))
else p<=0.70&c>0.65
    disp('The model is bad and try again')
end
for i=1:length(x0)
    Hatx00(i)=Hatx0(i);
end
z=1:length(x0);
plot(z,x0,'-',z,Hatx00,':')
text(2,x0(2),'History data:real line')
text(length(x0)/2,Hatx00(length(x0))/2,'Simulation data :broken line')
end

板凳
matlab-007 发表于 2015-1-17 21:16:52
function函数里面不能赋值。修改代码如下:先把这个存为m文件,然后再命令窗口输入:然后调用函数,GM1_1(X0),就可以了

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-5 19:21