指定された開始点を超えて最初に遭遇したゼロの代わりに、関数のすべてのゼロを見つけるモジュールはありますか?
を使用brentqすると、関数が符号を変更する場所を指定し、 が今回変更しない限り、その場所のみを取得しnます。同様に、fsolveの場合、開始点を選択し、その点を超えた最初のゼロを見つけます。もう一度、そのn回数を実行する必要があります。nもちろん、1回の呼び出しですべての場所を見つけるにはどうすればよいでしょうか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)