数学建模社区-数学中国

标题: 同样的程序不同的答案 [打印本页]

作者: 月亮树    时间: 2012-8-18 11:45
标题: 同样的程序不同的答案
这里有两个灰色预测的程序,数据和程序过程完全一样,可是算出来的结果却相差很远,求高手解释!!为什么?
%下降的
clear,clc
A=[67.99 97.88 144.07 220.61 258.59 304.77 429.83 578.56 682.85 587.83 733.54 947.12 1054.08 1608 2207 2975 404 5489 7391 9931 12526 15365 19497];
syms a b;
c=[a b]';
B=cumsum(A);        %原始数据累加
n=length(A);
for i=1:(n-1)
    C(i)=(B(i)+B(i+1))/2;     %生成累加矩阵
end
%计算待定参数的值
D=A;%收入
D(1)=[];    %将D中第一个数据取空,为构造列向量
D=D';
E=[-C;ones(1,n-1)];      %构造数据矩阵
c=inv(E*E')*E*D;         %用最小二乘法求a b的合成列向量  
c=c';
a=c(1)
b=c(2)
%预测后续数据
F=[];F(1)=A(1);
for i=2:(n+40)
    F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a;
end
G=[];G(1)=A(1);
for i=2:(n+40)
    G(i)=F(i)-F(i-1);       %得到预测出来的数据
end
t1=1989:2011;
t2=1989:2051;
G
plot(t1,A,'o',t2,G)         %原始数据与预测数据的比较





%上升的,这个才是正确的
clear,clc
A=[67.99 97.88 144.07 220.61 258.59 304.77 429.83 578.56 682.85 587.83 733.54 947.12 1054.08 1608 2207 2975 4041 5489 7391 9931 12526 15365 19497];
syms a b;
c=[a b]';
B=cumsum(A);        %原始数据累加
n=length(A);
for i=1:(n-1)
    C(i)=(B(i)+B(i+1))/2;     %生成累加矩阵
end
%计算待定参数的值
D=A;
D(1)=[];    %将D中第一个数据取空,为构造列向量
D=D';
E=[-C;ones(1,n-1)];      %构造数据矩阵
c=inv(E*E')*E*D;         %用最小二乘法求a b的合成列向量  
c=c';
a=c(1)
b=c(2)
%预测后续数据
F=[];F(1)=A(1);
for i=2:(n+40)
    F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a;
end
G=[];G(1)=A(1);
for i=2:(n+40)
    G(i)=F(i)-F(i-1);       %得到预测出来的数据
end
t1=1989:2011;
t2=1989:2051;
G
plot(t1,A,'o',t2,G)         %原始数据与预测数据的比较

同样的程序不同的答案.doc

14.5 KB, 下载次数: 0, 下载积分: 体力 -2 点


作者: 月亮树    时间: 2012-8-18 11:49
为什么设置不到免费下载的?而且程序也不能让可以解答的人直接拷去,这点数学中国要改进下啊!虽然流量会大增,可是这样我们要问的问题很不方便啊!
作者: madio    时间: 2012-8-18 12:12
月亮树 发表于 2012-8-18 11:49
为什么设置不到免费下载的?而且程序也不能让可以解答的人直接拷去,这点数学中国要改进下啊!虽然流量会大 ...

主要是因为没有体力的激励机制,人们的积极性会受到影响,你要是问问题可以设置体力奖励,这样回答问题的人可以从你那里获得体力,不至于亏到

作者: darker50    时间: 2012-8-19 12:59
   问问题的时候最好设置悬赏,这样回答的人也比较有积极性了。
作者: 月亮树    时间: 2012-8-20 16:31
madio 发表于 2012-8-18 12:12
主要是因为没有体力的激励机制,人们的积极性会受到影响,你要是问问题可以设置体力奖励,这样回答问题的人可 ...

好的!谢谢!我本来是有设-2的,没想到还要用多2个体力来买!我看看怎么设,谢谢!
作者: 月亮树    时间: 2012-8-20 16:33
darker50 发表于 2012-8-19 12:59
问问题的时候最好设置悬赏,这样回答的人也比较有积极性了。

在学怎么设奖励!奖励体力积分这些当然没问题!嘻嘻!




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5