odeEvent

Definição de evento para um objeto ode: parar ou registrar quando uma grandeza cruza zero.

Categoria: Other public functions: funfun

Sintaxe

E = odeEvent(EventFcn=fcn)

Cria um evento a partir de uma função @(t, y) cujos cruzamentos de zero são os eventos.

E = odeEvent(EventFcn=fcn, Direction=d, Response=r)

Define também quais cruzamentos contam e o que o solver faz.

Descrição

Cada elemento da função de evento é monitorado enquanto o solver avança. Quando muda de sinal em uma direção permitida, o solver localiza o instante do cruzamento com precisão e o armazena. Após solve, o resultado traz os instantes em EventTime e o índice da função de evento que disparou em EventIndex.

Usos típicos são achar quando um objeto em queda toca o chão ou quando uma concentração passa de um limiar.

Argumentos de entrada

EventFcn
Function handle que retorna um ou mais valores; um evento ocorre quando um valor cruza zero.
Direction
'both' (padrão), 'ascending' ou 'descending'.
Response
'proceed' (padrão) registra o evento e continua, 'stop' encerra a integração.

Argumentos de saída

E
Um objeto odeEvent, a ser atribuído à propriedade EventDefinition de um objeto ode.

Exemplo

Quando y chega a 0,5

e = odeEvent(EventFcn=@(t, y) y - 0.5);
f = ode(ODEFcn=@(t, y) -y, InitialValue=1, EventDefinition=e);
sol = solve(f, 0, 3);
fprintf('%.4f\n', sol.EventTime)
fprintf('%.4f\n', log(2))
Saída
0.6931
0.6931

Veja também

ode odeset ode45 odeMassMatrix odeJacobian