event detection raises non-bracketing exception
In very rare cases, event detection still triggers non-bracketing exception.
The sequence of events that lead to this is the following one:
- a first event is detected and processed, event occurs at time tA
say for example the event is a decrasing event, i.s. g(t) < 0 for t >tA - propagation continue after the detected event
- trying to find next event, the solver finds again the previous event at tA
- the fact the event was already processed is identified, and specific code is activated
- the specific code attempts to slightly shift the lower bound at tA +
epsilon,
where epsilon is the convergence threshold for event detection - in rare cases, when the g function computation is noisy, and despite
tA + epsilon
is larger than tA, g(tA + epsilon) is back to positive values, which triggers the
exception as in this case the sign of the g function is positive at both ends of
the interval.
The attached code triggers this problem.
(from redmine: issue id 160, created on 2014-01-15, closed on 2015-01-12)
- Uploads:
- NoisyFunctionTest.java test case reproducing the bug