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