数学建模社区-数学中国
标题:
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 H
nian=1990:2003;
- A! X* W5 s8 E7 W# ?& W
plot(nian,x1,'o-');
4 m: h& J8 R& j/ N5 z
x0=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; z
end
! A. }! _: y7 B- {" T
z1
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! N
x=dsolve('Dx+a*x=b*x^2','x(0)=x0'); %求解常微分方程
. V! c$ H" q7 y
x=subs(x,{'a','b','x0'},{abhat(1),abhat(2),x1(1)}); %代入参数值
, c* K) t; k# G/ d2 \/ A+ L
yuce=subs(x,'t',0:14) %计算预测值
0 v& f. S8 c9 m C A3 U6 q
digits(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, q
x1_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% z
delta=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, I
s1_s0=abs(sum(tt(1:end-1))+0.5*tt(end));
. k, C+ u- Q4 y3 L: d6 i9 q
absdegree=(1+s0+s1)/(1+s0+s1+s1_s0) %计算灰色绝对关联度
, Y% J# b* S! F
c=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,clear
1 {" \) 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( g
n=length(x1);
& [, d; `# X, {2 J; _* p6 \+ q: w
nian=1990:2003;
: m l3 N; _: N
plot(nian,x1,'o-');
( b" B+ w9 i4 }% M2 a4 m
x0=diff(x1);
* s' e. N- M3 k0 r' w
x0=[x1(1),x0]
$ l( S& d8 E3 V" a% y& v
for i=2:n
1 B6 f( z% C$ p, t, k
z1(i)=0.5*(x1(i)+x1(i-1));
( ?8 {8 k3 \1 {4 H2 |8 w: k
end
/ ~" x* R6 F& a7 {( n2 R# o
z1
, k: D0 a! V6 T1 V3 L
B=[-z1(2:end)',z1(2:end)'.^2]
: O6 y2 z1 z% k- \: H
Y=x0(2:end)'
2 b! s9 W! D8 E
abhat=B\Y %估计参数a,b 的值
7 u: U$ U3 [$ b3 c6 R. M
x=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" U
yuce(16)=yuce(15);
( F+ ~* U$ K% r7 Y% u
x1_all=[x1,9.92,10.71];
0 z8 A2 W5 D. l! t& }& d+ A
epsilon=x1_all-yuce %计算残差
3 v* K) F/ N) O4 R9 j
delta=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! e
s1=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