Кажется, этот вопрос / ответ немного устарел, и, поскольку я считаю, что gnuplot немного изменился в последних версиях, возможно, ответ должен быть обновлен.
Я нашел здесь хорошее и компактное решениепо этому: http://gnuplot.10905.n7.nabble.com/Vector-Fields-td3627.html
, о котором я расскажу для удобства:
set xrange [-5:5]
set yrange [-5:5]
# only integer x-cordinates
set samples 11
# only integer y-cordinates
set isosamples 11
# we need data, so we use the special filename "++", which
# produces x,y-pairs
plot "++" using 1:2:1:(2.*$2) with vectors
Здесь исходным вопросом было, как построить векторное поле F(x,y) = <x, 2y>
.Хитрость в сюжете "++", который является специальным именем файла, которое позволяет использовать функции в спецификаторе using
.
Так что, как сказал @Jan в своем ответе, gnuplot нужно 4 поля вфайл данных для построения векторного поля, но здесь поля являются синтетическими и создаются с двумя функциями.
Эквивалентная формулировка с использованием определенных функций может быть:
set xrange [-5:5]
set yrange [-5:5]
dx(x) = x
dy(x) = 2*x
plot "++" using 1:2:(dx($1)):(dy($2)) w vec
См. help special-filenames
длядальнейшие подробности.
HIH