1 об одном алгоритме вычисления производных высших

advertisement
ОБ ОДНОМ АЛГОРИТМЕ ВЫЧИСЛЕНИЯ ПРОИЗВОДНЫХ ВЫСШИХ
ПОРЯДКОВ, ОСНОВАННОМ НА МЕТОДЕ НУМЕРОВА
И.М. Гостев1, Т.Д. Радченко2
1
Лаборатория информационных технологий,
Объединенный институт ядерных исследований, 141980, Дубна, Россия
2
Московский государственный институт электроники и математики,
109028, Россия Москва, Б. Трехсвятительский пер., д. 3
ВВЕДЕНИЕ. Несмотря на успехи в области прикладной математики и
вычислительной техники, создание систем распознавания графических образов до сих
пор остается сложной теоретической и технической задачей. Существует множество
приемов решения этой задачи, одним из которых является идентификация
незамкнутых кривых [1]. Эту методологию удобно использовать, когда необходимо
идентифицировать,
например,
потоки
графических
данных
в
виде
треков
элементарных частиц, снимаемых с ускорителя в реальном масштабе времени, или
определить объект по контуру, заданному фрагментами некоторых кривых, а также
для решения множества других прикладных задач вычислительной математики.
Под идентификацией некоторой плоской незамкнутой кривой будем понимать
процесс сравнения двух групп признаков, выделенных из функций
f (t ) и h (t ) на
основе разработанной метрики [2]. Сначала установим систему параметров, по
которой метрика должна вычисляться.
Определим набор необходимых информативных признаков для процесса
идентификации, то есть таких свойств образа, по которым его можно выделить из
окружающей группы объектов. Здесь необходимо остановиться на таком вопросе, а
1
что же представляют собой такие информативные признаки для плоской незамкнутой
кривой? Для их определения будем отталкиваться от контрольных точек,
инвариантных к сдвигу, масштабированию, повороту и зеркальному отображению,
составляющих основу математического описания кривой.
Рассмотрим случай идентификации функций заданных таблично. Возьмем
отрезок [a, b] , на котором определены значения функций f (t ) с постоянным шагом h.
В качестве информативного признака выберем «особые точки», в данном случае это
нули производных. Для построения математического описания множества этих точек
на отрезке использована методология k  jet [1].
Напомним, что k  jet от k-раз непрерывно дифференцируемой на [a, b]
функции
f ( x) представляет собой ряд Тейлора, в котором проведена замена
переменной с ( x  x0 ) на z [a, b]
 J f   z   f  x   f  x  z  ... 
k
x0
'
0
0
f ( k )  x0 
k!
zk .
Введем следующие понятия.
Определение 1.
Пусть f  t  достаточно гладкая функция на отрезке [a, b] .
Назовем k  jet нулями j  того порядка (1  j  k ) функции f точки t1( j ) , t2( j ) ,..., tn( jj ) ,
в которых ее j  тая производная обращается в нуль:
f ( j ) (tr( j ) )  0, r  1,..., n j .
Определение 2.
Пусть f (t ) достаточно гладкая функция на отрезке  a, b .
Множество точек G f = a  t0  t1  ...  tn  b , в которых какая-либо из производных
обращается в ноль: f ' (t )  0 , f '' (t )  0 ,…, f ( k ) (t )  0 , будем называть множеством
нулей k  jet функции f (t ) .
2
Например, для функции четвертого порядка
y ( x)  5 x 4  100 x 2  2 x  1 на
отрезке [5,5] это множество будет состоять из пяти точек (трех экстремальных и
двух точек перегиба), как показано на Рис.1.
Рис.1. Нули k-jet функции y(x)
Определение 3.
Если у k  раз непрерывно дифференцируемых на отрезке
[a, b] вещественных функций f и h совпадают все k  jet нули всех порядков до
k  того порядка включительно и, кроме того, значения функций f и h совпадают во
всех k  jet нулях, тогда мы будем говорить, что функции f и h являются слабо
k  jet идентичными на отрезке [a, b] .
Теорема. Пусть функция
f (t ) k  раз непрерывно дифференцируема на [a, b] .
G - множество нулей k  jet f (t ) . Тогда множество
 t , f (t )
i
i
, ti  G представляет
собой все информативные признаки, необходимые и достаточные для определения
класса слабой k  jet идентичности кривой.
ПОСТАНОВКА ЗАДАЧИ И МЕТОД РЕШЕНИЯ. Основная цель настоящей работы
заключается в построении множества k  jet нулей для любой таблично заданной
3
функции с высокой точностью, а также в эффективной реализации соответствующей
автоматической процедуры. Для того чтобы получить высокую точность вычислений,
были
исследованы
повышения
различные
эффективности
методы
численного
автоматизированных
дифференцирования.
вычислений
Для
использовались
распределенные вычисления.
Построение множества нулей k  jet для плоской незамкнутой кривой требует
вычисления с высокой точностью производных первого и второго порядков на всем
интервале, на котором рассматривается функция. Метод компактных аппроксимаций
(метод Нумерова) позволяет сделать это наиболее оптимально [3]. Здесь имеется
ввиду достижение высокого порядка аппроксимации производных на трехточечном
(компактном) шаблоне.
Пусть на отрезке [a, b] длиной L определена периодическая достаточно
гладкая функция u ( x) такая, что для любого x выполняется u ( x  L)  u ( x) . Выберем
следующую сетку    x j  jh, j  0,1,..., N  , где N – число интервалов сетки и
h  L / N – постоянный шаг сетки. В каждой точке сетки значение функции u ( x)
определено и равно u ( xi )  ui где i=0,1,…,n. Найдем связь между значениями в трех
соседних узлах сетки функции u ( x) и аппроксимацией ее производных высшего
порядка. Обозначим:
u ( x j )  f j , тогда формулами компактного численного
дифференцирования или формулами Нумерова для приближенного вычисления
производных второго порядка называется следующее соотношение:
u j 1  2u j  u j 1
1
5
1
f j 1  f j 
f j 1 
, j  1,..., N  1
12
6
12
h2
(1)
Правая часть представляет собой формулу для приближенного вычисления
второй производной. Левая часть получена разложением правой части в ряд Тейлора.
4
Аналогичная формула имеется и для первой производной, для чего введем
обозначение:
u ( x j )  g j .
Тогда
формулами
компактного
численного
дифференцирования или формулами Нумерова для приближенного вычисления
производных первого порядка называется следующее соотношение:
u j 1  u j 1
1
2
1
g j 1  g j  g j 1 
, j  1,..., N  1 .
6
3
6
2h
(2)
Для вычисления производных по формулам Нумерова необходимо решать
систему линейных алгебраических уравнений относительно искомых производных в
каждой точке сетки. При этом необходимо добавить еще 2 уравнения в качестве
краевых условий: f 0  f1 и f N 1  f N .
Следующая формула представляет собой разложенную в ряд правую часть
формулы Нумерова:
f j  u ( x j ) 
u (4) ( x j )
12
h 2  O(h 4 )
Преимущественной особенностью этого метода является малое значение
остаточного члена. Метод Нумерова обеспечивает более высокий порядок точности
O(h 4 ) и O(h3 ) для производной второго и первого порядка соответственно, по
сравнению с обычными сеточными методами дифференцирования – O(h3 ) и O(h 2 ) .
При решении подобной системы на интервале с большим количеством точек с
необходимостью
вычисления
производных
высоких
порядков,
обычными
последовательными алгоритмами время вычислений существенно возрастает. При
этом процесс распознавания объектов в реальном времени становится проводить
невозможно.
Для
высокопроизводительные
означает,
что
сокращения
времени
мультипроцессорные
необходимо
разрабатывать
алгоритмы для работы в распределенной среде.
5
необходимо
вычислительные
новые
эффективные
использовать
системы.
Это
параллельные
В настоящее время решение систем линейных уравнений возможно при
применении метода параллельной прогонки [4]. Реализация этого метода была
встроена в автоматическую процедуру вычисления множества нулей k  jet .
Рассмотрим
алгоритм
решения
полученной
алгебраической
задачи
с
использованием многопроцессорной вычислительной системы с р процессорами [5].
Введем
 
равномерное
0,1,..., N 
на
линейное
связные
разбиение
множества
подмножества
номеров
узлов
сетки
 m  i1( m ) ,..., i2( m )  , m  0,( p  1)
соответствующие разбиению вектора неизвестных по процессорам.
В результате такого разбиения процессор с номером m будет обрабатывать
i2( m )  i1( m )  1 точек (Рис. 2).
Рис. 2. Разбиение расчетной области по процессорам.
Результат, получаемый на каждом процессоре, представляет собой некоторую
линейную комбинацию из значений искомой функции на границе множества и во
внутренних узлах, что дает часть общего решения. Общий вектор-решение
получается на управляющем процессоре.
Для реализации алгоритма была использована технология MPI, где основным
способом взаимодействия параллельных процессов является передача сообщений
друг другу. Интерфейс MPI поддерживает создание параллельных программ в SIMDмодели, в которой для всех параллельных процессов используется один и тот же код.
В качестве иллюстрации была выбрана гладкая непрерывно−дифференцируемая
функция
6
f ( x)  2  1.7 sin x , которая носит имя улитки Паскаля. Рассчитаем по
формулам (1) и (2) шесть ее производных и представим их графики в полярных
координатах (Рис.3).
Рис. 3. Первые шесть производных для улитки Паскаля.
ВЫВОДЫ. На основании анализа полученных результатов можно сделать
следующие выводы об особенностях метода компактных аппроксимаций:
Во-первых, метод компактных аппроксимаций (метод Нумерова) обладает более
высокой точностью вычисления производных высших порядков по сравнению с
методами численного дифференцирования на основе интерполяционных полиномов.
Как следствие, этот метод позволяет достаточно точно определить положение нулей
k  jet и их количество.
Во-вторых,
при
использования
этого
метода
значения
производных
определенного порядка вычисляются не в окрестности точки, а сразу на всем
интервале.
В-третьих, в зависимости от точности вычисления производных задается
величина исследуемого интервала и шаг сетки.
7
В-четвертых,
метод
компактных
аппроксимаций
обладает
невысокой
вычислительной сложностью, в чем превосходит другие методы численного
дифференцирования. Его реализация на ЭВМ довольно проста. Такой метод может
быть использован в режиме реального времени, то есть прямо в ходе проведения
некоторого эксперимента.
В-пятых, Метод компактных аппроксимаций легко распараллеливается и
реализуется в мультипроцессорной среде.
В-шестых, к недостаткам метода компактных аппроксимаций необходимо
отнести возрастание погрешности величин производных на концах исследуемого
интервала. Краевой эффект проявляется тем сильнее, чем выше порядок производной.
Чтобы уменьшить и/или избежать неточностей на границах, необходимо либо
увеличить интервал, на котором рассматривается функция, либо уменьшить шаг сетки
и увеличить число точек исследуемой функции.
Таким образом, применение методов параллельной обработки при вычислении
производных методом компактных аппроксимаций позволяет существенно сократить
время вычислений при их общей невысокой стоимости.
ЛИТЕРАТУРА
[1]
Гостев
И.М.,
Севастьянов
Л.А.
Об
идентификации
гладких
пространственных кривых. // Сообщение Объединенного института ядерных
исследований. № Р11-2007-102. Дубна 2007. 1.2 п.л.
[2]
Gostev I.M., Sevastianov L.A. About the Identification of Flat Unclosed
Curves. Physics оf Particles and Nuclei Letters 2008 – Vol.5 № 3 (145). P. 502-507.
[3]
Lele K. Compact finite difference schemes with spectral-like resolution
Journal of computation physics #103 p16-42, 1992.
8
[4]
Stefan Bondeli. Divide and conquer: a parallel algorithm for the solution of
a tridiagonal linear system of equations. Parallel Computing, 17(1991), p. 419-434.
[5]
Иордан В.И., Родионов К.Ю., Соловьев А.А. MPI-вычисления
сеточных решений уравнения теплопроводности для исследования режимов горения в
нелинейной пористой среде СВ-синтеза // Материалы XV Всероссийская научнометодическая конференция "Телематика'2008".
9
Download