Differential equation in fortran

Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
1 reply · 4K views
nirajaryal
Messages
1
Reaction score
0
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?
 
Physics news on Phys.org
nirajaryal said:
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?

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'