# Help me with code to solve for loop to solve ODE

2 views (last 30 days)
Le Duc Long on 23 Jun 2020
Commented: Le Duc Long on 25 Jun 2020
Hello everybody,
I have a problem with my code. I want to write a code to solve ODE (image). I am trying it with function ode45, I can only write code when value s=const. But I do not how to write a code for s(t) in this case. Can you show me how to do in this case. Thanks so much! Best regards!

Ameer Hamza on 23 Jun 2020
Edited: Ameer Hamza on 23 Jun 2020
Try this code
tspan = [0 500];
ic = [1; 0; 0; 0; 0];
[t, p] = ode45(@odeFun, tspan, ic);
plot(t, p)
legend({'p', 'p\_dot1', 'p\_dot2', 'p\_dot3', 'p\_dot4'})
function dpdt = odeFun(t, p)
A = [-1 0 0 0 0;
1 -1 0 0 0;
0 1 -1 0 0;
0 0 1 -1 0;
0 0 0 1 -1];
B = [0 1 0 0 0;
0 -1 1 0 0;
0 0 -1 1 0;
0 0 0 -1 1;
0 0 0 0 -1];
lambda = 0.2;
T = 100;
g = T/2;
s0 = 0.5;
if (t-floor(t/T)*T)<g
s = s0;
else
s = 0;
end
dpdt = (lambda*A + s*B)*p;
end

Le Duc Long on 25 Jun 2020
Ameer Hamza, you can tell me when value lamda is not const, lamda has distribute Poisson. What kind of fuction I can use? Thanks so much!
Ameer Hamza on 25 Jun 2020
Try using https://www.mathworks.com/help/stats/poissrnd.html to generate random number using poisson distribution.
Le Duc Long on 25 Jun 2020
Thanks you very much Ameer Hamza.