Como Mike Dunlavey ya señaló en un comentario, esto a menudo se hace usando las llamadas funciones de cruce por cero , es decir, funciones que cruzan de a ( o viceversa) cuando el RHS tiene una discontinuidad. > 0 < 0sol( t , x ( t ) ) ∈ R> 0<0
Por ejemplo, si tiene una masa en movimiento con un bloque, la distancia entre la masa y el bloque se puede usar como una función de cruce por cero.
Muchos solucionadores de ODE (por ejemplo, SUNDIALS CVODE) verifican automáticamente si alguna de las funciones de cruce por cero cambió su signo durante el último paso de tiempo. Si este es el caso, se utiliza un método de búsqueda de raíz para determinar la ubicación exacta de la raíz. El solucionador se puede reiniciar en esa posición particular. Esto se hace automáticamente por el solucionador o manualmente por el código de llamada.