Event triggered control using ode45

10 Ansichten (letzte 30 Tage)
Arnab
Arnab am 30 Nov. 2024
Kommentiert: Arnab am 1 Dez. 2024
I have to solve ODE given by:
dy/dt= y- (|y|^0.5)*signum(y).
And T1=2; is some given constant.
Where event points are generated by
s_(k+1)={ t >=t and t<T1_k: y(t)=e^-(t_k)}
where t_k= s_k+ r_k, r_k is the delay term . And at t=t_k, y(t) should update the initial condition as
y(t_k)=y((t_k)^)+ 0.5*|y(s_k)|/(1+0.5*)).
And for t>=T1 we should just solve the given ODE and there is event condition for t>=T1.
And we should plot t vs y(t) for 4 seconds.

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 1 Dez. 2024
%assuming r_k is a row vector of delay intervals.
tspan = cumsum([0, r_k]).';
if tspan(end) == T1; tspan(end) = []; end
tspan = [tspan, [tspan(2:end); T1]];
and then run the for loop. Within the for loop, adjust the boundary condition after each ode45() call.

Weitere Antworten (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by