找到非线性函数的所有根

时间:2016-02-26 09:42:44

标签: python numerical-methods nonlinear-functions nonlinear-optimization

让我们假设我有一个平滑的非线性函数f:R ^ n - > R与(已知)最大根数N.如何有效地找到根?现在我已经在预选区域上计算了网格上的函数,细化了函数低于预定义阈值的网格并继续该例程,但这似乎不是非常有效,因为我注意到它是很难在之前正确选择区域并相应地定义阈值。

2 个答案:

答案 0 :(得分:0)

当然,有几种方法可以解决这个问题,已知scipy包含了最安全,最有效的查找单根的方法,前提是您知道间隔: scipy.optimize.brentq

使用您可以使用的估算来查找更多根: scipy.optimize.fsolve

de Moivre用于根发现的公式与其他公式相比相当快(如果您希望构建自己的方法): 给出一个复数enter image description here

n根由下式给出:

enter image description here

其中k在从0到n - 1的整数值上变化。

答案 1 :(得分:0)

您可以对函数进行平方并使用全局优化软件来定位域内的所有最小值并选择零值。 具有聚类的随机多基于全局优化方法非常适合此任务。