盛世青衫 发表于 2024-4-10 14:54:01

求助大佬,在某个位置这个二分算法会陷入死循环求帮助

大佬好,想重点请教一下一个问题。我这里是一个简单的二分计算,其中pl,pr分别是上界和下界。一开始计算还比较好。
但是他在某种情况下会一直循环,并且循环的时候上界和下界不进行重置,也不对我需要的值进行二分重新赋值,就按照某一个数不断死循环,请问这可能是什么情况呢。
下面是我对于这个循环的退出条件
if((abs(hiter-dis)<htoler).or.((abs(pl-pr)<htoler).and.(k.gt.5)))then   
      jiaodu=0.97*alpha_before
      exit
      end if
我发现他这个没有退出的原因是没有达到我给他的htoler,但是如果我增大这个残差的话,他的计算就不准确了,请问为什么在如图所示的二分代码中他没有更新变量值,而是一直死循环呀。
感谢


li913 发表于 2024-4-11 11:13:02

在给定区间,函数不是单调的,二分法可能失效。

weixing1531 发表于 2024-4-11 13:36:10

推荐用布伦特 (Brent )法求解

盛世青衫 发表于 2024-4-11 15:57:51

li913 发表于 2024-4-11 11:13
在给定区间,函数不是单调的,二分法可能失效。

感谢回复,找到原因了
页: [1]
查看完整版本: 求助大佬,在某个位置这个二分算法会陷入死循环求帮助