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!