微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python中非线性向量函数的根查找:如何在我的变量上放置边界?

如何解决python中非线性向量函数的根查找:如何在我的变量上放置边界?

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

有什么方法可以解决这个问题或其他包/功能可以做我想要的吗?我对找根很陌生,但我很惊讶这个功能很难找到,因为直观地找根似乎如果指定了界限会更容易。有什么方法可以破解我的函数,将这些算法之一指向 (0,1) 区域?

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。