如何在Python上解决这个问题(f(r)= 0)?
def f(r):
return -6*r**2*(pi - 1/cos(2.4e-6*sqrt(3)/r)) - 3*r**2*(2*cos(pi/6 - 1/cos(2.4e-6*sqrt(3)/r))*cos(1/cos(2.4e-6*sqrt(3)/r)) - pi/2 + 1/cos(2.4e-6*sqrt(3)/r)) - (-2.88e-5*sqrt(3) + 0.000207846096908265)*cos(pi/6 - 1/cos(2.4e-6*sqrt(3)/r)) + 5.19615242270663e-10
答案 0 :(得分:1)
一种选择是使用scipy.optimize.root
。您只需要传递初步猜测即可。
from scipy.optimize import root
initial_guess = 1
solution = root(fun=f, x0=initial_guess)
print(solution)
# fjac: array([[-1.]])
# fun: array([-4.73292067e-21])
# message: 'The solution converged.'
# nfev: 50
# qtf: array([7.59795519e-16])
# r: array([-99.77979489])
# status: 1
# success: True
# x: array([1.46358719e-06])
作为检查,我们可以将解决方案重新插入您的函数中:
print(f(solution.x[0]))
#-4.732920669875286e-21
实质上是0。