选择要求解的变量(Python 使用 fsolve 求根)

Choose which variable to solve for (Python root finding using fsolve)

Scipy 提供了许多有用的求根工具,特别是 fsolve。通常程序具有以下形式:

def eqn(x, a, b):
    return x + 2*a - b**2

fsolve(eqn, x0=0.5, args = (a,b))

并会根据一些参数 ab.

找到 eqn(x) = 0 的根

但是,如果我想解决 a 变量的问题,在 xb 中给出函数参数怎么办?当然,我可以将初始方程改写为

def eqn(a, x, b)

但这似乎冗长且效率低下。相反,有没有一种方法可以让我简单地设置 fsolve(或另一种求根算法)来让我选择要求解的变量?

您可以使用 lambda functions:

以更简洁的方式表达您的第一个想法
fsolve(lambda a,x,b: eqn(x, a, b), x0=0.5, args=(x,b))

也就是说,重新排列 lambda 包装器中的参数,这样您就不必编写单独的 def eqn2(a,x,b)