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