数学建模社区-数学中国
标题:
湖泊有机物新陈代谢模型问题
[打印本页]
作者:
度过无风
时间:
2013-1-25 19:34
标题:
湖泊有机物新陈代谢模型问题
%微分方程组求解主程序
3 U- s% B6 x: f4 G
clc;clear all;clf;close all;
f6 {) v& K/ l& n; Q
%微分方程组求解主程序
' \" Z6 }3 z! y5 Q/ {
clc;clear all;clf;close all;
4 {9 C" L; c5 ]2 f
%windows时钟自动计时
' u; c4 M" Q1 o- k
T1=clock; %函数clock返回的值是clock=[year month day hour minute seconds]
, p3 _6 p6 b) f% V; ?
disp('计算机正在准备输出湖泊有机物新陈代谢结果,请耐心等待······');
! Q, B" U% t; T$ J0 x" D& v. n5 h
[tt,y]=ode45('lbwfun',[0:10:2020],[95.9,0.83,0.003,0.0001,0.0,0.0]);
+ Q$ k+ c i5 R
t=tt(191:end,
8 r6 i, J8 y, e2 T: ]
ys=(191:end,1)
9 u' i, A' L; B: Q! p$ S9 X
yp=(191:end,2)
: F8 R0 s$ ]& z/ b- `; L! c
yh=(191:end,3)
' s+ M3 M. o: j, R: g" c$ E
yr=(191:end,4)
2 u! H' \- a1 ?3 J
yo=(191:end,5)
/ u, ?( f. U' m
ye=(191:end,6)
2 N6 X3 ~$ X( |* V1 B0 M1 }* K
T2=clock;
: R3 T( {* {8 d$ o9 {
API_elapsed_time=T2-T1;
7 {9 G' w0 a# v, ~; q
if API_elapsed_time(6)<0
; [" ^ D8 v% i# C
API_elapsed_time(6)=API_elapsed_time(6)+60;
& E7 \* C6 P5 \' k' P& d( l
API_elapsed_time(5)=API_elapsed_time(5)-1;
* O6 m' F* M- {+ @/ @. c
end
$ x! f& A+ p- M; f7 [3 I
if API_elapsed_time(4)<0
# D9 B% |4 t# j7 f3 }' B) l: R: ^
API_elapsed_time(4)=API_elapsed_time(4)+60;
+ g; ~9 C6 S1 n4 y/ P
API_elapsed_time(4)=API_elapsed_time(4)-1;
5 T8 l' q, S6 Y3 O1 l
end
1 h$ Z N4 Z* D
str=sprintf('湖泊新陈代谢模拟程序共运行 %d 小时 %d 分钟 %.4f 秒',```
1 e, Z3 Y. v# f! N% |
API_elapsed_time(4),API_elapsed_time(5),API_elapsed_time(6));
, y* L* }* L U# j8 k
disp(str);
8 p6 b% }" x/ s: }2 e* k0 O
%子函数:微分方程组odefile文件并命名为lbwfun.m
; R1 i% C, @ V) x# f2 J! a
function ydot=lbwfun(t,y);
; C8 A% Q, a, \# J7 B. m/ b
ydot=[121.793*pi*cos(2*pi*t);
% s6 {1 ]% B+ h- N$ Z/ Q
y(1)-4.03*y(2);
; V# }! Z7 m2 T; X& O6 G
0.48*y(2)-17.87*y(3);
) l* [) X0 y* S
4.85*y(3)-4.65*y(4);
. w, b+ n4 x. u( s
2.55*y(2)+6.12*y(3)+1.95*y(4);
7 }# B4 U& L2 V* m, U
1.10*y(2)+6.90*y(3)+2.70*y(4)];
5 R; [. ?8 x2 h0 v+ _+ m$ [ ~% N
运行结果(我是按书上写出来的程序)
6 [ _4 h' @5 X/ C
计算机正在准备输出湖泊有机物新陈代谢结果,请耐心等待······
' C* p( |( D8 _# I( }
??? Error using ==> feval
4 f9 H) ]; g: c
Undefined function or method 'lbwfun' for input arguments of type 'double'.
2 d$ s, ]0 W2 x- a
: V5 G& K2 }3 H5 D, H5 d. h
Error in ==> odearguments at 110
) ?4 u0 s' }1 d n
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
+ W! a* w4 U7 B( Y
3 z* o* k; J1 S9 v
Error in ==> ode45 at 173
$ N( i/ u" _0 C" J' s& Q' ?, S
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5