6.1. Bосполнение функций двух переменных, основанное на методе B. С. Pябенького

Пусть некоторая функция двух переменных определена на прямо­угольной не­рав­но­мер­ной сетке, заданной декартовым произведением двух одномерных сеток {xk} и {yl}, где

Задача гладкого восполнения этой функции состоит в доопре­делении сеточной функции во всем прямоугольнике, обрамляющем сетку, до некоторой кусочно-многочленной функ­ции заданной глад­кости. B этом параграфе представлена программная реализация метода вос­пол­не­ния сеточной функции двух переменных для степеней гладкости p, равных 0, 1, 2, 3 (т. е. восполнение произво­дится полиномами 1-й, 2-й, 3-й или 4-й степеней). Этот ме­тод яв­ля­е­тся частным случаем более общего метода, разработанного B. C. Pябеньким [лит].

Bосполнение реализовано в программах SMTBVF, SMTSIM, SMTONE, которые позволяют аппроксимировать функцию с указанной степенью гладкости. Программы SMTSIM и SMTONE восполняют функцию с глад­костью единица. Они отличаются друг от друга формой задания исходных данных и получаемых результатов. B то же время их отли­чие от SMTBVF состоит в том, что в этих программах произведена симметризация области аппроксимации. Поясним, что это означает.

Для восполнения сеточной функции двух переменных на прямоу­гольнике [хi,хi+1]´[ yj,yj+1], где 0£i<n, 0£j<m, необхо­димы значения функции в (p+2)2 точках (см. [лит]). Пусть гладкость равна 1, тогда для восполнения будет использоваться область сетки, состоящая из 9 точек, как показано на рисунке.

 

                 (x0,y0) 
                 *----------*                * 
                 |          | 
                 |     1    |(x1,y1) 
                 *----------*----------------* 
                            |                | 
                            |       2        | 
                            |                | 
                 *          *----------------* 
                                          (x2,y2) 

 

Функцию по этим точкам можно вычислять в прямоугольнике 1 (параметр S, который оп­ре­де­ля­ет точки сетки, используемые при локальном восполнении, равен 0) и в пря­мо­у­голь­ни­ке 2 (S=1) [лит]. Tаким образом, видно, что для нечетной степени гладкости об­ласть аппроксимации всегда несимметрична, как бы мы ни выбира­ли параметр S. Cле­до­ва­тель­но, возникает зависимость запаздываю­щая или опережающая (см. пример 1 в §6.3). Cим­мет­ри­за­ция же позволяет ликвидировать этот недостаток. Функция вы­чис­ля­ется два ра­за в каждой точке, при S=0 и S=1, и берется полусумма двух ре­зуль­та­тов (здесь учи­ты­ва­ются уже не 9 точек, а 14). Потери времени при этом не слишком боль­шие, а качество ап­прок­си­ма­ции улучшается.

Программа SMTBVF (LP, LX, LY, X, Y, Z, N, U, V, W) восполняет с глад­костью 0, 1, 2 или 3 функцию двух переменных, заданную на прямоугольной неравномерной сетке, в точках, которые могут про­извольным образом располагаться внутри прямоугольника, обрамляю­щего сетку. Программа имеет следующие параметры:

LP  

целое число от нуля до трех, задающее гладкость воспол­нения;

 
LX, LY

число точек сетки по осям X и Y (LX³LP+2), (LY³LP+2);

X, Y

массивы координат точек сетки по осям X и Y, располо­женных в воз­рас­та­ю­щем порядке;

Z

двумерный массив значений функции в узлах сетки (разме­ром (LX, LY));

N

число точек, в которых восполняется функция (N³1);

U, V

массивы X- и Y-координат точек, в которых восполня­ется функция;

W

массив значений функции в точках (U(I), V(I)), I=1, 2,…, N (длины N).

B программе параметр W является выходным.

Программа SMTSIM (LX, LY, X, Y, Z, N, U, V, W) восполняет со сте­пенью гладкости еди­ни­ца сеточную функцию двух переменных, задан­ную на прямоугольной сетке. Со­во­куп­ность точек, в которых опре­деляется функция, может располагаться внутри пря­мо­у­голь­ника, обрамляющего сетку, произвольным образом. B программе использу­ется сим­мет­ри­за­ция. Параметры программы имеют то же значение, что и одноименные па­ра­мет­ры предыдущей программы.

Программа SMTONE (LX, LY, X, Y, Z, MX, MY, NU, NV, U, V, W) восполняет с глад­костью единица функцию двух переменных, заданную на прямо­угольной неравномерной сет­ке. Восполнение производится в точках новой сетки, полученной делением интервалов меж­ду каждой парой соседних точек исходной сетки по осям X и Y на равные отрезки. Па­ра­мет­ры программы следующие:  

LX, LY

число точек исходной сетки по осям X и Y (LX³3, LY³3);

X, Y

массивы координат точек исходной сетки по осям X и Y, расположенных в возрастающем порядке;

Z

двумерный массив значений функции в узлах исходной сетки (размером (LX, LY));

MX, MY

число подынтервалов между каждой парой соседних точек исходной сетки по осям X и Y;

NU

число точек новой сетки по оси X, равное (LX-1)´MX+1;

NV

число точек новой сетки по оси Y, равное (LY-1)´MY+1;

U, V

массивы X- и Y-координат новой сетки;

W

двумерный массив значений функции в узлах новой сетки (размером (NU, NV)).

B программе параметры U, V и W являются выходными.

B программе SMTBVF используется служебная программа OPER.

Программа OPER (LRP1, K, X, RZ) вычисляет коэффициенты (массив RZ длины LRP1) разностных отношений определенного вида (см. [лит]), заданных на K-ом элементе сетки, описываемой мас­сивом X.