数学建模社区-数学中国
标题:
Verhulst 预测模型
[打印本页]
作者:
xinzhiyong
时间:
2009-9-8 22:04
标题:
Verhulst 预测模型
clc,clear
K& x% w0 ]# y9 T8 N" m: D
x1=[4.93 5.33 5.87 6.35 6.63 7.15 7.37 7.39 7.81 8.35
7 E# y( `3 Q6 [8 B( ~) d
9.39 10.59 10.94 10.44];
& z7 \ _8 @8 x( Q: m, D% E: n" G
n=length(x1);
+ }+ }6 T0 S3 l) Y" b7 _+ k
nian=1990:2003;
, I' Y8 P- n; c* A
plot(nian,x1,'o-');
9 q& [# b- p2 Q& ~8 D
x0=diff(x1);
. B( E( p1 m# O# {) V+ W
x0=[x1(1),x0]
4 E' ?% A" D8 e
for i=2:n
+ S$ O* O- Y v& _( g" g0 n0 B) _
z1(i)=0.5*(x1(i)+x1(i-1));
) Y. d: q" V" F* N3 l
end
0 [1 X% T* d1 x1 ~0 [' M: h
z1
7 m% `( v/ U3 a8 F8 o: \
B=[-z1(2:end)',z1(2:end)'.^2]
0 U' _! l3 y* h# i2 L
Y=x0(2:end)'
3 }) M* i( f# S4 } I
abhat=B\Y %估计参数a,b 的值
6 B" O. ~% C9 C
x=dsolve('Dx+a*x=b*x^2','x(0)=x0'); %求解常微分方程
& @) X) N9 H# Q! v4 f/ h
x=subs(x,{'a','b','x0'},{abhat(1),abhat(2),x1(1)}); %代入参数值
7 r) Z- V. s' `8 T. K
yuce=subs(x,'t',0:14) %计算预测值
" t2 J2 O8 c/ ^( ~
digits(6); x=vpa(x) %显示微分方程的解,为了提高计算精度,把该语句放在计算预测值
* ~7 d. ^# F6 E
之后,或者不使用该语句
/ ^9 w+ n1 j5 X9 M
yuce(16)=yuce(15);
8 R8 Z x# b" P! h3 ]9 u2 a
x1_all=[x1,9.92,10.71];
; K! r2 R+ a' f3 \2 z* e
epsilon=x1_all-yuce %计算残差
, b) \- d& W4 r/ {: _- S) t
delta=abs(epsilon./x1_all) %计算相对误差
) ?3 J8 s' a6 g5 m; W. _6 S/ v C
delta_mean=mean(delta) %计算平均相对误差
- `8 U, {/ |+ Z2 Y
x1_all_0=x1_all-x1_all(1); %数据列的始点零化像
5 U) Z6 A8 K& K [2 A
yuce_0=yuce-yuce(1); %数据列的始点零化像
8 D7 \' C4 D/ t& X$ K7 n
s0=abs(sum(x1_all_0(1:end-1))+0.5*x1_all_0(end));
& i* X5 P# }# R" S y6 i- P* f
s1=abs(sum(yuce_0(1:end-1))+0.5*yuce_0(end));
4 [; a/ H. b3 K* K+ Z) A- b$ k5 d
tt=yuce_0-x1_all_0;
2 _4 t1 V" ]+ ?4 }8 |
s1_s0=abs(sum(tt(1:end-1))+0.5*tt(end));
/ |+ C+ b5 U& n+ d/ X
absdegree=(1+s0+s1)/(1+s0+s1+s1_s0) %计算灰色绝对关联度
$ p$ e8 t. F% r+ z
c=std(epsilon,1)/std(x1_all,1) %计算标准差比值
1 G- Y+ W% h8 B* ]' e; f0 k
请高手帮忙一下,里面哪里错误了,看了一个晚上,老是不对!!!!
2 `4 d( a5 P4 I" R
这是Verhulst 预测模型 GM(1,1)改进过来的
作者:
ihear
时间:
2009-9-8 22:06
作者:
wangxinzhi
时间:
2009-9-8 23:06
不会…………
作者:
杨帆
时间:
2009-9-8 23:09
clc,clear
6 y, i" A' T0 w# k! Z) O8 Q$ 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];
4 ]# ~6 S3 m- V H2 w; S9 M1 L" G
n=length(x1);
/ y( \/ ?! G2 {2 N9 v( s0 w$ ]% E
nian=1990:2003;
* ^1 Q$ g/ o2 q" R# W8 t
plot(nian,x1,'o-');
X9 G7 o6 \& A6 o2 B
x0=diff(x1);
( {9 B. Q6 k) k( o( t
x0=[x1(1),x0]
; s( G7 Q1 o# _ Q
for i=2:n
. S8 M, w! U* J4 p T/ o
z1(i)=0.5*(x1(i)+x1(i-1));
3 F- d, |5 s7 i) }
end
5 _- K4 U7 G* w z; X3 k e
z1
: b$ s; s, i" @- A* l! E( D
B=[-z1(2:end)',z1(2:end)'.^2]
" h1 ^) Z7 u' C- p/ g# a% M! K
Y=x0(2:end)'
! G- r A9 ^6 u' Y' |
abhat=B\Y %估计参数a,b 的值
! ~4 [4 H: ^% g$ N. |7 b
x=dsolve('Dx+a*x=b*x^2','x(0)=x0'); %求解常微分方程
" o- o! s% ~' g) w& P0 G
x=subs(x,{'a','b','x0'},{abhat(1),abhat(2),x1(1)}); %代入参数值
+ W1 A6 Y3 q8 }5 X% w; \& v
yuce=subs(x,'t',0:14) %计算预测值
* ]) A1 j. d) G- z' b
digits(6); x=vpa(x) %显示微分方程的解,为了提高计算精度,把该语句放在计算预测值之后,或者不使用该语句
3 U9 v; s8 X5 R6 m- @
yuce(16)=yuce(15);
9 O& r$ r K% G% [
x1_all=[x1,9.92,10.71];
3 K! ^# x+ n' ?. Q; Z/ N
epsilon=x1_all-yuce %计算残差
3 Z# y- W! I% `( |2 e: h
delta=abs(epsilon./x1_all) %计算相对误差
# i8 d7 Q- V# |: m% n2 c T) V
delta_mean=mean(delta) %计算平均相对误差
" }4 c) f/ h: K1 _8 L
x1_all_0=x1_all-x1_all(1); %数据列的始点零化像
/ M& E% I" H9 h: t8 u/ g* A
yuce_0=yuce-yuce(1); %数据列的始点零化像
$ F( x* ^( i! H
s0=abs(sum(x1_all_0(1:end-1))+0.5*x1_all_0(end));
7 N9 U+ X+ N' ?- i
s1=abs(sum(yuce_0(1:end-1))+0.5*yuce_0(end));
- O3 F* t3 K! `
tt=yuce_0-x1_all_0;
- N, h* {3 U( t6 @; h/ q$ Z
s1_s0=abs(sum(tt(1:end-1))+0.5*tt(end));
. L+ ~" W) g9 J5 H
absdegree=(1+s0+s1)/(1+s0+s1+s1_s0) %计算灰色绝对关联度
& E6 |2 n" S/ @0 [/ y" w2 w
c=std(epsilon,1)/std(x1_all,1) %计算标准差比值
1 A+ O2 d! r- S5 Z, H
" }! }" v4 ^* T
你数据输入有问题
作者:
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
高手帮忙啊!~~~~~~~~~求助
1 W, M; U; }- o1 p
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5