5.18 Распределение данных

Команда MGL: hist RES xdat adat
Команда MGL: hist RES xdat ydat adat
Команда MGL: hist 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).

Команда MGL: fill dat 'eq'
Команда MGL: fill dat 'eq' vdat
Команда MGL: fill 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, HCDTv, HCDTw, const char *opt)

Заполняют значения массива ‘u’ в соответствии с формулой в строке eq. Формула – произвольное выражение, зависящее от переменных ‘x’, ‘y’, ‘z’, ‘u’, ‘v’, ‘w’. Координаты ‘x’, ‘y’, ‘z’ полагаются в диапазоне изменения осей координат. Переменная ‘u’ – значение исходного массива. Переменные ‘v’ и ‘w’ – значения массивов v, w, которые могут быть NULL (т.е. могут быть опущены).

Команда MGL: datagrid 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, для примеров кода и графика.

Команда MGL: refill dat xdat vdat [sl=-1]
Команда MGL: refill dat xdat ydat vdat [sl=-1]
Команда MGL: refill 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-ый срез.

Команда MGL: pde 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, для примеров кода и графика.