我正在尝试求解方程:
log(1+x)/x - 1/(1+x) == 2/3 * q * x**2
for x
和 q = 4e-4
我试过了
import numpy as np
import scipy.optimize as so
q = 4e-4
eqn = lambda x: np.log(1+x) / x - 1 / (1+x) - 2/3 * q * x**2
sol = so.fsolve(eqn, 1)[0]
print(sol)
和
q = 4e-4
eqn = lambda x: np.log(1+x) / x - 1 / (1+x) - 2/3 * q * x**2
sol = so.root_scalar(eqn, bracket=(1e-6, 1e20)).root
print(sol)
但得到荒谬的答案。
我期待答案是
x ~ 20
。我如何得到这个?
只需修改 x 的初始值可能会有所帮助
import numpy as np
import scipy.optimize as so
q = 4e-4
eqn = lambda x: np.log(1+x) / x - 1 / (1+x) - 2/3 * q * x**2
sol = so.fsolve(eqn, [15])[0]
print(sol)
将会输出
19.848601824823362