Fortran Coder

查看: 241|回复: 3

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

[复制链接]

22

帖子

8

主题

0

精华

入门

F 币
101 元
贡献
52 点
发表于 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,但是如果我增大这个残差的话,他的计算就不准确了,请问为什么在如图所示的二分代码中他没有更新变量值,而是一直死循环呀。
感谢


1712731836293.png

801

帖子

2

主题

0

精华

大宗师

F 币
3804 元
贡献
2273 点
发表于 2024-4-11 11:13:02 | 显示全部楼层
在给定区间,函数不是单调的,二分法可能失效。

128

帖子

36

主题

1

精华

大师

F 币
1163 元
贡献
594 点
发表于 2024-4-11 13:36:10 | 显示全部楼层
推荐用布伦特 (Brent )法求解

22

帖子

8

主题

0

精华

入门

F 币
101 元
贡献
52 点
 楼主| 发表于 2024-4-11 15:57:51 | 显示全部楼层
li913 发表于 2024-4-11 11:13
在给定区间,函数不是单调的,二分法可能失效。

感谢回复,找到原因了
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-18 19:04

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表