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

时间:2016-05-05 13:43:34

标签: python optimization scipy equation-solving

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(或另一个根查找算法)来允许我选择我想要解决的变量?

1 个答案:

答案 0 :(得分:4)

您可以使用lambda functions以更简洁的方式使用您的第一个想法:

fsolve(lambda a,x,b: eqn(x, a, b), x0=0.5, args=(x,b))

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