У меня есть система ОДУ следующим образом:
dx1/dt = (x1,x2,x3)
dx2/dt = (x1,x2,x3)
dx3/dt = (x1,x2,x3)
Начальные условия: x1=x2=x3=0 @ t=0, ограничения: dx1/dt = 0, dx2/dt = 0, dx3/dt = 0 для x1 = 1, x2 = 1, x3 = 1 соответственно. Как только x1, x2, x3 достигают значения 1, они должны оставаться равными 1 для дальнейшего увеличения t.
Мне нужно выяснить (1) x1, x2, x3 при разных t и (2) оценить значения t, когда каждое из них становится равным 1. Мне было трудно получить результаты для (2).
Я попытался использовать следующую функцию события:
function [val,stop,dir] = event(t,X)
X1 = x1;
X2 = x2;
X3 = x3;
val = [X1 -1; X2 -1; X3 -1];
stop= [1;1;1];
dir = [1;1;1];
end
Это не работает. Затем я попробовал другой код, чтобы хотя бы найти t, соответствующее x3 = 1 (поскольку x3 медленно увеличивается по сравнению с x1 и x2).
function [val,stop,dir] = event(t,X)
X3 = x3;
val = X3 -1;
stop= 1;
dir = 1;
end
Может ли кто-нибудь направить меня в этом отношении?
С уважением. Судип