我是Fortran的新手。我正在尝试计算一个简单的函数,但我对指数有问题。如果我运行以下内容:
module procedures
contains
double precision function f(x)
f = x**sigma - alpha*x**sigma + 5
return
end function f
end module procedures
program main
use procedures
parameter (alpha = 5.0, sigma = 2)
write(6,"('f(3) = ',1f15.8)") f(3.0)
end program main
我得到f(3)= 6,即使答案应该是-31。我觉得我错过了一些关于取幂的非常基本的东西。
答案 0 :(得分:1)
小心你的模块。您在主程序中定义了alpha和sigma但未在模块中定义,因此,alpha和sigma在模块中等于零,然后:对于任何x值,x ** 0 - 0 * x ** 0 + 5 = 6。
您不需要另外一个模块。定义上面模块中的参数。由于主程序使用此模块,因此这些值在模块,主程序以及具有“使用程序”的任何其他程序段中都有效。在它。