How to get as output the values of a parameter which change over time, but is not a derivative, in a function with an ODE system

1 view (last 30 days)
Hello everyone,
I have an ODE system like this, with 2 variables D and S:
function dy = deri(t,y,par) %par are a, b, c, d, hb y=[1 0]
dD= a * (c - D);
h = b * max(0,D-d); %h is calculate based on D at each time point
dS = -(h + hb)* S;
dy = [dS;dD]; % collect derivatives in one vector
My question is how to get as output the values of h over time?
I tried to add it as input like a variable and thus as output dy = [dS;dD;h], but it seems the values return are not correct
Thank you very much in advance for your answers
Sylvain

Accepted Answer

Naveen Venkata Krishnan
Naveen Venkata Krishnan on 10 Oct 2019
Hello Sylvain,
Can you try this once, after the execution of ode you will be having D(t) , S(t) over the specified tspan. Try calling another function that takes D(t) and gives out h(t) over the same tspan.
%-ode part-----
h = cal_h(D,b,d);
Function:
function H = cal_h(D,b,d)
H = zeros(size(D,1),1);
H = b * max(0,D-d);
end
Am not really sure whether this is what you might be looking for but i hope this helps you a bit.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by