月亮树 发表于 2012-8-18 11:45

同样的程序不同的答案

这里有两个灰色预测的程序,数据和程序过程完全一样,可是算出来的结果却相差很远,求高手解释!!为什么?
%下降的
clear,clc
A=;
syms a b;
c=';
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=;
syms a b;
c=';
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)         %原始数据与预测数据的比较

月亮树 发表于 2012-8-18 11:49

为什么设置不到免费下载的?而且程序也不能让可以解答的人直接拷去,这点数学中国要改进下啊!虽然流量会大增,可是这样我们要问的问题很不方便啊!

madio 发表于 2012-8-18 12:12

月亮树 发表于 2012-8-18 11:49 static/image/common/back.gif
为什么设置不到免费下载的?而且程序也不能让可以解答的人直接拷去,这点数学中国要改进下啊!虽然流量会大 ...

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

darker50 发表于 2012-8-19 12:59

   问问题的时候最好设置悬赏,这样回答的人也比较有积极性了。

月亮树 发表于 2012-8-20 16:31

madio 发表于 2012-8-18 12:12 static/image/common/back.gif
主要是因为没有体力的激励机制,人们的积极性会受到影响,你要是问问题可以设置体力奖励,这样回答问题的人可 ...

好的!谢谢!我本来是有设-2的,没想到还要用多2个体力来买!我看看怎么设,谢谢!:lol

月亮树 发表于 2012-8-20 16:33

darker50 发表于 2012-8-19 12:59 static/image/common/back.gif
问问题的时候最好设置悬赏,这样回答的人也比较有积极性了。

在学怎么设奖励!奖励体力积分这些当然没问题!嘻嘻!
页: [1]
查看完整版本: 同样的程序不同的答案