0

我正在尝试求解一个方程,但我无法使用brentq,因为没有符号变化。我怎样才能找到 的价值r

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

1 回答 1

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))

输出:

在此处输入图像描述

于 2013-04-09T23:02:54.440 回答