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

Differential equation in fortran

  1. Jul 7, 2011 #1
    I need to do numerical computation by fourth order Runge Kutta Algorithm
    in fortran. But I stuck in programming because the differential
    equation contains imaginary part.

    Take for e.g. the set of diff.equation are
    x'=(i)y *exp(iwt) ;where i is imaginary no. and w is constant!
    y'=(i)x*exp(iwt)

    I tried to define complex function f and g as
    f=(0,y *exp(iwt))
    g=(0,x *exp(iwt))

    and i defined x and y as real (because the argument of the complex
    no.has to be real,right?/otherwise it doesn't accept)
    But after every iteration,the x and y becomes real as
    x=x0+some linear combination of the function f(which is complex)//and
    real +complex gives complex no. and hence shows error!!!
    So i unable to proceed further! So how should I proceed?
     
  2. jcsd
  3. Jul 10, 2011 #2

    AlephZero

    User Avatar
    Science Advisor
    Homework Helper

    That is wrong, because your definitions of f and g are not the same as your differential equation.

    Try something like this:
    define ZI as a complex constant = (0.0, 1.0)
    Make X, Y, F and G all complex
    and then do
    F = ZI * X * exp(ZI * W * T)

    Alternatively, you could convert this to a set of equations in 4 real variables, the real and imaginary parts of x and y. Since exp(iwt) = cos wt + i sin wt

    If you write x = xr + i xi and y = yr + i yi, where xr, xi, yr, yi are real, then

    i * y *exp(iwt) = (i yr - yi) (cos wt + i sin wt)
    = -yi cos wt + yr sin wt + i (yr cos wt - yi sin wt)

    So you would have

    xr' = -yi cos wt + yr sin wt
    xi' = yr cos wt - yi sin wt
    and similar equations for yr' and yi'
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook