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



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

def eqn(x, a, b):
    return x + 2*a - b**2
fsolve(eqn, x0=0.5, args = (a,b))

并且会为eqn(x) = 0找到一个根,给定一些ab的论点.

但是,如果我有一个问题,我想解决 a 变量,以 xb 给出函数参数怎么办?当然,我可以将初始方程重新转换为

def eqn(a, x, b)

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

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

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

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

最新更新