Нахождение двойных корней уравнений с использованием Python
В настоящее время я пытаюсь найти корни функции
f(x)=Re[(-1 + e^(2 i x))^8 (-i + e^(2 i x) x)^8]=0
численно используя python 2.7. Изучая книгу "Численные методы в инженерии с python 3", я использовал поиск корней, который находит значения x1 и x2 x, между которыми функция меняет знак. Я нанес на карту функцию в Mathematica, и моя программа правильно находит большинство корней (Я бы включил сюжет этой функции, но у меня нет очков репутации).
Однако он не может найти "двойные корни" (в случае f(x)=0 они расположены в -Pi и Pi). Очевидно, это потому, что вокруг этих корней функция не меняет знак. На самом деле, я полагаю, что в целом этот метод не может найти корни с одинаковой кратностью.
Можно ли как-то найти двойные корни таких функций, не вычисляя производную f'(x) (т. Е. Используя метод Ньютона-Рафсона)? Я понимаю, что в этом случае производную очень легко рассчитать. Однако я буду иметь дело с гораздо более сложными функциями, для которых невозможно вычислить производную.
Любая помощь будет принята с благодарностью!