2 views (last 30 days)

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

Ameer Hamza
on 25 Jun 2020

Opportunities for recent engineering grads.

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

Start Hunting!
## 0 Comments

Sign in to comment.