2017-09-07 3 views
1

Alors, quand j'utilise la fonction log dans mon code Fortran90 il jette l'erreur de compilation suivante:Erreur: déclaration Inclassable à (1) en utilisant le log() logarithme

newtonf90.f90:21: 

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

Note: L'utilisation gfortran

Alors, quelle est l'erreur que je fais?

Le code entier:

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 

Répondre

2

Le caractère avant "log" est pas un signe moins. Supprimez-le et écrivez un "-" approprié à sa place.

+1

Je suis curieux - quelle langue/clavier/éditeur est-ce qui permet à un tiret d'être accidentellement entré, au lieu du signe moins? –

+0

Je suppose qu'un copier-coller accidentel est la source probable d'erreur. Lorsque vous passez le code via une page HTML ou un document pdf, cela peut se faire facilement. Un éditeur de texte brut n'a aucune raison de se plaindre d'un tiret. –