Matlab ode solver - putting condition in function

1 次查看(过去 30 天)
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.

采纳的回答

Ameer Hamza
Ameer Hamza 2020-12-6
编辑:Ameer Hamza 2020-12-6
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 个评论
Ameer Hamza
Ameer Hamza 2020-12-6
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)

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Ordinary Differential Equations 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by