gpt4 book ai didi

c++ - 使用 Brent 算法以初始猜测找到函数 f 的根,但没有区间 [a,b] s.t. f(a)f(b)<0

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:38:15 29 4
gpt4 key购买 nike

如果不能提供相反的符号,我想知道如何使用布伦特算法。

例如,在 C++ library of Brent algorithm ,必须使用实现 Brent 方法的寻根程序,遵循 header file , 形式为

双零(双 a、双 b、双 t、func_base& f);其中a,b满足符号相反的条件:f(a).f(b) < 0

在我的问题设置中,我需要找到黑盒 函数f 的根。提供了初始猜测但没有端点 a、b,因此提供了 f(a) f(b)<0 似乎在 Matlab 中有一个函数 fmin 只需要一个初始猜测。我想知道如何使用 C++ 执行此操作,特别是使用上面链接的 Brent 的实现?

感谢您的想法。

最佳答案

如果不进行详尽搜索(在实值函数的情况下,您不能这样做,因为 x 的值为 uncountable ),如果这样,就无法真正保证找到根存在。

解决该问题的一种启发式方法是使用 gradient descent , 为了最小化(/最大化)函数的值,直到找到局部最小值(/最大值)或直到找到根。

这种方法的问题在于,您可能会在找到根之前陷入局部最小值 (/maximum),并且“认为”没有根,即使根确实存在。

关于c++ - 使用 Brent 算法以初始猜测找到函数 f 的根,但没有区间 [a,b] s.t. f(a)f(b)<0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23933250/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com