我有一个复杂的功能,我正在尝试寻找其根源。尝试使用牛顿法,但是它没有收敛,因为即使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查找它们,但我似乎不知道如何找到它。我检查了许多stackoverflow问题,但没有一个对我有用。
任何帮助,将不胜感激,谢谢
最佳答案
我尝试了几种scipy.optimize
方法,但它们都不适用于复杂的指数。对我有用的是mpmath import findroot
,但要使其正常工作,我必须将e**(complex(0,-2*x*sqrtep*(a+b)))
更改为e**(-2j*x*sqrtep*(a+b))
。