RES xdat adat
¶RES xdat ydat adat
¶RES xdat ydat zdat adat
¶mglGraph
: mglData
Hist (const mglDataA &
x, const mglDataA &
a, const char *
opt=""
)
¶mglGraph
: mglData
Hist (const mglDataA &
x, const mglDataA &
y, const mglDataA &
a, const char *
opt=""
)
¶mglGraph
: mglData
Hist (const mglDataA &
x, const mglDataA &
y, const mglDataA &
z, const mglDataA &
a, const char *
opt=""
)
¶HMDT
mgl_hist_x (HMGL
gr, HCDT
x, HCDT
a, const char *
opt)
¶HMDT
mgl_hist_xy (HMGL
gr, HCDT
x, HCDT
y, HCDT
a, const char *
opt)
¶HMDT
mgl_hist_xyz (HMGL
gr, HCDT
x, HCDT
y, HCDT
z, HCDT
a, const char *
opt)
¶Создают распределения данных. Они не рисуют данные. Функции могут быть полезны в случае когда данные пользователя определены на случайно расположенных точка (например, после PIC расчетов) и он хочет построить график, требующий регулярных данных (данных на сетках). Диапазон сеток равен диапазону осей координат. Массивы x, y, z определяют положение (координаты) точек. Массив a задает значения данных. Число точек в результате res определяется опцией value
(по умолчанию mglFitPnts=100).
dat 'eq'
¶dat 'eq' vdat
¶dat 'eq' vdat wdat
¶mglGraph
: void
Fill (mglData &
u, const char *
eq, const char *
opt=""
)
¶mglGraph
: void
Fill (mglData &
u, const char *
eq, const mglDataA &
v, const char *
opt=""
)
¶mglGraph
: void
Fill (mglData &
u, const char *
eq, const mglDataA &
v, const mglDataA &
w, const char *
opt=""
)
¶void
mgl_data_fill_eq (HMGL
gr, HMDT
u, const char *
eq, HCDT
v, HCDT
w, const char *
opt)
¶Заполняют значения массива ‘u’ в соответствии с формулой в строке eq. Формула – произвольное выражение, зависящее от переменных ‘x’, ‘y’, ‘z’, ‘u’, ‘v’, ‘w’. Координаты ‘x’, ‘y’, ‘z’ полагаются в диапазоне изменения осей координат. Переменная ‘u’ – значение исходного массива. Переменные ‘v’ и ‘w’ – значения массивов v, w, которые могут быть NULL
(т.е. могут быть опущены).
dat xdat ydat zdat
¶mglGraph
: void
DataGrid (mglData &
u, const mglDataA &
x, const mglDataA &
y, const mglDataA &
z, const char *
opt=""
)
¶void
mgl_data_grid (HMGL
gr, HMDT
u, HCDT
x, HCDT
y, HCDT
z, const char *
opt)
¶Заполняет значения массива ‘u’ результатом линейной интерполяции по триангулированной поверхности, найденной по произвольно расположенным точкам ‘x’, ‘y’, ‘z’. NAN значение используется для точек сетки вне триангулированной поверхности. См. раздел Making regular data, для примеров кода и графика.
dat xdat vdat [sl=-1]
¶dat xdat ydat vdat [sl=-1]
¶dat xdat ydat zdat vdat
¶mglData
: void
Refill (mglDataA &
dat, const mglDataA &
x, const mglDataA &
v, long
sl=-1
, const char *
opt=""
)
¶mglData
: void
Refill (mglDataA &
dat, const mglDataA &
x, const mglDataA &
y, const mglDataA &
v, long
sl=-1
, const char *
opt=""
)
¶mglData
: void
Refill (mglDataA &
dat, const mglDataA &
x, const mglDataA &
y, const mglDataA &
z, const mglDataA &
v, const char *
opt=""
)
¶void
mgl_data_refill_gr (HMGL
gr, HMDT
a, HCDT
x, HCDT
y, HCDT
z, HCDT
v, long
sl, const char *
opt)
¶Заполняет значениями интерполяции массива v в точках {x, y, z}={X[i], Y[j], Z[k]
} (или {x, y, z}={X[i,j,k], Y[i,j,k], Z[i,j,k]
} если x, y, z не 1d массивы), где X,Y,Z
равномерно распределены в диапазоне осей координат и имеют такой же размер как и массив dat. Если параметр sl равен 0 или положительный, то изменятся будет только sl-ый срез.
RES 'ham' ini_re ini_im [dz=0.1 k0=100
]
¶mglGraph
: mglData
PDE (const char *
ham, const mglDataA &
ini_re, const mglDataA &
ini_im, mreal
dz=0.1
, mreal
k0=100
, const char *
opt=""
)
¶HMDT
mgl_pde_solve (HMGL
gr, const char *
ham, HCDT
ini_re, HCDT
ini_im, mreal
dz, mreal
k0, const char *
opt)
¶Решает уравнение в частных производных du/dz = i*k0*ham(p,q,x,y,z,|u|)[u], где p=-i/k0*d/dx, q=-i/k0*d/dy – псевдо-дифференциальные оперторы. Параметры ini_re, ini_im задают действительную и мнимую часть начального распределения поля. Координаты ‘x’, ‘y’, ‘z’ полагаются в диапазоне изменения осей координат. Отмечу, ято в действительности этот диапазон увеличен на 3/2 для уменьшения отражения от границ сетки. Параметр dz задает шаг по эволюционной координате z. Сейчас используется упрощенный вид функции ham – исключены все “смешанные” члены (типа ‘x*p’->x*d/dx). Например, в 2D случае это функция вида ham = f(p,z) + g(x,z,u). Однако, коммутирующие члены (типа ‘x*q’->x*d/dy) разрешены. Переменная ‘u’ используется для амплитуды поля |u|, что позволяет решать нелинейные задачи – например уравнение Шредингера ham="p^2 + q^2 - u^2"
. Вы можете задавать мнимую часть для поглощения волн, например ham = "p^2 + i*x*(x>0)"
, но только для линейной зависимости от переменной ‘i’ (т.е. ham = hre+i*him). См. раздел PDE solving hints, для примеров кода и графика.