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

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

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

在给定一些参数eqn(x) = 0a的情况下,将找到b的根。
但是,如果我有一个问题,我想为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)

10-06 03:46