数学建模社区-数学中国
标题:
Verhulst 预测模型
[打印本页]
作者:
xinzhiyong
时间:
2009-9-8 22:04
标题:
Verhulst 预测模型
clc,clear
- G7 m; ^6 j/ @7 s2 T8 B
x1=[4.93 5.33 5.87 6.35 6.63 7.15 7.37 7.39 7.81 8.35
4 |( t$ o. Z: E! B) Z
9.39 10.59 10.94 10.44];
. m4 w0 b! O$ h; R0 x4 K1 A
n=length(x1);
U) h- l7 C8 c$ P
nian=1990:2003;
2 t6 R, a1 d$ u. ~1 |7 Y/ e. _ i
plot(nian,x1,'o-');
3 i. H* x& K! r9 N6 _# M
x0=diff(x1);
2 I7 d' o6 ]+ [
x0=[x1(1),x0]
6 D* @# q6 P w$ }5 @1 W! r6 G
for i=2:n
# O; o: Y) p. p* q5 C
z1(i)=0.5*(x1(i)+x1(i-1));
3 [: I$ I3 }" \, T* g
end
$ R ^1 y8 H& o: T
z1
% E2 C' ?* w; R& \ E. k S! R& k$ @
B=[-z1(2:end)',z1(2:end)'.^2]
/ O; V: r2 a9 a" l/ R
Y=x0(2:end)'
+ v, ]3 j2 w9 r0 ~1 G+ Y. B
abhat=B\Y %估计参数a,b 的值
1 Y1 @' _% }4 `5 o' G/ k' U% Y
x=dsolve('Dx+a*x=b*x^2','x(0)=x0'); %求解常微分方程
# p* C0 ^7 P4 |+ b4 C
x=subs(x,{'a','b','x0'},{abhat(1),abhat(2),x1(1)}); %代入参数值
$ m$ G/ Z/ r: X0 J3 G
yuce=subs(x,'t',0:14) %计算预测值
: R6 u t& Y5 B' p$ L* x2 s% }6 @
digits(6); x=vpa(x) %显示微分方程的解,为了提高计算精度,把该语句放在计算预测值
g! m* G% R' L2 o$ x* D
之后,或者不使用该语句
+ @# h/ D% x: Y# D; j
yuce(16)=yuce(15);
0 F: F4 R0 g' u$ G) ?
x1_all=[x1,9.92,10.71];
( w& G% H$ s% ], ~+ E8 I
epsilon=x1_all-yuce %计算残差
8 y2 r, M0 W& \3 @; ]9 j
delta=abs(epsilon./x1_all) %计算相对误差
) K- a! |: T5 _9 x# s
delta_mean=mean(delta) %计算平均相对误差
: @6 P ^5 h. ]9 Y& Z8 A
x1_all_0=x1_all-x1_all(1); %数据列的始点零化像
& u& a0 R2 i4 ?* k, e( N
yuce_0=yuce-yuce(1); %数据列的始点零化像
% x3 a0 V) B4 e( n0 W2 R$ b* n+ I
s0=abs(sum(x1_all_0(1:end-1))+0.5*x1_all_0(end));
+ K& J* z8 S2 B8 L5 Z% h7 x
s1=abs(sum(yuce_0(1:end-1))+0.5*yuce_0(end));
; _. C( a! S4 k h1 V, h1 X
tt=yuce_0-x1_all_0;
& l- I" Y' D" D5 A' H6 ^5 {
s1_s0=abs(sum(tt(1:end-1))+0.5*tt(end));
& f! _& |4 e$ _# m$ Y5 Z% H
absdegree=(1+s0+s1)/(1+s0+s1+s1_s0) %计算灰色绝对关联度
! ]7 a4 U6 g5 f
c=std(epsilon,1)/std(x1_all,1) %计算标准差比值
8 s; X" g5 l1 y% s% e+ ?
请高手帮忙一下,里面哪里错误了,看了一个晚上,老是不对!!!!
2 v. C. j! N* W7 y+ v9 U
这是Verhulst 预测模型 GM(1,1)改进过来的
作者:
ihear
时间:
2009-9-8 22:06
作者:
wangxinzhi
时间:
2009-9-8 23:06
不会…………
作者:
杨帆
时间:
2009-9-8 23:09
clc,clear
2 F# n9 q, |+ d' q- W) E
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];
& c% C+ y% O( {) N3 a+ \
n=length(x1);
0 c9 ~4 [1 |: Q8 x, m
nian=1990:2003;
2 k7 d9 ?& \; S0 E
plot(nian,x1,'o-');
( U5 o$ Y2 e* r% J. l
x0=diff(x1);
+ P0 Q b ^" ^/ @
x0=[x1(1),x0]
7 u+ {" \5 ?0 v& U) [
for i=2:n
+ H% e/ J7 d. S7 h6 u+ c+ Q
z1(i)=0.5*(x1(i)+x1(i-1));
/ O8 |, @- u; ] i5 u1 J5 y
end
9 j" b. @. `, [+ Q
z1
b1 x* ]: w% z- J" T; v4 [8 \
B=[-z1(2:end)',z1(2:end)'.^2]
& [1 J2 p: _2 {: l; O& p
Y=x0(2:end)'
' t! U9 m" p% P9 e: M
abhat=B\Y %估计参数a,b 的值
9 H& S( {: u" P+ Y7 r% T& L
x=dsolve('Dx+a*x=b*x^2','x(0)=x0'); %求解常微分方程
6 o |4 O- b9 a; u7 v
x=subs(x,{'a','b','x0'},{abhat(1),abhat(2),x1(1)}); %代入参数值
6 [8 E2 }% X, ?. o f4 g
yuce=subs(x,'t',0:14) %计算预测值
& x4 v, j& W8 ~4 P) c8 `
digits(6); x=vpa(x) %显示微分方程的解,为了提高计算精度,把该语句放在计算预测值之后,或者不使用该语句
1 v2 g* H( \* n8 B4 j1 Q
yuce(16)=yuce(15);
. @# t" F: s6 J: X; l
x1_all=[x1,9.92,10.71];
1 a2 q2 W' T9 T3 _* D6 Q
epsilon=x1_all-yuce %计算残差
( j A* j* p \9 _& l& H
delta=abs(epsilon./x1_all) %计算相对误差
3 V" c0 H$ K: _; T9 B! x! J
delta_mean=mean(delta) %计算平均相对误差
/ g' h$ c0 d3 V- r4 G% S
x1_all_0=x1_all-x1_all(1); %数据列的始点零化像
, [$ V: H) w0 ^
yuce_0=yuce-yuce(1); %数据列的始点零化像
, {! U; L/ N9 ^
s0=abs(sum(x1_all_0(1:end-1))+0.5*x1_all_0(end));
' L5 n. C, }7 o' a6 n
s1=abs(sum(yuce_0(1:end-1))+0.5*yuce_0(end));
+ y" e& j7 N( h" |
tt=yuce_0-x1_all_0;
2 f7 t( Y5 C! U
s1_s0=abs(sum(tt(1:end-1))+0.5*tt(end));
! T: a( C% {5 f: U5 Z
absdegree=(1+s0+s1)/(1+s0+s1+s1_s0) %计算灰色绝对关联度
) W- Y5 D5 f% v! B
c=std(epsilon,1)/std(x1_all,1) %计算标准差比值
7 w) ]3 T% d* `( _8 n
2 Y4 p" D* ^( U: z
你数据输入有问题
作者:
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
高手帮忙啊!~~~~~~~~~求助
6 }& Q6 ~* C. h4 H+ ?
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5