python数值求解上下界之间没有符号变化的方程

时间:2013-04-09 22:48:59

标签: 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))

1 个答案:

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

输出:

enter image description here