Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Fortran compile error I can't figure out

  1. Jan 15, 2016 #1
    Hey so I'm getting the error message:
    Code (Text):

    Euler_Method.f90:43.1:
    fun=(c)(1-c)/(d+2)
    1
    Error: Unclassifiable statement at (1)
     
    And here is my code:
    Code (Fortran):

    PROGRAM Euler_Method

    !-------------------------------------------------------------------
    ! The purpose of this program is to read in endpoints, initial
    !conditions, and a stepsize from the user, and then use Euler's
    !method to approximate the value of the function f(x,y)=y(1-y)/x+2
    !over that interval.
    !-------------------------------------------------------------------

    IMPLICIT NONE

    REAL:: alpha, h, inr, x, y
    INTEGER:: i, b

    WRITE(*,*) "Please enter the rightmost endpoint"
    WRITE(*,*) "of the interval over which you wish to find an"
    WRITE(*,*) "approximation of f(x,y). (Must be integer value)"
    READ(*,*) b

    WRITE(*,*) "Please enter x of y(x)."
    READ(*,*) inr
    WRITE(*,*) "Please enter y of y(x)."
    READ(*,*) alpha

    WRITE(*,*) "Please enter the stepsize."
    READ(*,*) h

    DO i=0, b
    y=2
    x=0
    x=x+h*fun(x,y)
    y=y+h
    !Output at each step
    WRITE(*,*) x
    END DO

    WRITE(*,*)"The final approximation is:",x,"."

    CONTAINS
    REAL FUNCTION fun(c,d)
    IMPLICIT NONE
    REAL, INTENT(in):: c,d
    fun=(c)(1-c)/(d+2)
    RETURN
    END FUNCTION fun

    END PROGRAM Euler_Method
     
     
  2. jcsd
  3. Jan 15, 2016 #2

    Krylov

    User Avatar
    Science Advisor
    Education Advisor

    You forgot to add a "*" to multiply. It should be "fun=(c)*(1-c)/(d+2)".
     
  4. Jan 15, 2016 #3

    Samy_A

    User Avatar
    Science Advisor
    Homework Helper

    fun=(c)(1-c)/(d+2) should be fun=(c)*(1-c)/(d+2), I think.

    EDIT: lol
     
  5. Jan 15, 2016 #4

    Mark44

    Staff: Mentor

    @gabforse, Krylov and Samy_A both figured out the reason for your compile error. The lesson for you is that you can't use mathematics or physics notation in programming languages. To denote multiplication, you can't just put symbols next to each other, as in ab; you have to explicitly add the multiplication operator *.

    Another difference the new programming students stumble on is that in mathematics, = means "equal to." In many programming languages, = is used to assign a value to a variable, and a different operator is used to compare two values for equality. Fortran uses .EQ., and newer Fortran versions use == as well (taking a cue from C, C++, and others).
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Fortran compile error I can't figure out
Loading...