FORTRAN 90,函数声明,警告:未设置(1)功能'f'的返回值[-Wreturn-type]

问题描述 投票:0回答:1

我是Fortran的新手,我的代码遇到了问题。它确实可以编译,但是有一个错误:警告:未设置函数“ f”在(1)的返回值[-Wreturn-type]。我用geany。

下面是我的代码。感谢您的提前帮助!

        program ROVNICANEWTON

        implicit none

        integer k
        double precision x0, f, df

        k=0
        x0=2d0

        if (abs(f(x0)) .lt. (0.0000000001)) then
         go to 20
        else
         k=k+1
         x0=x0-f(x0)/df(x0)
         print *, k 
        end if

20     continue    

    open(30, file='NEWTON.txt', status='unknown')
        write(30,*) 'x = ', x0  
    close(30)    
        END PROGRAM

        double precision function f(x)
        implicit none
        double precision, intent(in) :: x

        f(x)=(x**(x**2))-1000

        return
        end function f

        double precision function df(x)
        implicit none
        double precision, intent(in) :: x

        df(x)=2*x**(2+x**2)

        return
        end function df 
fortran gfortran geany
1个回答
0
投票

我认为,这种情况下的错误消息使您误入歧途。这表明您未在为函数创建返回值,而实际上您尝试执行的行在语法上是不正确的。

请记住,每当函数执行时,x将具有特定值,因此返回值f也必须具有特定值:

double precision function f(x)
    implicit none
    double precision, intent(in) :: x
    f = (x**(x**2)) - 1000
end function f

类似地,您需要从(x)行中删除df(x)=2*x**(2+x**2)

© www.soinside.com 2019 - 2024. All rights reserved.