Effacer les filtres
Effacer les filtres

How to terminate simulation and output timesteps to termination

1 vue (au cours des 30 derniers jours)
Colin Lynch
Colin Lynch le 20 Fév 2018
Hello everyone!
I am attempting to count the number of time steps it takes for a simulation to reach equilibrium, and once its there to terminate the simulation. Here, the simulation reaches equilibrium when n(t+1) = n(t) AND when S(t+1) = S(t). The following code runs the simulation until t = T, but I want it to stop when it reaches the above conditional and then I want it to output eq = t where t is the amount of time it took to reach equilibrium. Does anyone know how to make this happen, as this code is spitting out errors?
function [n, S] = simulate_dynamics(n0, S0, dt, T, A, B, C, D, beta, thetaI, thetaC, lambda, alpha, K)
eq = []
S(1) = S0;
n(1) = n0;
for t = 1:T
pStart = A + B * (S(t).^2./(S(t).^2 + thetaI.^2));
pStop = C + D * (1 ./ (1 + exp(beta*(S(t)-thetaC))));
n(t+1) = n(t) + dt * (pStart * (1 - n(t)) - pStop*n(t));
S(t+1) = S(t) + dt * (lambda*S(t).^alpha - K*n(t));
% keep both variables inside [0 1]
if S(t+1) > 1
S(t+1) = 1;
end
if n(t+1) > 1
n(t+1) = 1;
end
if S(t+1) < 0
S(t+1) = 0;
end
if n(t+1) < 0
n(t+1) = 0;
end
if n(t+1) = n(t) & S(t+1) = S(t)
eq = t
return
end
end

Réponses (0)

Catégories

En savoir plus sur General Physics dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by