2013-04-06 45 views
5

Bất cứ ai có thể cho tôi biết cách vẽ số mũ phức tạp bằng gnuplot. Tôi đã cố gắng vẽ chúng bằng cách sử dụng tập lệnh này, nhưng đối số i không được nhận dạng.Gnuplot và số mũ phức tạp

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

Trả lời

13

Gnuplot không hiểu i như sqrt(-1) vì biến i không được gán một giá trị bằng gnuplot - nó chỉ là một tên biến như xa như nó là có liên quan. Gnuplot có thể hiểu và vận dụng số phức bằng cách sử dụng định dạng

z = {a,b} 

đại diện cho một số phức tạp z = (a + ib) trong ký hiệu bằng văn bản. Vì vậy, tôi có thể được định nghĩa

i = {0.0,1.0} 

Hiện vẫn còn là vấn đề của những gì bạn sẽ nhận được khi bạn sau đó đồ thị

plot exp(i*x) 

Tất cả các điểm được 'undefined' bởi vì họ có một thành phần tưởng tượng. (Mặc dù, h(x) = exp(i*x)+exp(-i*x) sẽ âm mưu tốt vì nó là hoàn toàn thực sự.) Vấn đề là gnuplot có thể âm mưu chỉ số lượng thực. Bạn có thể thử

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

để hình dung các thành phần riêng biệt, hoặc bạn có thể thực hiện một âm mưu tham số:

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

Có cách nào để lừa? Tôi có nghĩa là để vẽ một số chức năng tội lỗi thay vì e^ix ??? – 71GA

+0

Tôi nghĩ rằng đó sẽ là 'âm mưu tưởng tượng (exp (i * x))', vì exp (i * x) = cos (x) + i * sin (x). – andyras

+0

Lưu ý rằng 'exp (ix) = cos (x) + i sin (x)'. – Bernhard

Các vấn đề liên quan