[SciPy-User] optimize.brentq and step function
Charles R Harris
Thu Feb 28 22:57:27 CST 2013
On Thu, Feb 28, 2013 at 9:43 PM, Charles R Harris <email@example.com
> On Thu, Feb 28, 2013 at 8:44 PM, <firstname.lastname@example.org> wrote:
>> brentq documentation says "f must be a continuous function"
>> I forgot that I have a step function and tried brentq and it worked.
>> Is this an accident or a feature?
> Feature, the documentation is off. Brentq falls back on bisection when it
> converges too slowly. And there is some subtlety in 'slowly', but it does
> work find a point of sign where the function changes sign, all that is
> required is the the function be defined everywhere on the interval and
> there be a finite number of 'zeros'. If you know you have a discontinuity,
> plain old bisection is probably faster, but one of the best things about
> brentq is its generality.
And the finite part is wrong. Bisection will always find a `zero` if the
ends have opposite signs since the interval is halved on every iteration
and it will terminate when the interval is sufficiently small. But all you
know at that point is that the ends have different signs, not that the
function is almost zero there. So continuity is required for the function
to actually be close to zero.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the SciPy-User