Fortran 中的 2º 方程根编码错误

Error in 2º equation roots coding in Fortran

今天我开始使用 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

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

我研究的东西:

表达式中缺少括号。

-b + sqrt(delta) / 2*a

应该是:

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

其他根也一样

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