python数值求解一个上下界无符号变化的方程

python数值求解一个上下界无符号变化的方程,python,numpy,python-3.x,Python,Numpy,Python 3.x,我试图解一个方程,但我无法使用brentq,因为没有符号变化。如何找到r的值 >>> import numpy as np >>> >>> def f(r): return 0.1 + 1 / (2 * r ** 2) - 2 / (3 * np.sqrt(r ** 3)) 我认为有符号变化,但您可以通过fsolve解决: from scipy.optimize import fsolve import numpy as np

我试图解一个方程,但我无法使用
brentq
,因为没有符号变化。如何找到
r
的值

>>> import numpy as np
>>> 
>>> def f(r):
    return 0.1 + 1 / (2 * r ** 2) - 2 / (3 * np.sqrt(r ** 3))

我认为有符号变化,但您可以通过
fsolve
解决:

from scipy.optimize import fsolve
import numpy as np

def f(r):
    return 0.1 + 1 / (2 * r ** 2) - 2 / (3 * np.sqrt(r ** 3))

r = fsolve(f, 1)
f(r)
结果:

r = 2.22213541
编辑

有两种解决方案:

import numpy as np

def f(r):
    return 0.1 + 1 / (2 * r ** 2) - 2 / (3 * np.sqrt(r ** 3))

r = np.linspace(0.6, 3, 1000)
plot(r, f(r))
输出:


溶液应为0.667。所需要的只是将1设为0.1