我正在尝试求解一个方程,但我无法使用brentq
,因为没有符号变化。我怎样才能找到 的价值r
?
>>> import numpy as np
>>>
>>> def f(r):
return 0.1 + 1 / (2 * r ** 2) - 2 / (3 * np.sqrt(r ** 3))
我正在尝试求解一个方程,但我无法使用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))
输出: