是否有一个模块可以找到函数的所有零而不是它遇到超出指定起点的第一个零点?
使用brentq
,我们会指定功能更改签名的位置,并且仅选取该位置,除非执行此n
次。同样地,使用fsolve
,我们选择一个起始点然后它会在该点之后找到第一个零点,并且我们必须再次执行n
次。如何在一个呼叫中找到所有n
个位置,当然n < infinity
。
我想到的功能是3个零并且在下面:
import numpy as np
import pylab
from scipy.optimize import brentq
mm = 7.3477e22 # mass moon
me = 5.9736e24 # mass Earth
r12 = 384400.0 # distance between the Earth and the moon
pi2 = mm / (me + mm)
def f(xi):
return ((1.0 - pi2) / np.absolute(xi - pi2) ** 3.0 * (xi + pi2) +
pi2 / np.absolute(xi + pi2 - 1.0) ** 3.0 * (xi + pi2 - 1.0) - xi)