数学建模社区-数学中国
标题:
Verhulst 预测模型
[打印本页]
作者:
xinzhiyong
时间:
2009-9-8 22:04
标题:
Verhulst 预测模型
clc,clear
( N- n1 y" A1 {- \# R
x1=[4.93 5.33 5.87 6.35 6.63 7.15 7.37 7.39 7.81 8.35
! T2 h: m9 @* }( Q/ V6 d$ H
9.39 10.59 10.94 10.44];
- [1 g; ]) v$ n
n=length(x1);
5 a7 ?0 D6 f$ B
nian=1990:2003;
6 ], f. _2 |9 N) Z# ?; L
plot(nian,x1,'o-');
' m) ?8 G, O! [4 o5 x
x0=diff(x1);
7 Q" X, i! h W9 h4 j
x0=[x1(1),x0]
6 R, V7 E! x! x1 w( K
for i=2:n
8 H- \# K8 V2 z1 m. l! k
z1(i)=0.5*(x1(i)+x1(i-1));
) I z, a! H, Y0 _
end
+ @! A0 X4 D8 Z4 t! K+ R! M
z1
- N: V8 }& Y4 c5 N: ]
B=[-z1(2:end)',z1(2:end)'.^2]
/ _6 U7 @2 L2 m: J
Y=x0(2:end)'
. h9 G3 N! {4 a' w% f" X4 u( h& s
abhat=B\Y %估计参数a,b 的值
( m" K4 o+ k: z7 O$ ]; j$ r7 \
x=dsolve('Dx+a*x=b*x^2','x(0)=x0'); %求解常微分方程
, V8 ]: S$ j; k9 \4 j1 A9 D/ ~
x=subs(x,{'a','b','x0'},{abhat(1),abhat(2),x1(1)}); %代入参数值
; ]5 u$ L5 K e7 Q2 v% m
yuce=subs(x,'t',0:14) %计算预测值
) N4 Q V" z5 U
digits(6); x=vpa(x) %显示微分方程的解,为了提高计算精度,把该语句放在计算预测值
" D, C4 u( ]! l6 E- y
之后,或者不使用该语句
4 s7 U. r7 \& t! h" \0 o" I6 z3 n1 l
yuce(16)=yuce(15);
+ S. U: k+ z- |5 D; x8 @0 Q |
x1_all=[x1,9.92,10.71];
* q$ x9 q0 [* U6 g% ~2 u
epsilon=x1_all-yuce %计算残差
) z# P8 J5 N3 z( d6 |9 M- g
delta=abs(epsilon./x1_all) %计算相对误差
& ]1 h/ k% Y5 S) L
delta_mean=mean(delta) %计算平均相对误差
8 o) o! s" Y9 M; Y) D& ^
x1_all_0=x1_all-x1_all(1); %数据列的始点零化像
4 ^# [# M$ V5 u! l5 P
yuce_0=yuce-yuce(1); %数据列的始点零化像
6 o) N8 \0 [5 S( P6 b, B( X# I
s0=abs(sum(x1_all_0(1:end-1))+0.5*x1_all_0(end));
[/ V& y7 v- b/ N" m
s1=abs(sum(yuce_0(1:end-1))+0.5*yuce_0(end));
1 j3 B: K: l8 {7 Z! D1 U' q* F( H
tt=yuce_0-x1_all_0;
( S+ ]# C+ t2 P' L+ N! I
s1_s0=abs(sum(tt(1:end-1))+0.5*tt(end));
* F8 B* W" U& D4 v L' E3 i
absdegree=(1+s0+s1)/(1+s0+s1+s1_s0) %计算灰色绝对关联度
" ]. d( Q- e, T+ V' P0 t: E
c=std(epsilon,1)/std(x1_all,1) %计算标准差比值
# ^( j8 `: _7 I
请高手帮忙一下,里面哪里错误了,看了一个晚上,老是不对!!!!
; w3 h# H# U5 ~
这是Verhulst 预测模型 GM(1,1)改进过来的
作者:
ihear
时间:
2009-9-8 22:06
作者:
wangxinzhi
时间:
2009-9-8 23:06
不会…………
作者:
杨帆
时间:
2009-9-8 23:09
clc,clear
0 y( N+ G: W5 ?! o
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];
8 x" M- F% }( B \
n=length(x1);
) `+ f+ \0 P/ T/ ^& d
nian=1990:2003;
$ Z' J0 }2 W6 _6 L K
plot(nian,x1,'o-');
/ l/ i: S5 D! [
x0=diff(x1);
$ _9 M) h7 T {$ i' |# y! S
x0=[x1(1),x0]
9 \' H' I( y) E3 d. X
for i=2:n
6 h3 W6 `7 e1 n
z1(i)=0.5*(x1(i)+x1(i-1));
9 h* Y0 k* M' Q2 h t9 C, n
end
) S! I( J+ q! w' D& {+ A. I. {
z1
5 I; H( Q2 f- g5 }
B=[-z1(2:end)',z1(2:end)'.^2]
' j9 L0 H4 y9 n$ v7 t& D
Y=x0(2:end)'
/ W* l; K; ?# k% X6 `3 I8 @
abhat=B\Y %估计参数a,b 的值
0 G0 ?9 v9 D8 q" [
x=dsolve('Dx+a*x=b*x^2','x(0)=x0'); %求解常微分方程
: i: }; J& @# F& O/ H0 q
x=subs(x,{'a','b','x0'},{abhat(1),abhat(2),x1(1)}); %代入参数值
% h% @; F8 u3 k' {( Q; q; t
yuce=subs(x,'t',0:14) %计算预测值
/ i! W& Y- ~, K( t6 h8 T
digits(6); x=vpa(x) %显示微分方程的解,为了提高计算精度,把该语句放在计算预测值之后,或者不使用该语句
+ C% `9 }/ G$ J4 A; v
yuce(16)=yuce(15);
" ~2 W% ?/ U; T$ c8 K Y( h
x1_all=[x1,9.92,10.71];
3 j' _# D5 S2 [( T) L# O
epsilon=x1_all-yuce %计算残差
% P; V& u' R B# U6 [# }' p
delta=abs(epsilon./x1_all) %计算相对误差
6 g1 j) V8 i8 a; Y/ K5 q& V' K
delta_mean=mean(delta) %计算平均相对误差
4 Y @9 b# i7 A
x1_all_0=x1_all-x1_all(1); %数据列的始点零化像
5 O% h9 l* F. t0 P
yuce_0=yuce-yuce(1); %数据列的始点零化像
4 n8 v O& l% ]! f$ [
s0=abs(sum(x1_all_0(1:end-1))+0.5*x1_all_0(end));
# [5 a U5 W$ i3 S# H: H
s1=abs(sum(yuce_0(1:end-1))+0.5*yuce_0(end));
- @, S9 Z6 r- r* S* j, I6 Q
tt=yuce_0-x1_all_0;
. h. C# ^* K7 M# W& r+ u
s1_s0=abs(sum(tt(1:end-1))+0.5*tt(end));
6 o- D0 w" N' y$ n4 j0 R2 V+ T
absdegree=(1+s0+s1)/(1+s0+s1+s1_s0) %计算灰色绝对关联度
+ d% z* B' f B+ k( S
c=std(epsilon,1)/std(x1_all,1) %计算标准差比值
/ e0 [6 R) I8 C! ]7 M
( r; m; w* @/ x6 p. 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
高手帮忙啊!~~~~~~~~~求助
3 ? W* z# E" }! E2 \
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5