Научная статья на тему 'Численная оптимизация на основе устойчивой сортировки'

Численная оптимизация на основе устойчивой сортировки Текст научной статьи по специальности «Математика»

CC BY
171
42
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ЧИСЛЕННАЯ ОПТИМИЗАЦИЯ / NUMERICAL OPTIMIZATION / ПАРАЛЛЕЛЬНАЯ ЛОКАЛИЗАЦИЯ ЭКСТРЕМУМОВ / PARALLEL LOCALIZATION OF EXTREMA / СОРТИРОВКА / SORTING

Аннотация научной статьи по математике, автор научной работы — Бондаренко А.В.

Изложены распараллеливаемые алгоритмы локализации и вычисления экстремумов функций с приложением к различным численным методам. Алгоритмы построены на основе сортировки последовательности с явно заданным взаимно однозначным соответствием входных и выходных индексов. Экстремумы локализуются путем сравнения индексов без накопления погрешности

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по математике , автор научной работы — Бондаренко А.В.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Presented parallelized algorithms for the localization and computation of extrema of functions with the application to different numerical methods. Algorithms are constructed on the basis of sorting of sequence with obviously set univocity of input and output indexes. Extrema are localized by comparison of indexes without accumulation of an error.

Текст научной работы на тему «Численная оптимизация на основе устойчивой сортировки»

Раздел X. Информатика

УДК 681. 3.06: 681. 323 (519.6)

А.В. Бондаренко

ЧИСЛЕННАЯ ОПТИМИЗАЦИЯ НА ОСНОВЕ УСТОЙЧИВОЙ СОРТИРОВКИ

Аннотация. Изложены распараллеливаемые алгоритмы локализации и вычисления экстремумов функций с приложением к различным численным методам. Алгоритмы построены на основе сортировки последовательности с явно заданным взаимно однозначным соответствием входных и выходных индексов. Экстремумы локализуются путем сравнения индексов без накопления погрешности.

Ключевые слова: численная оптимизация, параллельная локализация экстремумов, сортировка.

A.V. Bondauenko

NUMERICAL OPTIMIZATION BASED ON SUSTAINABLE SORTING

Absrtact. Presented parallelized algorithms for the localization and computation of extrema of functions with the application to different numerical methods. Algorithms are constructed on the basis of sorting of sequence with obviously set univocity of input and output indexes. Extrema are localized by comparison of indexes without accumulation of an error.

Key words, numerical optimization, parallel localization of extrema, sorting.

Введение. В сообщении представлены конструктивные алгоритмы вычисления экстремумов функций. Вычисления построены по единой схеме на основе сортировки последовательности с взаимно однозначным соответствием входных и выходных индексов. Схема инвариантна относительно размерности, вида задачи и сводится к допускающему распараллеливание циклическому поиску локально экстремальных элементов последовательности. При этом входная последовательность, напротив, зависит от вида задачи. Для поиска экстремумов функции одной действительной переменной эта последовательность составлена из значений функции на равномерной сетке. На основе схемы программируется локализация одновременно всех экстремумов входной последовательности при произвольно заданных радиусах окрестности локализации. В случае непрерывного решения задачи к локализованным значениям выполняется спуск посредством выбора наименьшего значения на равномерной сетке с итеративным сужением локализованной области. Нули функции идентифицируются как минимумы модулей значений при условии их достаточной малости. В общем случае область поиска нулей и экстремумов разделяется на фрагменты, границы которых проверяются на наличие экстремума или нуля по схеме на основе сортировки в отличие от способа, описанного для частного случая в [4].

Идентификация экстремальных элементов числовой последовательности на основе сортировки. Используется устойчивая [1] внутренняя сортировка одномерного массива по ключу (ниже - сортировка) с взаимно однозначным соответствием входных и выходных индексов. Сортировка строится с помощью матриц сравнений (МС) [5, 6], разновидность которых определяется ниже. Пусть по отношению « < » требуется упорядочить элементы массива

{С }u, n . (1)

Массив (1) располагается горизонтально над таблицей и вертикально слева от нее, МС принимает вид,

c1 c2 cn

c1 «11 «12 «12

c2 «21 «22 «2n

cn «n1 «n2 «nn

где

1 о < о;,

0, С = О; , (3)

- 1. О ; < О.

1 = 1, 2,..., п, ; = 1, 2,..., п. Значения а^ из (3) удобно заменить символами "+", "0", " - ". Например, для массива С = (7.3, 2.1, 8.1, 2.1, 8) МС (2) примет вид таблица 1:

Таблица 1.

7.3 2.1 8.1 2.1 8

7.3 0 - + - +

2.1 + 0 + 0 +

8.1 - - 0 - -

2.1 + 0 + 0 +

8 - - + - 0

Чтобы определить номер в отсортированном массиве j -го элемента входного массива, достаточно подсчитать число нулей и плюсов в j -ом столбце над диагональю, включая диагональный элемент, и сложить это число с числом плюсов j -ой строки ниже диагонали. В обозначении отсортированного массива с1 получится:

СФ] = c [l], cl[l] = c [2], сф] = c [3], сф] = c[4], cl[4] = c[5] . Процедура sort 00 (Delphi) данной сортировки: const n=5; a: array [1..n] of real = (7.3,2.1,8.1,2.1,8); type ved=array [1..n] of real; vedt^array [1..n] of integer; c, c1: veсt; e: ved;

procedure sort00(var c,c1: veсt; var e: veсt1);

var i,j,k: integer;

begin

for j:=1 to n do begin k:= 0;

for i:=1 to j do if c[j]>=c[i] then k:=k+1;

for i:=j+1 to n do if c[j]>c[i] then k:=k+1;

c1[k]:=c[j]; e[k]:=j;

end; end;

Все сравнения в (2) взаимно независимы и инвертируют знак относительно диагонали - сортировка максимально параллельна с временной сложностью T(N2/2) = 0(1) [6]. Для идентификации экстремальных элементов существенно, что при каждом индексе к элемента c1[k] отсортированного массива в процедуре sort00 выполнено

c1[k]:= c[j], (4)

и запоминается индекс этого же элемента во входном массиве:

e[k]:= j , (5)

на выходе сортировки c1[k ] и e[k ] имеют равный индекс к.

Локально минимальный в е -окрестности элемент c^ последовательности (1) ниже определяется как удовлетворяющий неравенствам:

cj < cj_t л cj < cj+1, i = 1,2, ...,е,

локально максимальный элемент определяется согласно неравенствам:

cj+i < cj л cj_i < cj, i =1 2, ...,е.

Определения адаптированы применительно к отношению « <», по которому элементы упорядочены данной сортировкой, - при равенстве отсортированных элементов первый из них считается наименьшим, последний наибольшим.

Пусть требуется идентифицировать все локально экстремальные элементы массива (1). Выполняется его сортировка sort00 , в результате которой массив (1) переводится в массив

С1 = (c1[1],c1[2],...,c1[n]), (6)

где выполнено (4), (5). При каждом k условие локализации минимального элемента (здесь и ниже только в смысле данного определения) проверяется в виде системы неравенств

e[k] -e[k-L] >e, L = 1,2,...,k-1.

(7)

Выполнение одновременно всех неравенств (7) означает, что внутри e -окрестности входного элемента массива (1) с индексом e[k] нет элемента массива (6), меньшего по значению, чем элемент c1[k]. Проверку выполняет оператор локализации минимума.

k,=1; while k<=n do begin for L,=1 to k-1 do if abs(e[k-L]-e[k]) <= eps0 then goto 22; writeln(' ',c1[k],' ',e[k]);

22. k.=k+1 end;

В этом фрагменте n из (1), eps0 = e . При условии, что eps0 меньше половины расстояния между ближайшими друг к другу локально минимальными элементами, идентифицируются одновременно все локально минимальные элементы в окрестностях радиуса eps0.

Пример 1. Все локально минимальные элементы последовательности C = (7.3,2.1,8.1,2.1,8) с радиусами окрестностей локализации eps0 =1 и eps0 = 2 идентифицирует следующая программа.

Program extrim; {$APPTYPE CONSOLE} uses SysUtils; label 22, 24;

const n=5; eps0=1; {eps0=2;} a. array [1..n] of real = (7.3,2.1,8.1,2.1,8); type ved:=array [1..n] of real; veсt1=array [1..n] of integer;

var i,k,l. integer; c, c1. veсt; e. veot1; procedure sort00 (var c,c1. vert; var e. veсt1);

Oписание процедуры sort00

begin

for i.=1 to n do c[i].=a[i];

sort00(c,c1,e); for i.=1 to n do write (' ',c[i].2.4,' '); writeln; k.=1; while k<= n do begin for L.= 1 to k-1 do

if abs(e[k]- e[k-L])<= eps0 then goto 22; writeln (' min=',c1[k].2.4,' ',e[k],' ');writeln; 22. k.=k+1 end; readln; end.

Результат работы программы при eps0 =1.

Минимум Номер минимума во входном массиве

Min=2.10000000000000E+0000 2

Min=2.10000000000000E+0000 4

При eps0 =2 получится. Min=2.1000000000000E+0000 2

Идентификацию всех локально максимальных элементов последовательности можно произвести по этой же программе, добавив оператор локализации максимума с обратным направлением просмотра элементов отсортированного массива.

| e [ k ] - e[ k + L ] |> e, L = 1,2,..., n - k, (8)

в программной форме -

k.=1; while k<=n do begin for L.=1 to n-k do if abs(e[k+L]-e[k]) <= eps0 then goto 24; writeln (' ',c1[k],' ',e[k]); 24. k.=k+1 end;

Результат работы модифицированной программы для eps0 =1.

Максимум Номер максимума во входном массиве

Max=7.300000000000E+0000 1

Max=8.100000000000E+0000 3

Max=8.000000000000E+0000 5

При eps0 = 2 получится.

Max=8.100000000000E+0000 3

Оператор локализации идентифицирует все экстремальные элементы последовательности по построению, после однократной сортировки со свойством устойчивости, опираясь на взаимно однозначное соответ-

ствие входных и выходных индексов сортируемых элементов. Оператор максимально распараллеливается по всем индексам L и k с оценкой T (n 2 ) = O (1). Идентификация экстремумов выполняется с помощью обработки только этих индексов, поэтому способ не зависит от типа последовательности и исключает накопление погрешности.

Вычисление экстремумов функций одной переменной. Пусть последовательность вида (1) образована дискретизацией функции одной действительной переменной. Тогда локализованные на основе сортировки значения являются взаимно отделенными приближениями экстремумов, с целью уточнения к ним можно выполнить спуск. Пусть для функции

y = f (x) (9)

рассматриваемого вида на произвольном отрезке [ x(0), x(N) ] в области ее определения требуется найти все локальные экстремумы при произвольно заданном, но достаточно малом радиусе окрестности локализации. Строится равномерная сетка xl = x(0) + Lh, L = 0,1,..., N,

x (N) _ x w

h =-—-, в узлах которой значения функции принимаются за элементы массива:

c[ i ] = f (xt _1 ), i = 1,2,..., N. (10)

Массив (10) поступает на вход сортировки sort00. К выходу процедуры sort00, как и в программе extrim, подсоединяется циклический оператор проверки (7), у которого с учетом шага сетки модифицируется правая часть:

\e[ к ] _ e[ к _ L ] |> е/h, L = 1,2,..., к _ 1. (11)

Идентификация локального минимума (в виде приближения к его числовому значению) выполнится потому, что (11) эквивалентны неравенствам

|e[к] xh _ e[к_L] хh| > е, L = 1,2,...,к_ 1.

Последнее означает, что на равномерной сетке расстояние между текущим узлом x(0) + e[к] xh и любым другим ее узлом x(0) + e[к _ L] xh больше е для тех значений функции, которые в отсортированном массиве предшествуют c[к] = f (xk_1 ). Таким образом, (11) соответствует наименьшему в смысле отношения порядка « < » значению f (Xк_1 ) в окрестности радиуса е .

После локализации выполняется спуск к минимальному значению внутри окрестности локализованной точки путем выбора наименьшего значения в сужаемой окрестности c фиксированным числом элементов равномерной сетки (в программе ниже это число равно mm). Сужение продолжается, пока не будет достигнута требуемая точность приближения. Спуск представлен программным фрагментом (сужение радиуса окрестности с коэффициентом 1.2, наименьшее значение выбирает процедура min1 с указанием индекса минимума ee):

xk:=x0+e[k]*h; eps1:=eps0; xk0:=xk-eps1; xk1:=xk+eps1; h0:=2*eps1/mm; while eps1 > eps do begin x:=xk0; min1(x,ee); eps1:=eps1/1.2; xk0:=xk0+ee*h0-eps1; xk1:=xk0+ee*h0+eps1; h0:=2*eps1/mm end;

Нули функции локализуются как минимумы модулей c[i] = | f (xi_1 ) |, i = 1, 2,..., N , с

проверкой малости (при поиске нулей многочлена в силу принципа максимума модуля [3] проверка излишня).

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Идентификацию всех локальных максимумов можно выполнить на основе циклической проверки неравенств (8), где по аналогии с (11) правую часть следует заменить выражением е/h . Процедура min1 заменяется процедурой max1, аналогично спуску осуществляющей приближение к наибольшему значению внутри окрестности локализованной точки.

Если отрезок поиска экстремумов [ X00, XNN ] шире исходного (справа), то в конце блока

инструкций выполняется циклическое смещение отрезка [ x(0), x(N) ] на его длину до тех пор, пока не будет пройден весь априори заданный отрезок [X00, XNN ]. При этом дополнительно проверяются на экстремумы границы смещаемого отрезка. Сортировка sort00 с некоторым формальным видоизменением и оператор локализации экстремумов на каждом шаге смещения применяются к последовательности значений функции в заключительных узлах предыдущего и начальных узлах текущего отрезков. При наличии экстремума на границе к нему выполняется спуск выбором наименьшего значения в сужаемой вокруг его локализованного значения окрестности. В результате все экстремумы и нули идентифицируются по значению и по индексу как внутри, так и на границах смещаемого отрезка инвариантно относительно размера априори заданного отрезка

[X00, XNN ]. Это позволяет выполнять идентификацию экстремумов параллельно по всем непересекающимся отрезкам, объединение которых совпадает с полным отрезком поиска, затем параллельно склеить результаты по всем границам составляющих отрезков. С точностью до формальных оговорок инвариантность схемы сохраняется относительно вида функции, характера экстремумов и априори заданной границы погрешности вычисления. Эксперимент показывает устойчивость локализации и высокую точность вычисления одновременно всех экстремумов и нулей функции на произвольном отрезке из области ее определения [2, 7 - 9].

Ниже излагается схема идентификации экстремумов функции двух переменных, она аналогична схеме для одной переменной, но включает принципиальные изменения. Локализация и вычисление экстремумов функции двух действительных переменных. Для приближенного вычисления всех экстремумов действительной функции

^ = f (x, y) (12)

от двух действительных переменных вначале задаются текущие отрезки [ x(0), x(N) ] и

[ y(0), y(M) ], образующие прямоугольники внутри области ее определения. Внутри прямоугольников строится равномерная сетка.

h = |x(N) - x(0) | /N, xt = x(0) + lh, I = 0,1,..., N, y = y(0) + lh, I = 0,1,..., M .

Для каждого j = 0,1,...,N выполняется проход в направлении оси OY вдоль j -го столбца прямоугольной сетки, во время которого определяется минимальное по элементам строк значение функции (12) в столбце

c[j] = min f (x,yt).

j=const j

1<i < M

Этот минимум заносится на вход сортировки как j -й элемент одномерного массива. Ввиду квадратичного роста обрабатываемой информации для ускорения последовательной реализации метода используется устойчивая сортировка слиянием по МС [4,5] с взаимно однозначным соответствием входных и выходных индексов, которая в последовательном варианте имеет временную сложность T(1) = O(Nlog2N), вместе с тем эффективно распараллеливается.

T (N2 /4) = O (log 2 N). Ниже процедура этой сортировки под именем sort без изменений заимствуется из [4].

К выходу процедуры sort подсоединяется оператор локализации минимума. Для текущего узла, определяемого индексом, записанным в e[k], оператор идентифицирует каждый узел двумерной сетки, в проекции eps0 - окрестности которого на ось OX нет узлов, доставляющих значения элементов входной последовательности, предшествующих c[e[k]] в отсортированном массиве. Значение локализованной абсциссы минимума xk .= x0 + e[k]* h рассматривается как привязка к координатам двумерного минимума, абсцисса xk фиксируется и в ней по аналогичной одномерной схеме локализуется ордината yk двумерного минимума. Точка (xk, yk) рассматривается как приближение к искомым координатам минимума функции (12). Выполняется спуск к наименьшему значению в окрестности локализованной точки. Он осуществляется выбором наименьшего значения в сужаемой окрестности приближения c фиксированным числом элементов в сетке, причем по обеим переменным, пока не достигается требуемая точность. С целью повышения точности спуск повторяется дважды [2, 4].

Аналогичное применение оператора локализации максимума влечет локализацию точки максимума, приближение к наибольшему значению в окрестности локализованной точки осуществляется выбором наибольшего значения в итеративно сужаемой окрестности.

Для исследования всей области поиска экстремумов функции (12) выполняется циклическое смещение отрезков [ x(0), x(N) ] и [ y(0), y(M) ] на их длину вдоль строк и столбцов сетки до тех пор, пока не будет пройдена вся априори заданная область. Дополнительная проверка наличия экстремумов в окрестностях границ смещаемых промежутков выполняется по схеме, аналогичной схеме одномерного случая, - используются элементы массива, образуемого значениями функции слева и

справа от левой границы каждого из смещаемых отрезков [ x(0), x(N) ] и [ y(0), y(M) ]. Заключение. Представлены конструктивные алгоритмы вычисления экстремумов функций. Вычисления построены на основе сортировки последовательности с программно реализованным взаимно однозначным соответствием входных и выходных индексов. Схема инвариантна относительно размерности, вида задачи и сводится к допускающему распараллеливание циклическому

поиску локально экстремальных элементов последовательности. На основе схемы программируется локализация одновременно всех экстремумов входной последовательности при произвольно

заданных радиусах окрестности локализации.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Вирт, Н. Алгоритмы и структуры данных. - М.: Мир, 1989. - 360 с.

2. Заика, И.В. Разработка и исследование схем оптимизации на основе алгоритмов сортировки с приложением к идентификации экстремумов решений дифференциальных уравнений: автореф. дис.... канд. техн. наук / И.В. Заика - Таганрог: ТРТУ, 2007. - 19 с.

3. Маркушевич, А.И., Маркушевич, Л.А. Введение в теорию аналитических функций. - М.: Просвещение, 1997. - 320 с.

4. Ромм, Я.Е. Локализация и устойчивое вычисление нулей многочлена на основе сортировки. I // Кибернетика и системный анализ. - 2007. - № 1. - С. 165 - 183.

5. Ромм, Я.Е. Параллельная сортировка слиянием по матрицам сравнений. I // Кибернетика и системный анализ. - 1994. - № 5. - С. 3 - 23.

6. Ромм, Я.Е. Параллельная сортировка слиянием по матрицам сравнений. II // Кибернетика и системный анализ. - 1995. - № 4. - С. 13 - 37.

7. Ромм, Я.Е., Заика, И.В., Лабинцева, А.А. Безусловная оптимизация на основе сортировки с приложением к компьютерному анализу устойчивости систем управления // Известия вузов. Северо-Кавказский регион. Технические науки. Серия «Управление, вычислительная техника и информатика». - 2008. - № 6. - С. 11 - 17.

8. Ромм, Я.Е., Заика, И.В., Лабинцева, А.А. Безусловная численная оптимизация при вариации параметров. I / ТГПИ. - Таганрог, 2008. - 31 с. Деп. в ВИНИТИ 04.03.2008, № 193-В2008.

9. Ромм, Я.Е., Заика, И.В., Лабинцева, А.А. Безусловная численная оптимизация при вариации параметров. II / ТГПИ. - Таганрог, 2008. - 44 с. Деп. в ВИНИТИ 04.03.2008 № 194-В2008.

УДК 681. 3.06

С.С. Выпряжкина

ОЦЕНКА ПОГРЕШНОСТИ ВЫЧИСЛЕНИЯ ПРОИЗВОДНЫХ НА ОСНОВЕ ВАРЬИРУЕМОЙ КУСОЧНО-ПОЛИНОМИАЛЬНОЙ АППРОКСИМАЦИИ ФУНКЦИИ

Аннотация. Произведена оценка погрешности вычисления кусочно-полиномиальной аппроксимации функций и производных на основе интерполяционного полинома Ньютона для произвольно заданной границы погрешности. Показана сходимость кусочно-полиномиально интерполированных производных к производным кусочно-полиномиально интерполируемой функции. Дана оценка скорости сходимости.

Ключевые слова: кусочно-полиномиальная аппроксимация функций, кусочная интерполяция, кусочно-интерполяционное приближение производных

S.S. Vypryazhkina

THE ESTIMATION OF ERROR OF CALCULATION OF DERIVATIVES ON BASIS

THE VARIED PIECEWISE-POLYNOMINALAPPROXIMATION OF FUNCTION

Absrtact. The estimation of error of calculation of piecewise-polynominal approximation of functions and derivatives is made on the basis of the Newton's interpolation polynomial for the arbitrarily set border of error. Convergence of thepiecewise-polynominal interpolated derivatives is shown to the derivatives of thepiecewise-polynominalinterpolated function. The estimation of speed of convergence is given.

Key words: piecewise-polynominalapproximation of functions, piece interpolation, piece-interpolation approaching of derivatives

Аппроксимация действительной функции y = f (x) от одной действительной переменной на произвольном отрезке [ а, Р ] выполняется следующим образом [1 - 3]. Выбирается система подынтервалов равной длины, объединение которых покрывает [ а, Р ]:

i Надоели баннеры? Вы всегда можете отключить рекламу.