SIMbyom function derivatives.m (the model in ODEs)

Syntax: dX = derivatives(t,X,par,c)

This function calculates the derivatives for the model system. It is linked to the script file byom_sim_lorenz.m. As input, it gets:

Time t and scenario name c are handed over as single numbers by call_deri.m (you do not have to use them in this function). Output dX (as vector) provides the differentials for each state at t.



function dX = derivatives(t,X,par,c)
global glo   % allow for global parameters in structure glo (handy for switches)

Unpack states

The state variables enter this function in the vector X. Here, we give them a more handy name.

x = X(1); % state 1
y = X(2); % state 2
z = X(3); % state 3

Unpack parameters

The parameters enter this function in the structure par. The names in the structure are the same as those defined in the byom script file. The 1 between parentheses is needed as each parameter has 5 associated values (probably not needed for the SIMbyom package).

sig  = par.sig(1);   % sigma
rho  = par.rho(1);   % rho
bet  =;   % beta

Calculate the derivatives

This is the actual model, specified as a system of three ODEs:

$$ \frac{dx}{dt} = \sigma (y-x) $$

$$ \frac{dy}{dt} = x (\rho-z) -y $$

$$ \frac{dz}{dt} = xy-\beta z $$

dx = sig*(y-x);
dy = x*(rho-z)-y;
dz = x*y-bet*z;

dX = [dx;dy;dz]; % collect all derivatives in one vector dX