我正在尝试解决方程,但我无法使用brentq
,因为没有符号更改。我怎样才能找到r
的价值?
>>> import numpy as np
>>>
>>> def f(r):
return 0.1 + 1 / (2 * r ** 2) - 2 / (3 * np.sqrt(r ** 3))
答案 0 :(得分:1)
我认为有符号更改,但您可以通过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))
输出: