Я ищу Python алгоритм для нахождения root функции f(x)
с использованием деления на части , эквивалентный scipy.optimize.bisect , но с учетом разрывов (скачков) в f
. Функция f
слабо монотонна.
Было бы хорошо, но не обязательно для алгоритма, чтобы помечать, если пересечение (root) находится непосредственно "в" a перейти, и в этом случае вернуть точное значение x
, при котором происходит соответствующий переход (т. е., скажем, x
, для которого sign(f(x-e)) != sign(f(x+e))
и abs(f(x-e)-f(x+e)>a
для бесконечно малых e>0
и не бесконечно малых a>0
). Также хорошо, если вместо этого алгоритм, например, просто возвращает x
в пределах определенного допуска в этом случае.
Поскольку функция только слабо монотонна, она может иметь плоскую области, и теоретически это может произойти «в» root, то есть где f=0
: f(x)=0 for an entire range, x in [x_0,x_1]
. В этом случае снова, хорошо, но не обязательно , чтобы al go пометил эту особенность и, скажем, гарантировал, что x
из диапазона [x_0,x_1]
возвращается.