如何使用numpy(和scipy)查找函数的全零?

如何使用numpy(和scipy)查找函数的全零?,第1张

如何使用numpy(和scipy)查找函数的全零?

我看到的主要问题是,如果您实际上可以找到 所有的
根源,就像注释中已经提到的那样,这并非总是可能的。如果您确定您的功能不完全是病态的(

sin(1/x)
已经提到过),那么下一个就是您对缺少一个或多个根的容忍度是多少。换句话说,要确保您没有错过任何东西,要准备多长时间
—据我所知,没有通用的方法可以为您隔离所有根,因此您必须自己做。您所显示的已经是一个合理的第一步。几点评论:

  • 布伦特的方法在这里确实是一个不错的选择。
  • 首先,应对分歧。由于在您的函数中分母中存在贝塞尔,因此您可以首先求解 它们的根源 -更好地在例如Abramovitch和Stegun中查找它们(Mathworld链接)。这将比使用您正在使用的临时网格更好。
  • 你可以做什么,一旦你发现了两个根或分歧,
    x_1
    并且
    x_2
    ,在该区间再次搜索
    [x_1+epsilon, x_2-epsilon]
    。继续,直到没有更多的根被找到(Brent的方法保证收敛到 一个 根,提供有一个)。
  • 如果您无法列举所有差异,则可能需要更加仔细地核实候选人是否确实存在差异:
    x
    不仅要检查
    f(x)
    较大的 物体,还应检查例如(1e-8,1e)的
    |f(x-epsilon/2)| > |f(x-epsilon)|
    多个值
    epsilon
    -9、1e-10等)。
  • 如果要确保没有简单地接触零的根,请查找函数的极值,对于每个极值
    x_e
    ,请检查的值
    f(x_e)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5631088.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存