1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
#
# Exercise the special functions in external library libcerf.
# These are only present if libcerf was found during configuration/build
# of the current gnuplot executable.
#
if (!strstrt(GPVAL_COMPILE_OPTIONS,"+LIBCERF")) {
print "This copy of gnuplot was not linked against libcerf"
exit;
}
save_encoding = GPVAL_ENCODING
set encoding utf8
set title "Voigt Profile VP(x, σ, γ)"
set xrange [-5:5]
set yrange [0.0:0.3]
set xtics out nomirror
set ytics in mirror format "%.2f"
set mxtics
set mytics
set sample 200
fwhm1 = VP_fwhm(1.53,0.0)
fwhm2 = VP_fwhm(1.30,0.5)
fwhm3 = VP_fwhm(1.00,1.0)
fwhm4 = VP_fwhm(0.00,1.8)
set style arrow 1 heads # size screen 0.008,90.,90.
set arrow 1 from -fwhm1/2., VP(-fwhm1/2., 1.53, 0.0) to fwhm1/2., VP(fwhm1/2., 1.53, 0.0) as 1 lc 1
set arrow 2 from -fwhm2/2., VP(-fwhm2/2., 1.30, 0.5) to fwhm2/2., VP(fwhm2/2., 1.30, 0.5) as 1 lc 2
set arrow 3 from -fwhm3/2., VP(-fwhm3/2., 1.00, 1.0) to fwhm3/2., VP(fwhm3/2., 1.00, 1.0) as 1 lc 3
set arrow 4 from -fwhm4/2., VP(-fwhm4/2., 0.00, 1.8) to fwhm4/2., VP(fwhm4/2., 0.00, 1.8) as 1 lc 4
set label 1 "FWHM" at 0, 0.07 center
plot VP(x,1.53,0.0) title "σ=1.53 γ=0.00", \
VP(x,1.30,0.5) title "σ=1.30 γ=0.50", \
VP(x,1.00,1.0) title "σ=1.00 γ=1.00", \
VP(x,0.00,1.8) title "σ=0.00 γ=1.80"
pause -1 "<cr> to continue"
unset arrow; unset label
set yrange [-1:1]
set title "Faddeeva/Voigt Function"
set key samplen 0.5
plot real( faddeeva(x) ) lw 2, \
imag( faddeeva(x) ) lw 2, \
real(cdawson(x)) lt -1 lw 0.5 title "Dawson's Integral"
pause -1 "<cr> to continue"
reset
unset key
set view map
set bmargin at screen 0.1
set tmargin at screen 0.9
set sample 200
set isosamples 200, 200
set size ratio 1 1,1
set cbtics ("0" -pi, "2π" pi)
set title "Complex error function cerf( x + iy )"
set auto xy
set urange [ -3 : 3 ]
set vrange [ -3 : 3 ]
set tics scale 0
set cblabel "Phase Angle"
set cblabel offset character -2, 0, 0 font "" textcolor lt -1 rotate by -270
set cbrange [ -pi : pi ] noreverse nowriteback
set contour
set cntrparam levels discrete 0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50, 100, 200, 500
set cntrlabel onecolor
set palette positive nops_allcF maxcolors 0 gamma 1.5 color model HSV
set palette defined ( 0 0 1 1, 1 1 1 1 )
Hue(x,y) = (pi + atan2(-y,-x)) / (2*pi)
phase(x,y) = hsv2rgb( Hue(x,y), sqrt(x**2+y**2), 1. )
rp(x,y) = real(f(x,y))
ip(x,y) = imag(f(x,y))
color(x,y) = hsv2rgb( Hue( rp(x,y), ip(x,y) ), abs(f(x,y)), 1. )
f(x,y) = cerf(x+y*{0,1})
splot '++' using 1:2:(color($1,$2)) with pm3d lc rgb variable nocontour, \
'++' using 1:2:(abs(cerf($1+$2*{0,1}))) with lines nosurf lt -1
pause -1 "<cr> to continue"
reset
set encoding save_encoding
|