Python scipyで任意の方程式の解を求める

from scipy.optimize import fsolve
import numpy as np

# 変数
beta = 0.6955076793404303
ionpair = 4886

# 方程式
func = lambda delE : np.sqrt(delE/(np.log(ionpair*beta**2)-np.log(1-beta**2)-beta**2))*beta-92

# 初期値
initial_guess = 1000

# 解く
solution = fsolve(func, initial_guess)

# 解
print(solution[0])

139021.52385380902 と出てくるはず。確認のためにグラフを作っておく

x = np.linspace(0,200000)
y = func(x)
import matplotlib.pyplot as plt
plt.plot(x, y)
plt.grid(True)
plt.xlabel("x")
plt.ylabel("y")
plt.show()

f:id:onsanai:20210709091435p:plain