数学建模社区-数学中国
标题:
湖泊有机物新陈代谢模型问题
[打印本页]
作者:
度过无风
时间:
2013-1-25 19:34
标题:
湖泊有机物新陈代谢模型问题
%微分方程组求解主程序
* ^. K3 G+ y# \/ |& D. f
clc;clear all;clf;close all;
( d/ j+ v: K' w
%微分方程组求解主程序
. g% ~* z# d7 U* z/ }. ~
clc;clear all;clf;close all;
4 f' ]- n3 v4 \# f# ?, {
%windows时钟自动计时
( N7 G9 Y7 a. F" Q9 Y
T1=clock; %函数clock返回的值是clock=[year month day hour minute seconds]
) r4 s- r# ?4 }$ {& E
disp('计算机正在准备输出湖泊有机物新陈代谢结果,请耐心等待······');
, g' Z6 N J9 [ M8 ~: |& @8 E
[tt,y]=ode45('lbwfun',[0:10:2020],[95.9,0.83,0.003,0.0001,0.0,0.0]);
! P9 h7 p7 Y! R+ p1 B! P
t=tt(191:end,
# F- ~1 i; v' N6 J; ^
ys=(191:end,1)
2 X/ A( h( s9 D7 p/ J/ T
yp=(191:end,2)
2 P) ^' e e$ c% V+ `
yh=(191:end,3)
, J. O3 Q7 s/ ~
yr=(191:end,4)
) Z0 I0 b3 a7 J+ L( O0 T Q' k
yo=(191:end,5)
# J7 o/ V$ E5 j/ o- U1 b% {! ?/ G
ye=(191:end,6)
& I2 ]; S ~- S8 T7 k7 x
T2=clock;
+ l: M% _$ u1 B, l$ g
API_elapsed_time=T2-T1;
# O+ L) D# c( f% {" _
if API_elapsed_time(6)<0
. \6 t, `9 `8 l' {, s
API_elapsed_time(6)=API_elapsed_time(6)+60;
' B' w/ s8 M8 q8 }3 F' Q
API_elapsed_time(5)=API_elapsed_time(5)-1;
0 c V1 R+ q& x/ h
end
. t) [* u9 p+ N
if API_elapsed_time(4)<0
q* l; P9 L; v: |8 j0 y
API_elapsed_time(4)=API_elapsed_time(4)+60;
( a; \1 o" Z @6 M0 F
API_elapsed_time(4)=API_elapsed_time(4)-1;
$ I6 r2 F. `9 m# U! |
end
M9 i. A2 I! w
str=sprintf('湖泊新陈代谢模拟程序共运行 %d 小时 %d 分钟 %.4f 秒',```
) ]3 {# W8 E, ~ X
API_elapsed_time(4),API_elapsed_time(5),API_elapsed_time(6));
/ Q t) H* C- O/ O+ o
disp(str);
' a7 h: U5 g3 C o
%子函数:微分方程组odefile文件并命名为lbwfun.m
) Y; Z6 N$ ^2 }, }9 d
function ydot=lbwfun(t,y);
; o* T3 ?2 g. Q$ J: F" ]$ \) s
ydot=[121.793*pi*cos(2*pi*t);
& l; _5 u2 f' s+ @5 l' ^4 ]) \
y(1)-4.03*y(2);
( q* y6 ]2 S1 z2 y: y/ l3 t
0.48*y(2)-17.87*y(3);
! N! R' G6 S* r w% I
4.85*y(3)-4.65*y(4);
7 V, c: F. F T1 Q& R$ e% j
2.55*y(2)+6.12*y(3)+1.95*y(4);
+ ~" x* U2 b( V
1.10*y(2)+6.90*y(3)+2.70*y(4)];
5 |' ]2 J( }+ I3 `* V
运行结果(我是按书上写出来的程序)
$ p! ?) U( m! [ v( m& H8 V! e% |- b& {
计算机正在准备输出湖泊有机物新陈代谢结果,请耐心等待······
8 ~- r9 t- Y3 P" _* g: R' Y5 l5 l
??? Error using ==> feval
0 v' ]2 Q; }: h& A1 ? k
Undefined function or method 'lbwfun' for input arguments of type 'double'.
* N- E4 ?( W' Z) o2 \! C$ @# y
0 p- C1 E2 Q$ q, L% c4 S5 X: C
Error in ==> odearguments at 110
! K) g, t6 R7 G# L7 R& p: M
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
- J; n$ s# u5 {0 v+ e' m6 S; w" [; m! ?
! X* z( J Q4 Z5 G0 L# @
Error in ==> ode45 at 173
! j9 X* E. R! [3 k- `3 E
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5