在 Python 中求解包含一个变量的方程

问题描述 投票:0回答:1

我正在尝试求解方程:

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
。我如何得到这个?

python scipy equation-solving nonlinear-equation
1个回答
0
投票

只需修改 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
© www.soinside.com 2019 - 2024. All rights reserved.