У меня есть система од, которую я решаю с помощью Matlab.Я хочу найти устойчивое состояние системы и для этого использую функцию события, как описано здесь .
Но иногда решатель не останавливается, даже если критерийДостигнут.Например, если вы решите следующую систему с помощью x0 = 10
, решатель остановится до 2000 года, но с x0 = 0.0001
не будет.
Функция события (eventfun_t.m)
function [x,isterm,dir] = eventfun_t(t,y)
dy = test_systeme(t,y);
x = norm(dy) - 1e-3;
isterm = 1;
dir = 0; %or -1, doesn't matter
end
Система (test_systeme.m)
function dx = test_systeme(t,x)
v = x./(x+1);
dx = -v;
end
Решить систему
x0 = 10;
eventfonction = @(t,y) eventfun_t(t,y);
optionsode=odeset('Events',eventfonction);
[t x]=ode15s(@(t,x) test_systeme(t,x),[0 2000],x0,optionsode);
Я полагаю, это потому, что с x0 = 0.0001
norm(dy)
уже ниже, чем 1e-3, но вВ таком случае, как я могу остановить решатель без проверки самостоятельно?