喋喋不休没有按照我的预期发挥作用

时间:2018-01-25 19:02:16

标签: fortran

我是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。我觉得我错过了一些关于取幂的非常基本的东西。

1 个答案:

答案 0 :(得分:1)

小心你的模块。您在主程序中定义了alpha和sigma但未在模块中定义,因此,alpha和sigma在模块中等于零,然后:对于任何x值,x ** 0 - 0 * x ** 0 + 5 = 6。

您不需要另外一个模块。定义上面模块中的参数。由于主程序使用此模块,因此这些值在模块,主程序以及具有“使用程序”的任何其他程序段中都有效。在它。