我是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
我认为,这种情况下的错误消息使您误入歧途。这表明您未在为函数创建返回值,而实际上您尝试执行的行在语法上是不正确的。
请记住,每当函数执行时,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)