2013-04-06 12 views
5

gnuplotを使って複雑な指数関数を描く方法を教えてもらえますか?私はこのスクリプトを使って描画しようとしましたが、引数iは認識されません。Gnuplotと複素指数

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}$" 

答えて

13

変数iはgnuplotが値を割り当てられていないため、gnuplotはsqrt(-1)としてiを理解していない - それは限り、それは懸念しているだけで、別の変数名です。 gnuplotはフォーマット記述された表記の複素数z = (a + ib)を表し

z = {a,b} 

を使用して複素数を理解し、操作することができます。だから、私は彼らが虚数成分を持っているので、あなたは、グラフ

plot exp(i*x) 

すべてのポイントが「未定義」しているときになるだろう何の問題がまだある

i = {0.0,1.0} 

を定義することができます。 (しかし、h(x) = exp(i*x)+exp(-i*x)は純粋に実在しているのでうまくプロットしますが)問題は、gnuplotが実数のみをプロットできることです。カンニングする方法はあり

set parametric 
plot real(exp(i*t)), imag(exp(i*t)) 
+0

:あなたは個別のコンポーネントを視覚化するために、またはあなたは、パラメトリックプロットを作ることができる

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

を試みることができますか?私は代わりにいくつかの罪関数を描くことを意味しますか? – 71GA

+0

exp(i * x)= cos(x)+ i * sin(x)であるので、それは 'plot imag(exp(i * x))'と思う。 – andyras

+0

'exp(ix)= cos(x)+ sin(x)'に注意してください。 – Bernhard