Thresholds in ODE solvers
1 次查看(过去 30 天)
显示 更早的评论
Working with models of ecological communities based on diff. equations, I want to define a extinction threshold. If, during the simulation, any species density drops below that it should go directly to zero. I do it with a line in the equations file like:
x(x < threshold)= 0;
But it's not working. As a simple example see this:
function dn= expdecay(t,x)
dn= zeros(1,1);
dn= -0.1*x;
x(x<10)= 0;
When I call: [t,x]= ode45('expdecay',[1 100],[100]); plot(t,x)
I'd expect a straight drop to zero when x= 10, but it doesn't happen. Any idea how to implement this?
0 个评论
采纳的回答
Teja Muppirala
2011-5-19
Make your expdecay look something like this:
dn= zeros(1,1);
dn= -0.1*x;
dead = x < 10;
assignin('caller','dead',dead);
evalin('caller','y(dead) = 0;');
2 个评论
更多回答(1 个)
Sean de Wolski
2011-5-18
Your function is returning dn. x isn't passed back so the last line doesn't do anything...
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Ordinary Differential Equations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!