数学建模社区-数学中国
标题:
Verhulst 预测模型
[打印本页]
作者:
xinzhiyong
时间:
2009-9-8 22:04
标题:
Verhulst 预测模型
clc,clear
% u/ f0 T4 ]) i# _1 F/ g
x1=[4.93 5.33 5.87 6.35 6.63 7.15 7.37 7.39 7.81 8.35
% h. y" i. P$ f# R% k( c& o) v
9.39 10.59 10.94 10.44];
2 \% t4 w8 {, o5 c
n=length(x1);
; _3 S5 m6 p% ~. }' x
nian=1990:2003;
% P' e2 ] V1 T: u
plot(nian,x1,'o-');
Z" F* }+ I6 r5 o7 z M! H f
x0=diff(x1);
% c7 P: x- o4 `% _
x0=[x1(1),x0]
6 y6 J! Y) t; q4 C9 o4 ^9 {
for i=2:n
9 H1 @8 _0 Y. }8 A* V7 \, u
z1(i)=0.5*(x1(i)+x1(i-1));
1 \) U3 A; X5 E
end
# F$ G7 E4 ]) X7 ^
z1
3 j; `% v- B0 x) T' Q7 s
B=[-z1(2:end)',z1(2:end)'.^2]
' w8 |" `% j) _8 h
Y=x0(2:end)'
( H- U7 a S0 b4 \+ `
abhat=B\Y %估计参数a,b 的值
! u2 I1 v% b! W- `( N
x=dsolve('Dx+a*x=b*x^2','x(0)=x0'); %求解常微分方程
9 k" w: t. j7 x7 q" `
x=subs(x,{'a','b','x0'},{abhat(1),abhat(2),x1(1)}); %代入参数值
2 H) R7 x n! A& |5 l ]% P, v l
yuce=subs(x,'t',0:14) %计算预测值
( v! @5 X$ w e
digits(6); x=vpa(x) %显示微分方程的解,为了提高计算精度,把该语句放在计算预测值
2 H7 p# ?1 B! _: ? m
之后,或者不使用该语句
V* L- Z" z. z
yuce(16)=yuce(15);
$ A) V+ J9 c+ Y( M1 n3 b2 ~0 u
x1_all=[x1,9.92,10.71];
8 O& L& s T+ d
epsilon=x1_all-yuce %计算残差
8 `8 \9 H ?3 G# g. N; ]
delta=abs(epsilon./x1_all) %计算相对误差
9 |$ J, {0 E$ w/ L. F) b( p
delta_mean=mean(delta) %计算平均相对误差
~6 J( m' K0 h1 V2 Z
x1_all_0=x1_all-x1_all(1); %数据列的始点零化像
1 z! B2 `1 d9 K' N# a, m
yuce_0=yuce-yuce(1); %数据列的始点零化像
9 _+ A- Y! P$ o' j* e( {
s0=abs(sum(x1_all_0(1:end-1))+0.5*x1_all_0(end));
) B0 [& ~& M; k
s1=abs(sum(yuce_0(1:end-1))+0.5*yuce_0(end));
$ U O! o5 x6 |. v; `! m
tt=yuce_0-x1_all_0;
& z V3 M- u9 |& u' o
s1_s0=abs(sum(tt(1:end-1))+0.5*tt(end));
+ d7 Y5 _) I1 A( q: d7 z6 A# ]) ~
absdegree=(1+s0+s1)/(1+s0+s1+s1_s0) %计算灰色绝对关联度
( V( k' s) k# `
c=std(epsilon,1)/std(x1_all,1) %计算标准差比值
; s$ |* w4 T5 y
请高手帮忙一下,里面哪里错误了,看了一个晚上,老是不对!!!!
) L- X. S) ]2 b$ r
这是Verhulst 预测模型 GM(1,1)改进过来的
作者:
ihear
时间:
2009-9-8 22:06
作者:
wangxinzhi
时间:
2009-9-8 23:06
不会…………
作者:
杨帆
时间:
2009-9-8 23:09
clc,clear
: ~% m6 Y3 S8 q) ?8 i
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];
1 c$ k* s- |7 O" c% b
n=length(x1);
, r! a0 ^6 _- @" j& ~
nian=1990:2003;
9 U! Y, j' i% Q
plot(nian,x1,'o-');
* w: R/ |$ x7 Z1 a
x0=diff(x1);
k w4 G$ F; d) A. Z3 Y
x0=[x1(1),x0]
( |! \5 G/ q1 X! U
for i=2:n
* x$ f* v0 y9 q) z3 g: y1 o7 b5 i
z1(i)=0.5*(x1(i)+x1(i-1));
& @! x# I: y/ Y
end
% |/ z/ i# Q6 ~0 w7 ?
z1
! l/ l9 i. b. N' z
B=[-z1(2:end)',z1(2:end)'.^2]
% o4 ~& ~9 Q( r4 v5 W$ ?6 S
Y=x0(2:end)'
9 u- @$ r0 p1 |7 m
abhat=B\Y %估计参数a,b 的值
/ B6 ^: [' r6 n( X, @% ?
x=dsolve('Dx+a*x=b*x^2','x(0)=x0'); %求解常微分方程
! Z: E7 F) _& r9 R: Q
x=subs(x,{'a','b','x0'},{abhat(1),abhat(2),x1(1)}); %代入参数值
7 [7 w+ N6 S( `8 j1 I* ~' l
yuce=subs(x,'t',0:14) %计算预测值
" V7 x4 p: O4 K2 k! R( v1 Y! V, Z
digits(6); x=vpa(x) %显示微分方程的解,为了提高计算精度,把该语句放在计算预测值之后,或者不使用该语句
& |3 [: l/ W3 w4 N8 |# l% V) Z
yuce(16)=yuce(15);
( S V; A+ A. v5 L- D7 O4 R9 L" K/ V
x1_all=[x1,9.92,10.71];
: ]. z% Y; K) m) o' U1 I0 C/ d
epsilon=x1_all-yuce %计算残差
; k1 @ e1 c7 j0 G( @
delta=abs(epsilon./x1_all) %计算相对误差
, V4 ]0 V: g3 B H
delta_mean=mean(delta) %计算平均相对误差
9 a* A% \/ G; r5 I
x1_all_0=x1_all-x1_all(1); %数据列的始点零化像
' ~2 \$ M, h: m1 ^# h
yuce_0=yuce-yuce(1); %数据列的始点零化像
8 T& F8 I1 O. i6 C& f/ q3 U
s0=abs(sum(x1_all_0(1:end-1))+0.5*x1_all_0(end));
( \% W- `" ?' x" ~
s1=abs(sum(yuce_0(1:end-1))+0.5*yuce_0(end));
# ]% k" \+ `$ F) r
tt=yuce_0-x1_all_0;
& i( ], E1 t4 s0 v B9 |
s1_s0=abs(sum(tt(1:end-1))+0.5*tt(end));
/ L8 j4 w- f8 s
absdegree=(1+s0+s1)/(1+s0+s1+s1_s0) %计算灰色绝对关联度
/ Y2 @/ Z9 `) J9 T8 J
c=std(epsilon,1)/std(x1_all,1) %计算标准差比值
7 q+ I% ?3 Q/ e9 O0 W- N# Q% [
2 f2 e3 r) t; f& G7 q/ r
你数据输入有问题
作者:
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
高手帮忙啊!~~~~~~~~~求助
! v. o- I$ f$ ] B, ?8 f0 P; L. y
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5