数学建模社区-数学中国

标题: Verhulst 预测模型 [打印本页]

作者: xinzhiyong    时间: 2009-9-8 22:04
标题: Verhulst 预测模型
clc,clear! l' ]/ P0 j2 f1 C/ I* p
x1=[4.93 5.33 5.87 6.35 6.63 7.15 7.37 7.39 7.81 8.35' a; Z+ u: t% w+ x2 f% l& t
9.39 10.59 10.94 10.44];
- W5 b, B% ~$ z4 ~n=length(x1);
, g4 |) s  u9 Hnian=1990:2003;- A! X* W5 s8 E7 W# ?& W
plot(nian,x1,'o-');
4 m: h& J8 R& j/ N5 zx0=diff(x1);5 f& d5 u5 J1 G+ _1 t2 J; h& A2 E
x0=[x1(1),x0]# _7 o- j" B6 Q# h3 r( h
for i=2:n
5 m+ g6 a6 {( j# L3 ^z1(i)=0.5*(x1(i)+x1(i-1));
/ m9 M2 U& a6 c; [% h( J; zend
! A. }! _: y7 B- {" Tz1
4 I7 o2 R) W( B, h1 A% ]B=[-z1(2:end)',z1(2:end)'.^2]" }/ f( l9 P4 m' i' r( i
Y=x0(2:end)'+ j! |8 a- P& p
abhat=B\Y %估计参数a,b 的值
6 d: x6 W( X8 u1 x! Nx=dsolve('Dx+a*x=b*x^2','x(0)=x0'); %求解常微分方程
. V! c$ H" q7 yx=subs(x,{'a','b','x0'},{abhat(1),abhat(2),x1(1)}); %代入参数值
, c* K) t; k# G/ d2 \/ A+ Lyuce=subs(x,'t',0:14) %计算预测值
0 v& f. S8 c9 m  C  A3 U6 qdigits(6); x=vpa(x) %显示微分方程的解,为了提高计算精度,把该语句放在计算预测值
% r" f2 u% N0 E9 W+ _4 n之后,或者不使用该语句& z6 ^1 |: ~# h9 Y  }) }
yuce(16)=yuce(15);
9 h* i* A9 v6 j. J, qx1_all=[x1,9.92,10.71];* P8 q( Y& J# w; A! T. }& u
epsilon=x1_all-yuce %计算残差
+ o  o4 j: X, ]7 w: i& y% zdelta=abs(epsilon./x1_all) %计算相对误差- M1 x3 _! X3 O$ g6 k3 G. u  m* S
delta_mean=mean(delta) %计算平均相对误差) f: U5 E9 `! o* |. p
x1_all_0=x1_all-x1_all(1); %数据列的始点零化像, G) x( Y* j4 M& W5 N5 A' T2 a
yuce_0=yuce-yuce(1); %数据列的始点零化像  c$ ?( Z" r& T, J' m/ @1 L8 Y/ K
s0=abs(sum(x1_all_0(1:end-1))+0.5*x1_all_0(end));
4 u7 S4 a; |0 \# p6 ^s1=abs(sum(yuce_0(1:end-1))+0.5*yuce_0(end));
" ]/ M$ q5 ^' X3 X! D# m3 C+ `tt=yuce_0-x1_all_0;
! w8 C' k  I) z; q9 a, Is1_s0=abs(sum(tt(1:end-1))+0.5*tt(end));
. k, C+ u- Q4 y3 L: d6 i9 qabsdegree=(1+s0+s1)/(1+s0+s1+s1_s0) %计算灰色绝对关联度
, Y% J# b* S! Fc=std(epsilon,1)/std(x1_all,1) %计算标准差比值 8 r( [1 X+ V3 g  L+ k. U
请高手帮忙一下,里面哪里错误了,看了一个晚上,老是不对!!!! ' a5 o' O6 M$ {% |
这是Verhulst 预测模型    GM(1,1)改进过来的
作者: ihear    时间: 2009-9-8 22:06

作者: wangxinzhi    时间: 2009-9-8 23:06
不会…………
作者: 杨帆    时间: 2009-9-8 23:09
clc,clear1 {" \) O6 ?) P) y" g2 P' m
x1=[4.93 5.33 5.87 6.35 6.63 7.15 7.37 7.39 7.81 8.35 9.39 10.59 10.94 10.44];
- a( ]$ t+ M  I( gn=length(x1);& [, d; `# X, {2 J; _* p6 \+ q: w
nian=1990:2003;
: m  l3 N; _: Nplot(nian,x1,'o-');
( b" B+ w9 i4 }% M2 a4 mx0=diff(x1);
* s' e. N- M3 k0 r' wx0=[x1(1),x0]
$ l( S& d8 E3 V" a% y& vfor i=2:n
1 B6 f( z% C$ p, t, kz1(i)=0.5*(x1(i)+x1(i-1));
( ?8 {8 k3 \1 {4 H2 |8 w: kend
/ ~" x* R6 F& a7 {( n2 R# oz1
, k: D0 a! V6 T1 V3 LB=[-z1(2:end)',z1(2:end)'.^2]
: O6 y2 z1 z% k- \: HY=x0(2:end)'
2 b! s9 W! D8 Eabhat=B\Y %估计参数a,b 的值
7 u: U$ U3 [$ b3 c6 R. Mx=dsolve('Dx+a*x=b*x^2','x(0)=x0'); %求解常微分方程3 y- u" [3 a. v+ B0 Y6 A
x=subs(x,{'a','b','x0'},{abhat(1),abhat(2),x1(1)}); %代入参数值3 n7 M) @- F: |, I' Z- g! ]
yuce=subs(x,'t',0:14) %计算预测值* d/ ^/ ]+ b5 R2 j9 A& g" `
digits(6); x=vpa(x) %显示微分方程的解,为了提高计算精度,把该语句放在计算预测值之后,或者不使用该语句
1 V9 M  k% j) P5 z5 Z7 I" Uyuce(16)=yuce(15);
( F+ ~* U$ K% r7 Y% ux1_all=[x1,9.92,10.71];
0 z8 A2 W5 D. l! t& }& d+ Aepsilon=x1_all-yuce %计算残差
3 v* K) F/ N) O4 R9 jdelta=abs(epsilon./x1_all) %计算相对误差
; E# x4 m! o- ^! M9 T& f9 `delta_mean=mean(delta) %计算平均相对误差# M: B; y2 p; V
x1_all_0=x1_all-x1_all(1); %数据列的始点零化像
+ H* M7 s( }) `" F: c* }yuce_0=yuce-yuce(1); %数据列的始点零化像9 _, h* F$ I! w; `
s0=abs(sum(x1_all_0(1:end-1))+0.5*x1_all_0(end));
( k/ d0 F4 ?4 c) }% [* R3 ^( a7 k! es1=abs(sum(yuce_0(1:end-1))+0.5*yuce_0(end));2 V! q, i9 u! N
tt=yuce_0-x1_all_0;
/ h, f7 g% p5 F% q0 q; ?s1_s0=abs(sum(tt(1:end-1))+0.5*tt(end));! p& X2 b- m, `, J! B2 K/ T" Y
absdegree=(1+s0+s1)/(1+s0+s1+s1_s0) %计算灰色绝对关联度
3 l& R* u) x9 c' i; g) J6 \c=std(epsilon,1)/std(x1_all,1) %计算标准差比值
' [& U3 {  w6 n7 E, v, i& Q# Z. q9 |7 K2 p% }
你数据输入有问题
作者: xinzhiyong    时间: 2009-9-9 22:37
xiexie,juejie
作者: d815856116    时间: 2009-9-10 10:10
我也不会  看不懂、、、、、、、
作者: liuxn_2005    时间: 2010-4-13 10:01
matlab 程序。。。。。。。。。。。。。。。。。。。。。。
作者: gssdzc    时间: 2010-6-17 22:04
是灰色理论的。谢谢
作者: liu123456cn    时间: 2010-8-1 10:42
高手帮忙啊!~~~~~~~~~求助
: T6 @/ l% `* S' a8 g2 I) J




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