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

选择要求解的变量(使用fsolve查找Python根),python,optimization,scipy,equation-solving,Python,Optimization,Scipy,Equation Solving,Scipy为根查找提供了许多有用的工具,尤其是。通常,程序具有以下形式: def eqn(x, a, b): return x + 2*a - b**2 fsolve(eqn, x0=0.5, args = (a,b)) 如果给定一些参数a和b,则会找到eqn(x)=0的根 但是,如果我想为a变量解决一个问题,给出x和b中的函数参数,该怎么办?当然,我可以将初始方程改写为 def eqn(a, x, b) 但这似乎冗长而低效。相反,是否有一种方法可以简单地设置fsolve(或另一种

Scipy为根查找提供了许多有用的工具,尤其是。通常,程序具有以下形式:

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

fsolve(eqn, x0=0.5, args = (a,b))
如果给定一些参数
a
b
,则会找到
eqn(x)=0的根

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

def eqn(a, x, b)

但这似乎冗长而低效。相反,是否有一种方法可以简单地设置
fsolve
(或另一种寻根算法)以允许我选择要求解的变量?

您可以使用以下方法以更简洁的方式实现您的第一个想法:


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

谢谢,这当然比完整的函数重新定义要快,但仍然感觉不和谐,特别是当有许多变量可供选择时,需要定义许多lambda函数。还有别的办法吗?
fsolve(lambda a,x,b: eqn(x, a, b), x0=0.5, args=(x,b))