登录论坛

查看完整版本 : [求助]请帮助完成答案


lishaomin
2008-08-08, 10:20
您好!
在学习中遇到找不到答案,请帮助!
>> function c7fun7_2
%clear;clc;
X10=[2.874 3.278 3.307 3.39 3.3679]; X20=[7.04 7.645 8.075 8.53 8.774];
Xn0=X20;
%——调用函数求取GM(1,N)的参数
KK=c7fun72(X10,Xn0)
a=KK(1);b=KK(2);
%——对数列X20进行1次累加生成得到x21
m2=length(X20); s3=0;
for jj=1:1:m2
X21(jj)=s3+X20(jj); s3=X21(jj);
end
%利用GM(1,N)进行预测,利用X21预测X11——标记为xx11
for k=1:1:m2-1
xx11(k+1)=(X10(1)-b/a*X20(k+1))*exp(-a*k)+b/a*X21(k+1);
end
%——对xx11进行逆累加生成
s4=0;
xx10(1)=X10(1);
for jj=2:1:m2
xx10(jj)=xx11(jj)-xx11(jj-1);
end
disp('GM(1,N)对数列1进行预测结果')
xx10
disp('数列1原始观测数据');X10
%——求算GM(1,N)参数函数
function a=c7fun72(X10,Xn0)
[n,m]=size(Xn0);
%——1次累加生成
s1=0;s2([1:n],1)=0;
for jj=1:1:m
X11(jj)=s1+X10(jj); Xn1(:,jj)=s2+Xn0(:,jj);s1=X11(jj); s2=Xn1(:,jj);
end
%——建立矩阵B、yn
for ii=1:1:m-1
B(ii)=-(X11(ii)+X11(ii+1))/2;
end
XN1=Xn1'; B=[B(:),XN1(2:m,1:n];
yn=X10([2:m])'; a=inv((B'*B))*B'*yn;

zhanhuichong
2008-08-10, 11:47
请给出问题所在
方便我们直接 帮你调试

lishaomin
2008-08-10, 16:53
请给出问题所在
方便我们直接 帮你调试
你好!
我的问题是在命令中不能显示答案

lishaomin
2008-08-10, 16:54
你好!
我的问题是在命令中不能显示答案
请帮助怎样的命令才能显示

lishaomin
2008-08-11, 15:46
如果能将运行的步骤和结果告诉我,请发送[email protected]邮箱.谢谢!

lishaomin
2008-08-19, 16:28
请给出问题所在
方便我们直接 帮你调试

愿意帮助,可以,请与[email protected]邮箱和我联系,谢谢!

pslpsl
2008-08-20, 00:46
这是运行结果

>> c7fun7_2
KK =

2.5837
1.0250

GM(1,N)对数列1进行预测结果

xx10 =

2.8740 5.8137 3.2135 3.3856 3.4809

数列1原始观测数据

X10 =

2.8740 3.2780 3.3070 3.3900 3.3679

pslpsl
2008-08-20, 00:50
原来的程序有两处错误:

disp('GM(1,N)对数列1进行预测结果'); (1)
XN1=Xn1'; B=[B(:),XN1(2:m,1:n)]; (2)

(1)处的右括号是中文模式下输入的,有误
(2)处少了个右括号

都是些小错误

lishaomin
2008-08-22, 09:55
原来的程序有两处错误:

disp('GM(1,N)对数列1进行预测结果'); (1)
XN1=Xn1'; B=[B(:),XN1(2:m,1:n)]; (2)

(1)处的右括号是中文模式下输入的,有误
(2)处少了个右括号

都是些小错误

请问:在命令窗口下输入c7fun_2为何不出结果?

lishaomin
2008-08-22, 10:00
这是运行结果

>> c7fun7_2
KK =

2.5837
1.0250

GM(1,N)对数列1进行预测结果

xx10 =

2.8740 5.8137 3.2135 3.3856 3.4809

数列...

请问如何操作运行结果?我因是初学者想请教?

pslpsl
2008-08-22, 11:25
把以下代码存为 c7fun7_2.m
存到工作目录 一般是work目录


function c7fun7_2
%clear;clc;
X10=[2.874 3.278 3.307 3.39 3.3679]; X20=[7.04 7.645 8.075 8.53 8.774];
Xn0=X20;
%——调用函数求取GM(1,N)的参数
KK=c7fun72(X10,Xn0)
a=KK(1);b=KK(2);
%——对数列X20进行1次累加生成得到x21
m2=length(X20); s3=0;
for jj=1:1:m2
X21(jj)=s3+X20(jj); s3=X21(jj);
end
%利用GM(1,N)进行预测,利用X21预测X11——标记为xx11
for k=1:1:m2-1
xx11(k+1)=(X10(1)-b/a*X20(k+1))*exp(-a*k)+b/a*X21(k+1);
end
%——对xx11进行逆累加生成
s4=0;
xx10(1)=X10(1);
for jj=2:1:m2
xx10(jj)=xx11(jj)-xx11(jj-1);
end
disp('GM(1,N)对数列1进行预测结果');
xx10
disp('数列1原始观测数据');X10
%——求算GM(1,N)参数函数
function a=c7fun72(X10,Xn0)
[n,m]=size(Xn0);
%——1次累加生成
s1=0;s2([1:n],1)=0;
for jj=1:1:m
X11(jj)=s1+X10(jj); Xn1(:,jj)=s2+Xn0(:,jj);s1=X11(jj); s2=Xn1(:,jj);
end
%——建立矩阵B、yn
for ii=1:1:m-1
B(ii)=-(X11(ii)+X11(ii+1))/2;
end
XN1=Xn1'; B=[B(:),XN1(2:m,1:n)];
yn=X10([2:m])'; a=inv((B'*B))*B'*yn;
%EDIT BY PSL@CSU
%QQ:547423688
%Email:[email protected]


在commend window输入

>>c7fun7_2

回车


结果就出来了

或者在Editor中打开c7fun7_2.m

选择

Debug--> Run


回到命令窗口就发现结果已经出来了

已发到你邮箱

pslpsl
2008-08-22, 11:29
请问:在命令窗口下输入c7fun_2为何不出结果?


c7fun7_2.m
必需放在工作目录
一般是work目录
如果你没改过的话

未注册
2008-08-22, 12:45
原来的程序有两处错误:

disp('GM(1,N)对数列1进行预测结果'); (1)
XN1=Xn1'; B=[B(:),XN1(2:m,1:n)]; (2)

(1)处的右括号是中文模式下输入的,有误
(2)处少了个右括号

都是些小错误

function c7fun74
t=[2002 2003 2004 2005 2006 2007];
X10=[269751 2710156 270202 270202 272770 2777314 282783]/100
X20=[17675 250172 265415 239894 255345 260253]/100;
X30=[566.9 756 761.3 681 590 1236];
X40=[812 1106 1108 1008 1177 1251];
global AA UU;
U(4)=0;A(4,4)=0;
kk1=c7fun73(X10);A(1,1)=-kk1(1);U(1)=kk1(1);
kk2=c7fun72(X20,[X10;X30]);A(2,1)=kk2(2);A(2,2)=-kk2(1);A(2,3)=kk2(3);
kk3=c7fun72(X20,X30);A(3,3)=-kk3(1);A(3,2)=kk3(2);
kk4=c7fun73(X40);A(4,4)=kk4(1);U(4)=kk4(2);
disp('估计出的系统预测模型系数-微分方程组系数')
AA=A
UU=U(:)
%调用微分方程组的求解命令解微分方程组
t0=2002;tf=2016;
y0=[269.751;176.75;566.9;812];
[tt,xx]=ode15s(@c7fun74,[t0,tf],y0);
plot(tt,xx(:,1),'b-^',tt,xx(:,2),'b-o',tt,xx(:,3),'b-*',tt,xx(:,4),'b-p');
legend('人口-预测/100','粮食消费-预测/100','畜牧业产值-预测','粮食亩产-预测');
xlabel('年份');ylabel('预测值');hold on;
function dxt =c7fun74(t,x)
global AA UU;
dxt=AA*[x(1);x(2);x(3);x(4)]+UU;
请帮助解决以下问题

??? Error: File: c7fun74.m Line: 19 Column: 35
Unbalanced or unexpected parenthesis or bracket.

pslpsl
2008-08-25, 12:44
function c7fun7_4
t=[2002 2003 2004 2005 2006 2007];
%X10=[269751 2710156 270202 270202 272770 2777314 282783]/100
%此处多一个数据,需要把多的删去
X10=[269751 2710156 270202 272770 2777314 282783]/100;
X20=[17675 250172 265415 239894 255345 260253]/100;
X30=[566.9 756 761.3 681 590 1236];
X40=[812 1106 1108 1008 1177 1251];
global AA UU;
U(4)=0;A(4,4)=0;
kk1=c7fun73(X10);A(1,1)=-kk1(1);U(1)=kk1(2);
kk2=c7fun72(X20,[X10;X30]);
A(2,1)=kk2(2);
A(2,2)=-kk2(1);
A(2,3)=kk2(3);
kk3=c7fun72(X20,X30);A(3,3)=-kk3(1);A(3,2)=kk3(2);
kk4=c7fun73(X40);A(4,4)=kk4(1);U(4)=kk4(2);
disp('估计出的系统预测模型系数-微分方程组系数')
AA=A
UU=U(:)
%EDIT BY PSL@CSU
%QQ:547423688
%Email:[email protected]
%——求算GM(1,N)参数函数
function a=c7fun72(X10,Xn0)
[n,m]=size(Xn0);
%——1次累加生成
s1=0;s2([1:n],1)=0;
for jj=1:1:m
X11(jj)=s1+X10(jj); Xn1(:,jj)=s2+Xn0(:,jj); s1=X11(jj); s2=Xn1(:,jj);
end
%——建立矩阵B、yn
for ii=1:1:m-1
B(ii)=-(X11(ii)+X11(ii+1))/2;
end
XN1=Xn1';B=[B(:),XN1(2:m,1:n)];
yn=X10([2:m])'; a=inv((B'*B))*B'*yn;
%——求算GM(1,1)参数函数
function au=c7fun73(X0)
m=length(X0);
%——1次累加生成
s1=0;
for jj=1:1:m; X1(jj)=s1+X0(jj); s1=X1(jj); end
%——建立矩阵B、y
for ii=1:1:m-1; B(ii)=-(X1(ii)+X1(ii+1))/2; end
B=[B(:),ones(m-1,1)];
y=X0([2:m])';au=inv((B'*B))*B'*y;

hapenl
2008-09-20, 09:02
:lol: 谢谢了