谁能告诉我如何使用gnuplot绘制复杂的指数.我尝试使用此脚本绘制它们,但i无法识别参数.
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}$"
Run Code Online (Sandbox Code Playgroud)
and*_*ras 15
Gnuplot不理解i,sqrt(-1)因为变量i没有被gnuplot赋值 - 就它而言,它只是另一个变量名.Gnuplot可以使用该格式理解和操纵复数
z = {a,b}
Run Code Online (Sandbox Code Playgroud)
表示z = (a + ib)书面表示法中的复数.所以,我可以定义
i = {0.0,1.0}
Run Code Online (Sandbox Code Playgroud)
当你绘制图形时,仍然存在问题
plot exp(i*x)
Run Code Online (Sandbox Code Playgroud)
所有的点都是"未定义的",因为它们有一个虚构的组件.(虽然,h(x) = exp(i*x)+exp(-i*x)因为它纯粹是真实的,所以会很好地绘制.)问题是gnuplot只能绘制实数.你可以试试
plot real(exp(i*x)), imag(exp(i*x))
Run Code Online (Sandbox Code Playgroud)
单独显示组件,或者您可以创建参数图:
set parametric
plot real(exp(i*t)), imag(exp(i*t))
Run Code Online (Sandbox Code Playgroud)