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 à propriedadeEventDefinitionde um objetoode.
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