Fortran Coder

查看: 652|回复: 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 (89.28 KB, 下载次数: 63)

1712731836293.png
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

22

帖子

8

主题

0

精华

入门

F 币
101 元
贡献
52 点
地板
 楼主| 发表于 2024-4-11 15:57:51 | 只看该作者
li913 发表于 2024-4-11 11:13
在给定区间,函数不是单调的,二分法可能失效。

感谢回复,找到原因了

143

帖子

41

主题

1

精华

宗师

F 币
1250 元
贡献
624 点
板凳
发表于 2024-4-11 13:36:10 | 只看该作者
推荐用布伦特 (Brent )法求解

834

帖子

2

主题

0

精华

大宗师

F 币
3922 元
贡献
2332 点
沙发
发表于 2024-4-11 11:13:02 | 只看该作者
在给定区间,函数不是单调的,二分法可能失效。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-11-1 09:30

Powered by Tencent X3.4

© 2013-2024 Tencent

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