数学建模社区-数学中国
标题:
Verhulst 预测模型
[打印本页]
作者:
xinzhiyong
时间:
2009-9-8 22:04
标题:
Verhulst 预测模型
clc,clear
5 x+ O& A3 W: x, ?2 T
x1=[4.93 5.33 5.87 6.35 6.63 7.15 7.37 7.39 7.81 8.35
! Y) j1 c M+ H2 M7 N% H
9.39 10.59 10.94 10.44];
0 |( Q7 T8 W* B3 T$ n
n=length(x1);
: f4 f( c0 @& `/ z1 v$ v
nian=1990:2003;
: Z. F7 y( q+ T- F7 L
plot(nian,x1,'o-');
. n# u! s$ T; o- |8 U
x0=diff(x1);
5 ?/ V+ c a! X3 H$ P
x0=[x1(1),x0]
( ?7 a V: r2 U- C5 ]* @
for i=2:n
% |. G) z% u6 r, t- {
z1(i)=0.5*(x1(i)+x1(i-1));
. S9 k( N' |$ i6 z9 l8 t! `7 t6 k
end
) ]0 `! B5 Y1 j2 G; ?. h% `
z1
0 V5 d6 D% B5 @
B=[-z1(2:end)',z1(2:end)'.^2]
( M s$ d5 e8 a, F
Y=x0(2:end)'
& N) o$ x6 }, n
abhat=B\Y %估计参数a,b 的值
; q4 k6 F/ A. u4 p8 B2 }3 I
x=dsolve('Dx+a*x=b*x^2','x(0)=x0'); %求解常微分方程
& f( J P* t" e! e
x=subs(x,{'a','b','x0'},{abhat(1),abhat(2),x1(1)}); %代入参数值
/ O+ x% ~" y) P9 _8 Y# q) u& ~ E
yuce=subs(x,'t',0:14) %计算预测值
[% {( ~5 a+ `2 P+ R9 u& {! m
digits(6); x=vpa(x) %显示微分方程的解,为了提高计算精度,把该语句放在计算预测值
( o& r% i' z& X2 d
之后,或者不使用该语句
" E; b3 m$ f; j X
yuce(16)=yuce(15);
0 u# K4 `+ ~7 r. F
x1_all=[x1,9.92,10.71];
2 b6 ~% y2 n+ Z' o1 `( W2 v: a% @
epsilon=x1_all-yuce %计算残差
& F! g, A2 W9 N Z4 ]2 `( S
delta=abs(epsilon./x1_all) %计算相对误差
" t/ H8 r& _& A' a- K5 u5 E8 y
delta_mean=mean(delta) %计算平均相对误差
( [" ?6 ?' y5 {: x3 D3 N
x1_all_0=x1_all-x1_all(1); %数据列的始点零化像
5 F2 f& {5 r D
yuce_0=yuce-yuce(1); %数据列的始点零化像
' e. z6 o* V. [/ f8 m: @! G
s0=abs(sum(x1_all_0(1:end-1))+0.5*x1_all_0(end));
3 W; G! N/ r) |2 ^
s1=abs(sum(yuce_0(1:end-1))+0.5*yuce_0(end));
' i1 s! X2 R8 t# U
tt=yuce_0-x1_all_0;
" Z+ {+ Q9 a7 ?$ Z$ [
s1_s0=abs(sum(tt(1:end-1))+0.5*tt(end));
1 G4 F5 C! ?! r1 x- q$ K1 ]; c: {
absdegree=(1+s0+s1)/(1+s0+s1+s1_s0) %计算灰色绝对关联度
4 u2 I* D5 w9 }- s
c=std(epsilon,1)/std(x1_all,1) %计算标准差比值
, } Z" o( n% V/ W
请高手帮忙一下,里面哪里错误了,看了一个晚上,老是不对!!!!
* W$ u* z' f W, @& l
这是Verhulst 预测模型 GM(1,1)改进过来的
作者:
ihear
时间:
2009-9-8 22:06
作者:
wangxinzhi
时间:
2009-9-8 23:06
不会…………
作者:
杨帆
时间:
2009-9-8 23:09
clc,clear
4 B% f/ L; ]) W
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];
& P! A4 L' d2 l! B/ U& k1 X* ^
n=length(x1);
) ^6 j# b# a6 _' ~* _# C
nian=1990:2003;
" C2 G7 R$ u1 G# b- D- F
plot(nian,x1,'o-');
: q! I# q9 G" E" L* V: b9 z% \& U
x0=diff(x1);
A4 A' S m2 Q" D& s& w
x0=[x1(1),x0]
[1 e' v: B- z. Q# P2 Y9 P
for i=2:n
- ] G& V$ K# }8 f& i
z1(i)=0.5*(x1(i)+x1(i-1));
( C2 z W2 ~3 m
end
T$ O$ I) ?3 w! v) m$ P
z1
2 X: G! [+ h. ]6 `6 |
B=[-z1(2:end)',z1(2:end)'.^2]
+ z* P+ O0 A. [7 Z8 E3 Y! o# O5 u6 }
Y=x0(2:end)'
' g1 E" r: A" ^4 D/ _
abhat=B\Y %估计参数a,b 的值
: Y" u$ N* Z' h2 u
x=dsolve('Dx+a*x=b*x^2','x(0)=x0'); %求解常微分方程
" w ~7 z' q2 f) {
x=subs(x,{'a','b','x0'},{abhat(1),abhat(2),x1(1)}); %代入参数值
* g; H; n2 o9 C( O( E0 ?
yuce=subs(x,'t',0:14) %计算预测值
$ Z- P# k. [: O9 C# t8 w
digits(6); x=vpa(x) %显示微分方程的解,为了提高计算精度,把该语句放在计算预测值之后,或者不使用该语句
6 }3 l* k1 L& N+ L. S
yuce(16)=yuce(15);
6 h7 F @( c# m# A% q6 M- z+ e
x1_all=[x1,9.92,10.71];
+ g& i4 N5 t0 J: l3 j0 A
epsilon=x1_all-yuce %计算残差
4 R9 @/ ]/ v4 P w0 n2 z
delta=abs(epsilon./x1_all) %计算相对误差
* Y. k. v5 y+ ]5 t
delta_mean=mean(delta) %计算平均相对误差
5 c; t3 n6 L! |0 N# q' Y
x1_all_0=x1_all-x1_all(1); %数据列的始点零化像
5 M: O9 `* V1 |* q7 t; j( a! i
yuce_0=yuce-yuce(1); %数据列的始点零化像
! Z) b8 d; |, b0 E- Q
s0=abs(sum(x1_all_0(1:end-1))+0.5*x1_all_0(end));
0 W4 ]" Q3 M2 l& ]! Y$ M
s1=abs(sum(yuce_0(1:end-1))+0.5*yuce_0(end));
6 d5 H2 M9 j7 t
tt=yuce_0-x1_all_0;
* v. [. c# a0 G: H7 r! p
s1_s0=abs(sum(tt(1:end-1))+0.5*tt(end));
' r1 Z: G) K1 I6 G/ c/ `
absdegree=(1+s0+s1)/(1+s0+s1+s1_s0) %计算灰色绝对关联度
3 i5 v1 O0 d- Z$ W
c=std(epsilon,1)/std(x1_all,1) %计算标准差比值
6 M, i+ a: Z* H- M! u4 T
+ {. [/ X7 c5 k
你数据输入有问题
作者:
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
高手帮忙啊!~~~~~~~~~求助
) C; _# N& j K* P4 p8 s! M
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5