Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Gnuplot and complex exponentials

Tags:

gnuplot

Could anyone tell me how to draw complex exponentials using gnuplot. I tried to draw them using this script, but argument i isn't recognized.

set terminal epslatex color colortext size 9cm,5cm
set size 1.5,1.0
set output "eulerjeva_identiteta_1.tex"

set style line 1 linetype 1 linewidth 3 linecolor rgb "#FF0055"
set style line 2 linetype 2 linewidth 1 linecolor rgb "#FF0055"
set style line 3 linetype 1 linewidth 3 linecolor rgb "#2C397D"
set style line 4 linetype 2 linewidth 1 linecolor rgb "#2C397D"
set style line 5 linetype 1 linewidth 3 linecolor rgb "#793715"
set style line 6 linetype 2 linewidth 1 linecolor rgb "#793715"
set style line 7 linetype 1 linewidth 3 linecolor rgb "#b1b1b1"
set style line 8 linetype 3 linewidth 1 linecolor rgb "#b1b1b1"

set grid

set samples 7000

set key at graph .95, 0.4
set key samplen 2
set key spacing 0.8

f(x) = exp(i*x)
g(x) = exp(-i*x)
h(x) = exp(i*x)+exp(-i*x)

set xrange [-2*pi:2*pi]
set yrange [-1.2:1.2]

set xtics ("$0$" 0, "$\\pi$" pi, "$-\\pi$" -pi)
set ytics ("$1$" 1, "$-1$" -1)

set xlabel "$x$"

plot [-2*pi:2*pi] f(x) ls 1 title "$\\e^{ix}$", g(x) ls 3 title "$\\e^{-ix}$", h(x) ls 5 title "$\\e^{ix} + \\e^{-ix}$" 
like image 889
71GA Avatar asked Apr 06 '13 13:04

71GA


1 Answers

Gnuplot doesn't understand i as sqrt(-1) because the variable i is not assigned a value by gnuplot--it is just another variable name as far as it is concerned. Gnuplot can understand and manipulate complex numbers using the format

z = {a,b}

which represents a complex number z = (a + ib) in written notation. So, i could be defined

i = {0.0,1.0}

There is still the problem of what you would get when you then graph

plot exp(i*x)

All the points are 'undefined' because they have an imaginary component. (Although, h(x) = exp(i*x)+exp(-i*x) would plot fine since it is purely real.) The problem is that gnuplot can plot only real quantities. You could try

plot real(exp(i*x)), imag(exp(i*x))

to visualize the components separately, or you could make a parametric plot:

set parametric
plot real(exp(i*t)), imag(exp(i*t))
like image 200
andyras Avatar answered Oct 01 '22 01:10

andyras