Matlab ode solver - putting condition in function

11 visualizaciones (últimos 30 días)
kkh1897
kkh1897 el 6 de Dic. de 2020
Comentada: Ameer Hamza el 6 de Dic. de 2020
I use ode23s solver
and the results show that variables oscillate around zero plus and minus.
I want to fix the variables to zero when they first go under zero.
ode23s solver can't use odeset 'NonNegative' option,
so we should have to put some condition in the function.
Please give me help.

Respuesta aceptada

Ameer Hamza
Ameer Hamza el 6 de Dic. de 2020
Editada: Ameer Hamza el 6 de Dic. de 2020
The easiest option might be to do this after getting the solution from ode23s. For example
[t, y] = ode23s(..)
idx = find(y<0, 1);
y(idx:end) = 0
This assumes that your ODE is first-order and y is a column vector.
  4 comentarios
kkh1897
kkh1897 el 6 de Dic. de 2020
I sent you a email. Thank you
Ameer Hamza
Ameer Hamza el 6 de Dic. de 2020
This is the code with ode45(). However, due to some reason, the result is different as compared to dsolve(). I am not sure why.
ode = @(t, x) [x(2);
-sign(x(1)+x(2))];
IC = [1; 0];
tspan = [0 5];
ode(ode, tspan, IC)

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Ordinary Differential Equations en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by