Error: Maximum recursion limit of 500 reached.

4 次查看(过去 30 天)
Hello all,
I am trying to run following code in MATLAB;
function dX_dt = Model(t, x)
% Initial states
Sno3_0 = 0.62;
SacT_0 = 0.6;
Xdn_0 = 0.2;
x0 = [Sno3_0; SacT_0; Xdn_0];
x = [0;0;0];
% Naming the states
Sno3 = x(1);
SacT = x(2);
Xdn = x(3);
% Model Parameters
tFinal = 120;
HRT = 6;
D = 0.166;
Sno3_in = 10;
Sac_in = 11;
X_in = 0;
%Yxac = 0.75;
Yxac = 0.3075;
%Yno3ac = 0.88;
Yno3ac = 0.9152;
pKa_ac = 4.777;
%ka_ac = 1.67109E-05;
pH = 5;
%H = 0.00001;
qmax = 0.914634146;
Ks_ac = 0.024;
Ks_no3 = 0.248;
% Algebric
Sach = SacT*10^(-pH)/(10^(-pKa_ac)+10^(-pH));
% Rate equation
Mac = (Sach/(Ks_ac+SacT));
Mno3 = (Sno3/(Ks_no3+Sno3));
qSac = qmax*min(Mac,Mno3);
% Model balances
dXdn_dt = -D*Xdn+qSac*Xdn*Yxac;
dSno3_dt = D*(Sno3_in-Sno3)-qSac*Yno3ac*Xdn;
dSacT_dt = D*(Sac_in-SacT)-qSac*Xdn;
% Returning the vector of derivatives
dX_dt = [0:0:0];
dX_dt = [dSno3_dt; dSacT_dt; dXdn_dt];
[t,x] = ode45('Model', [0:1:240],x0)
plot(t,x);
However, I am continuously getting the error of;
Error in odearguments (line 90)
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Caused by:
Maximum recursion limit of 500 reached.
Kindly help me how to resolve this issue. Thanks

回答(1 个)

Steven Lord
Steven Lord 2021-11-23
Do not call ode45 with 'Model' as the first input from within Model.m itself. Move the ode45 call (and the code necessary to create the inputs with which you call ode45) to a separate file or run them in the Command Window.

类别

Help CenterFile Exchange 中查找有关 Ordinary Differential Equations 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by