2013-09-12 2 views
1

Я новичок в Gnuplot, и у меня проблема с попыткой выяснить, как графа в полярных координатах для школьного задания. Меня беспокоит то, что мы не переходим на другие системы координат, такие как Polar или Parametric, для Gnuplot, и, как мне кажется, учебные уроки в Интернете, как представляется, предполагают некоторые базовые знания и просто говорят мне, что я должен «установить полярность».Gnuplot: Графические и определяющие переменные в полярных координатах

Вот проблема, которую я пытаюсь решить:

Электронная плотность вокруг конкретной молекулы с центром в начале координат описывается

п (г, тета) = [соз (г) ]^2 * {1+ [cos (theta)]^2} * exp (-r^2/25)

где r и theta - обычные полярные координаты [например, (x, y) = (r * соз (тета), г * Sin (тета))].

Напишите скрипт gnuplot elec.gpl, который генерирует поверхностный график этой функции в области x = -5..5 и y = -5..5. Установите скрипт, так что

Gnuplot> elec.gpl

генерирует сюжет в виде файла под названием «припиской» elec.ps

Поскольку я совершенно незнаком с построения графиков Gnuplot в полярных координатах, я я в тупике. Я испытанный несколько различных вещей, в том числе следующие:

set terminal png enhanced 
    set output 'elec.ps' 
    set polar 
    set angle degrees 
    set title 'Electron Density Around Molecule' 
    set xrange[-5:5] 
    set yrange[-5:5] 
    set grid 
    set grid polar 
    plot (cos(x))^2 *(1+(cos(y))^2)*exp(-x^2/25) 
    quit 

Я попытался изменить й до г, у к т, у к Theta, и т.д. Я просто не могу понять, как Gnuplot хочет, чтобы определить полярные координаты. Есть ли способ переопределить x как r * cos (theta) и y как r * sin (theta), а затем позволить мне устанавливать входы и диапазоны для r и theta?

Благодарим за помощь! :)

ответ

1

Режим polar позволяет построить функцию в зависимости от одного параметра t, который используется как угол, см., Например, gnuplot polar demo. Таким образом, вы можете построить одну «траекторию» для фиксированного радиуса.

Как вы хотите визуализировать распределение плотности, я думаю, вам лучше с тепловой картой. Я предлагаю использовать режим parametric, в качестве радиуса используется одна фиктивная переменная, другая - как угол тета. Для лучшей читаемости я называю фиктивные переменные соответствующим образом (с set dummy ...), но для диапазонов вы должны придерживаться оригинальных имен фиктивных имен u и v. Так вот пример:

reset 
set terminal pngcairo size 900,800 
set output 'elec.png' 

set title 'Electron Density Around Molecule' 

set parametric 
set dummy r, theta # instead of u,v 
set urange[0:1.5*pi] # r 
set vrange[0:2*pi] # theta 
set isosamples 200 

set size ratio 1 
set autoscale fix 
set pm3d map 
set palette defined (0 'white', 1 'red') 

splot r*cos(theta), r*sin(theta), \ 
     cos(r)**2 + (1 + cos(theta)**2)*exp(-r**2/25) with pm3d t '' 

В режиме parametric необходимо указать три функции для splot в зависимости от фиктивной переменной (здесь r и theta), которые spearated запятыми.

Результат:

enter image description here

Теперь вы можете пойти дальше и расширить сюжет в соответствии с вашими потребностями.

+0

Это было очень полезно. Большое спасибо.Теперь у меня есть гораздо лучшая идея о том, какой режим использовать, независимо от того, с каким типом уравнения я имею дело. –

Смежные вопросы