数学建模社区-数学中国
标题:
湖泊有机物新陈代谢模型问题
[打印本页]
作者:
度过无风
时间:
2013-1-25 19:34
标题:
湖泊有机物新陈代谢模型问题
%微分方程组求解主程序
n- {. }2 [5 K- M, F# b" R
clc;clear all;clf;close all;
+ x2 N' b+ ?' \7 v1 b/ v
%微分方程组求解主程序
7 F8 K+ y( j0 G6 V% K/ M
clc;clear all;clf;close all;
9 q- n! J6 K/ u7 p) R, r" O' ~
%windows时钟自动计时
( j" }& z& s0 G4 t3 I
T1=clock; %函数clock返回的值是clock=[year month day hour minute seconds]
& E9 [+ r3 ^- I/ E" ]* k
disp('计算机正在准备输出湖泊有机物新陈代谢结果,请耐心等待······');
- Q. c5 W6 T% a2 m% l" F' r- w, P
[tt,y]=ode45('lbwfun',[0:10:2020],[95.9,0.83,0.003,0.0001,0.0,0.0]);
, L o3 l$ p' F: T# F
t=tt(191:end,
2 i b) X' u8 _( a
ys=(191:end,1)
2 G. ~' {* q: l8 N: G+ S4 g5 u
yp=(191:end,2)
; q5 D T" Y" R& T
yh=(191:end,3)
' n3 G w- a- O3 \% b9 _ O" e' d5 R
yr=(191:end,4)
! r& H% U# r( a$ U! {
yo=(191:end,5)
% r& B$ V. T4 h/ t
ye=(191:end,6)
8 O% [. R# z) X$ |1 m. T- G
T2=clock;
2 F) ^$ p6 V+ ~
API_elapsed_time=T2-T1;
8 [/ y' D* D R! I
if API_elapsed_time(6)<0
+ Y% h" A3 a. C/ k3 `4 T
API_elapsed_time(6)=API_elapsed_time(6)+60;
& f0 N6 C* s+ s4 V8 f" }! T
API_elapsed_time(5)=API_elapsed_time(5)-1;
s% {% E* `- y- q9 D% `) C& y1 F
end
6 k1 Y D" S' }6 T% o. [! \
if API_elapsed_time(4)<0
% Q% W5 Y6 P0 d9 H
API_elapsed_time(4)=API_elapsed_time(4)+60;
0 C. u0 A1 q5 ^& \ y9 v. [& b
API_elapsed_time(4)=API_elapsed_time(4)-1;
4 }7 L4 A# p5 l. C
end
+ D" A7 f9 S1 f- |2 C# S3 x$ S- ^
str=sprintf('湖泊新陈代谢模拟程序共运行 %d 小时 %d 分钟 %.4f 秒',```
! c. w1 s1 F Y# s
API_elapsed_time(4),API_elapsed_time(5),API_elapsed_time(6));
/ ~: Z. W9 R+ Z6 N# Y3 W) X7 y
disp(str);
0 r# l1 W7 j5 L2 a0 \" N
%子函数:微分方程组odefile文件并命名为lbwfun.m
, C- x2 V- j- W4 C2 T: O/ L
function ydot=lbwfun(t,y);
2 @* t/ Y8 G$ J. n( I3 ~5 H
ydot=[121.793*pi*cos(2*pi*t);
1 O& o5 p0 t1 a! U. e: a
y(1)-4.03*y(2);
# B# i; ^# H. m3 N. s
0.48*y(2)-17.87*y(3);
" n) A3 {- N/ N' ^3 I0 q
4.85*y(3)-4.65*y(4);
4 V7 R( N: i0 H1 a
2.55*y(2)+6.12*y(3)+1.95*y(4);
( e/ B$ k8 ^2 L* P
1.10*y(2)+6.90*y(3)+2.70*y(4)];
9 s" m" {0 r! ~/ d1 L+ o
运行结果(我是按书上写出来的程序)
x" m4 {: y% Q# ?( I! p) n: ]
计算机正在准备输出湖泊有机物新陈代谢结果,请耐心等待······
1 I0 Y2 O T# [1 o
??? Error using ==> feval
% H; e9 l& }* s6 h' g5 Z' l
Undefined function or method 'lbwfun' for input arguments of type 'double'.
3 j7 w% C5 U, d8 e
t, d! d5 ^- j% c3 O( j' P
Error in ==> odearguments at 110
) m5 A1 M( L& P9 k% q
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
! o$ g" j% ^; O/ R0 Y
# b' X) @7 U* q
Error in ==> ode45 at 173
& e0 J; |5 n7 H
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5