How to apply if statement in ode45 function?

I have a multiple equations with variables c1, c2, c3.
Each variables decrease as the time increases.
And I want to put if statement in the function of ode for example "If c1 < 0, then c1 = 0."
I tried as follows:
[t, c] = ode45(@(t,c) myode(t,c), tspan, c0);
function dcdt = myode(t,c)
dcdt = zeros(3,1);
if c(1) < 0
c(1) = 0
end
dcdt(1) = ...
dcdt(2) = ...
dcdt(3) = ...
end
====> It doesn't work : How could I apply if statement properly in this case??

回答(1 个)

c = max(0,c);

1 个评论

where can I put c=max(0,c)?
In the function? or before ode45 expression?
Can you explain it in detail?
Thank you

请先登录,再进行评论。

类别

标签

提问:

2020-10-19

评论:

2020-10-19

Community Treasure Hunt

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

Start Hunting!

Translated by