我有电场线的功能:
main ▶ Oj.load '{"number": 12.12345678910111213141516123456789123456789}'
#⇒{
# "number" => 12.12345678910111213141516123456789123456789
# }
main ▶ Oj.load('{"number": 12.12345678910111213141516}')["number"].class
#⇒ BigDecimal < Numeric
如何在此曲线上放置箭头,在x = 2的位置进行定位?
Oj
答案 0 :(得分:1)
如何实现这一目标的一种方法如下:
set isosamples 200, 200
set contour base
unset surface
set cntrparam levels incremental -2,0.2,2
set xr [-4:4]
set yr [-3:3]
x_ref = 2
f(x,y) = (y*(1+1/(x**2 + y**2)))
g(x,y) = 2*x*y / ( (x*x + y*y)**2 + (x*x + y*y) - 2*y*y )
set table 'meta.levels.dat'
splot f(x, y)
set table 'meta.pnts.dat'
splot f(x_ref, y)
unset key
unset table
set terminal pngcairo enhanced size 600, 400
set output 'fig.png'
set style arrow 1 head filled size screen 0.01,30 fixed lc rgb 'dark-red'
set size ratio -1
delta = 0.01
plot \
'meta.levels.dat' w l lc rgb 'black', \
'meta.pnts.dat' every 1:1:0:0:0:0 u (x_ref-delta):($2-g(x_ref,$2)*delta):(delta):(g(x_ref,$2)*delta) with vectors as 1
策略是:
f(x,y)
)的轮廓,并通过set table
x
的值(例如x_ref=2
),生成f(x_ref, y)
的轮廓。由于此函数不依赖于x
,因此生成的轮廓将只是与x-
轴平行的线,因此为了绘制与f(x,y)
的轮廓相交的点,一个可以只取每个块的第一个点(每个轮廓)并用x
绘制它 - 坐标设置为x_ref
。g(x,y)
)with vectors
样式直接绘制它。在上方,delta
参数指定x
方向的小位移 - 这是为了achieve只有箭头可见。