Спасибо
myhand, это то что нужно.
У меня есть еще один вопрос по gnuplot. Я пытаюсь нарисовать линии электрического поля, делаю по аналогии с
http://gnuplot.sourceforge.net/demo/vector.html, но векторы рисуются не правильно, почему то их начало не перпендикулярно к эквипотенциалям.
В примере все нормально, почему есть разница мне не понятно.
Код:
# harmonic number
m=2.
r(x,y)=sqrt(x*x+y*y)
t(x,y)=atan2(y,x)
# potential
# r<1
v1(x,y)=r(x,y)**m/m*cos(m*t(x,y))
# r>1
v2(x,y)=r(x,y)**(-m)/m*cos(m*t(x,y))
# for all r
v(x,y)=(r(x,y) < 1 ? v1(x,y) : v2(x,y))
#electric field
# inside r<1
e1x(x,y)= -r(x,y)**(m-1)*cos((m-1)*t(x,y))
e1y(x,y)= r(x,y)**(m-1)*sin((m-1)*t(x,y))
# r>1
e2x(x,y)= -r(x,y)**(-m-1)*cos((m-1)*t(x,y))
e2y(x,y)= r(x,y)**(-m-1)*sin((m-1)*t(x,y))
# field abы val
enorm1(x,y)=sqrt(e1x(x,y)*e1x(x,y)+e1y(x,y)*e1y(x,y))
enorm2(x,y)=sqrt(e2x(x,y)*e2x(x,y)+e2y(x,y)*e2y(x,y))
dx1(x,y)=e1x(x,y)/enorm1(x,y)
dy1(x,y)=e1y(x,y)/enorm1(x,y)
dx2(x,y)=e2x(x,y)/enorm2(x,y)
dy2(x,y)=e2y(x,y)/enorm2(x,y)
# form for vec ploting x,y,dx,dy
dx(x,y)=(r(x,y) < 1 ? dx1(x,y) : dx2(x,y))
dy(x,y)=(r(x,y) < 1 ? dy1(x,y) : dy2(x,y))
xmin=-2.
xmax=2.
ymin=-2.
ymax=2.
unset autoscale
set xr [xmin:xmax]
set yr [ymin:ymax]
set isosam 31,31
set view map
unset surface
set contour base
set cntrparam order 5
set cntrparam levels auto 30
set cntrparam points 20
unset border
unset xtics
unset ytics
splot v(x,y) w l
set table "equipo2.tmp"
replot
unset table
set term fig
set output "m3.fig"
set size ratio -1
plot "equipo2.tmp" w l
set term x11
set isosam 31,31
set table "field2xy.tmp"
splot v(x,y) w l
unset table
unset autoscale
set xr [xmin:xmax]
set yr [ymin:ymax]
set isosam 31,31
set key under Left reverse
plot "field2xy.tmp" u 1:2:(dx($1,$2)):(dy($1,$2)) w vec, \
"equipo2.tmp" w l
pause -1