Найти корни сложной функции в Python - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть сложная функция, для которой я пытаюсь найти корни. Попытался использовать метод Ньютона, но он не сходился, потому что, когда x изменяется даже на небольшое количество, функция изменяется довольно сильно. Я также попытался разделить свою функцию на реальные и мнимые части и попытался использовать '' fsolve '' и '' root ''. Мне удалось найти корни обеих частей, но они не были корнями исходной функции. Моя функция:

def f1(x):
    f1=np.e**(complex(0,-2*x*sqrtep*(a+b)))
    g1=np.e**(complex(0,-2*x*sqrtes*(a-b)))
    return bita*gamma*f1*g1-1+((bita-gamma)/((bita*gamma)-1))*(gamma*g1-bita*f1)

, где я устанавливаю параметры bita, gamma, a и b для любого значения, которое я выберу (в настоящее время они имеют соответственно 11,5,1 и -0,5)

Я скопировал и вставил уравнение в WolframAlpha, и решения пришли. Это заставляет меня думать, что есть способ найти их с помощью Python, но я не могу понять, как это сделать. Я проверил много вопросов, связанных со стековым потоком, но ни один из них не помог мне.

Любая помощь будет оценена, спасибо

1 Ответ

0 голосов
/ 20 ноября 2018

Я пробовал несколько scipy.optimize методов, и ни один из них не работал для сложных экспонент. Для меня сработало mpmath import findroot, хотя для его работы мне пришлось изменить e**(complex(0,-2*x*sqrtep*(a+b))) на e**(-2j*x*sqrtep*(a+b)).

...