2017-09-07 44 views
1

所以,当我在我的FORTRAN90代码中使用log功能,它抛出以下编译时错误:错误:在(1)使用数()对数不可分类的声明

newtonf90.f90:21: 

f = ((x - 2.d0)**2) \xE2\x88\x92 log(x) 
1 
Error: Unclassifiable statement at (1) 

注意:在使用gfortran

那么,我所犯的错误是什么?

整个代码:

implicit none 
double precision p0,p,df,f,tol 
integer imax,i 

p0=1.d0 
imax=70 
tol=0.0001 
do i=1, imax 
    p = p0 - f(p0)/df(p0) 
    write(2,*) i , p , dabs(p0-p) 
    if (dabs(p0-p) .lt. tol) stop 
    p0=p 
enddo 
stop 
end program newton 

function f(x) 
implicit none 
double precision x,f 
f = ((x - 2.d0)**2) − log(x) 
return 
end function f 

function df(x) 
implicit none 
double precision x,df 
df=2*(x - 2.d0) - 1/x 
return 
end function df 

回答

2

字符 “登录” 之前是不是减号。删除它并在其位置写一个适当的“ - ”。

+1

我很好奇 - 哪种语言/键盘/编辑器允许短划线被意外输入,而不是减号? –

+0

我猜想一个意外的复制粘贴可能是错误的根源。当通过HTML页面或PDF文档传递代码时,这可能会很容易发生。纯文本编辑器没有理由抱怨破折号。 –