python 中非线性向量函数的求根:如何为变量设置界限?

Root finding for nonlinear vector functions in python: how can I place bounds on my variables?

对于标量函数的求根,scipy.optimize.root_scalar 提供了一个非常有用的 bracket 参数,我可以使用它来设置包含我的根的区间,以确保我找到的根是我找到的那个想。我想对 (x1, x2) 的向量函数做同样的事情,其中​​对我来说唯一有意义的根位于两个变量的 (0, 1) 之间。但是,scipy scipy.optimize.root 中的向量求根函数无法让我指定边界,而且我似乎也无法将其指定为任何求解器方法的选项.

是否有任何解决此问题或其他 packages/functions 的方法可以满足我的要求?我对寻根非常陌生,但令我惊讶的是这个功能很难找到,因为直觉上寻根似乎如果指定了界限会更容易。有什么方法可以破解我的函数以将这些算法之一指向 (0, 1) 区域?

函数 scipy.optimize.root_scalarbracket 参数,因为当函数只有一个参数时,可以使用二分算法求根。 在更高的维度中没有这样的二分算法。

不过,在多个维度中,可以在scipy.optimize.brute中指定ranges来限制搜索space的解决方案。 要找到 f(x_1, ..., x_n) 的根,您可以尝试在 f(x_1, ..., x_n)^2 上使用 scipy.optimize.brute,因为根是平方函数的全局最小值。