2017-09-07 49 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文檔傳遞代碼時,這可能會很容易發生。純文本編輯器沒有理由抱怨破折號。 –