Fortran中2º方程根编码错误

时间:2018-10-28 01:01:44

标签: fortran gfortran fortran90

今天,我开始使用Fortran编码方程式和代数表达式(我在Debian(Parrot-home OS)和Geany中使用gfortran)。

问题是,我以与在互联网上看到的模式相同的方式(或相等的方式)进行编码,而x'和x''的根却只有错误的含义。

program equacao2grau
    real delta, a, b, c, x, x2
    complex sqrt
    print*, "This program calc 2º equations"
    print*, "Give the values 'A', 'B'e 'C'"
    read*, a         !Getting values
    read*, b         !       for
    read*, c         !resolution
    if (a /= 0) then          !if 'a' be different of 0
        delta = b**2 - 4*a    !do delta
    end if

    print*, delta = b**2 - 4*a*c

    if (a .EQ. 0) then
        stop
    end if
        if (delta .EQ. 0) then
            print*, "The value is", (-b / 2*a)
                stop
        end if
        if (delta .GT. 0) then
            print*, "The roots are", -b + sqrt(delta) / 2*a
            print*, "e", -b - sqrt(delta) / 2*a
            stop
        end if
end

我知道,这是不完整的,但是我很沮丧,没有找到任何正确的结果。

我研究过的东西

1 个答案:

答案 0 :(得分:1)

您在表达式中缺少方括号。

-b + sqrt(delta) / 2*a

应该是:

(-b + sqrt(delta)) / (2*a)

其他根系也一样。

编辑 而且,正如@albert所指出的,您在delta公式中省略了c。 此外,正如@IanBush所说,必须删除complex sqrt的声明。 并始终使用implicit none