Fortran Coder

查看: 2105|回复: 2
打印 上一主题 下一主题

[数值问题] 二分法无法处理浮点数,出现断点如何解决

[复制链接]

2

帖子

1

主题

0

精华

新人

F 币
22 元
贡献
5 点
跳转到指定楼层
楼主
发表于 2023-3-20 16:23:53 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 kyra 于 2023-3-21 08:54 编辑

[Fortran] 纯文本查看 复制代码
module NUMERTICAL
    implicit none
    real, parameter :: zero = 0.00001
    contains
    real function bisect(A,B)!这是声明bisect返回值为一个浮点数
    IMPLICIT NONE
    real A,B
    real C
    real FA
    real FB
    real FC
    
    
    C=(A+B)/2.0
    FC=func(C)
    
    do while (abs(fc)> zero)
        FA = func(A)
        FB = func(B)
        if(FA*FB < 0)then
            B=C
            C=(A+B)/2.0
        else
            A=C
            C=(A+B)/2.0
        end if 
        FC = FUNC(C)
    end do
    bisect = C
    return
    end function
    
    
    
    real function func(X)
    implicit none
    real X
    FUNC = (X+3)*(X-3)
    return
    end function
    end module
    
    program main
    use NUMERTICAL
    implicit none
    real A,B
    real ANS
    do while(.true.)
        write(*,*) '输入两个猜测值'
        read(*,*)A,B
        if(func(A)*func(B)<0) exit
        write(*,*) "不正确的猜测"
    end do
    
    ANS=bisect(A,B)
    write(*,"('x=',F6.3)")ans
    stop
    end
    

当输入浮点数如2.1和4.1时就会显示出现断点,求助大佬如何解决
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

2

帖子

1

主题

0

精华

新人

F 币
22 元
贡献
5 点
沙发
 楼主| 发表于 2023-3-31 16:19:54 | 显示全部楼层
弄懂了,谢谢
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-15 16:32

Powered by Tencent X3.4

© 2013-2024 Tencent

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