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

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

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

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

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

Функцию по этим точкам можно вычислять в прямоугольнике 1 (параметр S, который оп­ре­де­ля­ет точки сетки, используемые при локальном восполнении, равен 0) и в пря­мо­у­голь­ни­ке 2 (S = 1) (см. [17]). 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) разностных отношений определенного вида (см. [17]), заданных на K-ом элементе сетки, описываемой мас­сивом X.