УДК 519.6
С.П. Романчук, Д.В. Терин, О.С. Шатурная ИССЛЕДОВАНИЕ ЧИСЛЕННЫХ СХЕМ ОДНОВРЕМЕННОГО ПОИСКА КОРНЕЙ ПОЛИНОМОВ С КОМПЛЕКСНЫМИ КОЭФФИЦИЕНТАМИ ПРИМЕНИТЕЛЬНО К МОДЕЛЯМ ЭФФЕКТИВНОЙ СРЕДЫ
Рассмотрены методы одновременного поиска корней многочленов. Разработана программная реализация численных методов Аберта-Эрлиха и Дюрана-Кернера. Описывается алгоритм тестирования, позволяющий генерировать многочлены с интересующей областью определения коэффициентов n-й степени с m начальными приближениями.
Численный метод, корни многочлена, локализация корней, метод Аберта-Эрлиха, метод Дюрана-Кернера
S.P. Romanchuk, D.V. Term, O.S. Shaturnaya RESEARCH INTO NUMERICAL SIMULTANEOUS SEARCH SCHEMES OF POLYNOMIAL ROOTS WITH COMPLEX COEFFICIENTS APPLIED TO EFFECTIVE MEDIUM MODELS
The article presents the methods for the simultaneous search of the polynomial roots. A software was developed to implement the Abert-Ehrlich and Durand-Kerner numerical methods. The testing algorithm ensures generation of polynomials with a limited domain for definition coefficients with the n-th degree.
Numerical method, roots of the polynomial, localization of the roots, Abert-Ehrlich method, Durand-Kerner method
Введение
Проблема поиска корней многочлена представляет интерес не только для фундаментальных, но и для прикладных наук. Так например, при исследовании и моделировании оптических свойств материалов различного функционального назначения возникает необходимость поиска решения многочлена с комплексными переменными [1]. Этот пример является одним из огромного количества других задач, где требуется применение численных методов поиска корней многочлена. Большое количество литературы по теории многочленов также свидетельствует о потребности решения задач связанных с этим вопросом, например [2].
Численные схемы поиска корней
Среди итерационных методов поиска корней многочлена можно выделить методы последовательного поиска корней и методы одновременного поиска корней. Принципиальное отличие этих двух подходов состоит в следующем.
При одновременном поиске корней изначально выбираются первые приближения для каждого корня и ведется итеративное уточнение корней по какому-либо конкретно выбранному методу.
При последовательном поиске корней используется прием понижения степени. Для исходного полинома проводится поиск корня, после чего делением исходного полинома на двучлен происходит понижение степени, и для нового полинома с пониженной степенью повторяются предыдущие операции, вплоть до получения полинома первой степени. Проблемой методов последовательного поиска является то, что при последовательном понижении степени появляется вычислительная погрешность. Причиной тому является то, что при делении полинома на приближенное значение найденного корня, мы получаем полином с пониженной степенью для последующего определения других корней, и то, что деление проводится на приближенный корень, дает вычислительную погрешность при вычислении следующего корня, что, в свою очередь, дает цепочку увеличивающихся погрешностей. Это особенно важно при поиске корней полиномов высших степеней.
В работе рассматриваются методы одновременного поиска корней: метод Аберта-Эрлиха [3] и метод Дюрана-Кернера [4]. В связи с тем, что при использовании данных методов нет необходимости проводить понижение степени полинома при поиске корней, накапливающаяся погрешность отсутствует.
Локализация корней многочлена. Перед вычислениями корней можно однозначно установить их количество. Следствием основной теоремы алгебры [2] является то, что любой многочлен степени п над полем комплексных чисел имеет в нём ровно п корней, с учётом кратности корней, а также все корни лежат внутри кольца:
1Хр1 1^! I..., к-ф. (1)
\ап\ ..........
Начальные приближения. Необходимо определить начальные приближения корней, так как у нас есть область определения корней, то можем пойти двумя путями, либо выбрать равноудаленные
друг от друга значения для начального приближения, либо значения выбрать случайным образом.
Мы воспользуемся случайным выбором начальных приближений корней. Главным условием выбора начальных значений является то, что все выбранные значения должны быть различны.
Методы поиска корней. Пусть
Р(х)=РпХп+Рп_ 1Хп_1+---+Р1Х+Ро , (2)
является полиномом степени п с комплексными или действительными коэффициентами. Тогда существуют такие комплексные числа, являющиеся корнями полинома,
*1 * "• *п , (3)
которые дают факторизацию
Р(х) = Рп •(х_*1)•(х_*2)...(Х_*п) (4)
На каждой итерации метода, вычисляем приращения корней. Формула вычисления приращения по методу Аберта-Эрлиха выглядит следующим образом [3]:
р( гк ) ™ =_^у к/
к
по методу Дюрана-Кернера [4]:
Р'(*к)/
(5)
™к=_
Р(*к )
п *к _* <6)
j * к
Далее вычисляем следующее приближение корня:
*п=*п+Жп. (7)
Алгоритм локализации корней полинома и генерации начальных приближений. Входными данными при вычислении начальных приближений, является степень полинома и коэффициенты по-182
линома. При окончании работы алгоритма мы получаем начальные приближения корней полинома. Данный алгоритм можно разделить на две логические части.
START
Рис. 1. Алгоритм локализации корней и генерация начальных приближений
Первая часть (Рис. 1, пункты 2-7) - это определение границ для дальнейшей генерации начальных приближений. Вторая часть (Рис. 1 пункты 7-13) - это генерация корней, с проверкой на уникальность. Перед началом работы алгоритма выделяется память для хранения начальных приближений. Пункты 3-6 (Рис. 1 пункты 3-6) - это цикл определения максимального значения коэффициента полинома. Далее (Рис. 1 пункт 7) вычисление верхней границы для генерации начальных приближений. Пункт 9 (Рис. 1 пункт 9) - это пункт генерации начального приближения. После чего проводится проверка на уникальность (Рис. 1 пункты 10-12), которая заключается в том, что после генерации просматриваются все предыдущие генерации начальных значений. Если оказывается, что одно из предыдущих значений совпадает с текущим, то генерация повторяется, иначе генерируется значение для следующего корня. После того, как система сгенерирует все начальные корни полиномов, запускается алгоритм итеративного уточнения корней одним из численных методов.
Алгоритм Аберта-Эрлиха. Входными данными при поиске корней многочлена по методу Аберта-Эрлиха являются степень и коэффициенты полинома, а также точность вычислений. На выходе мы получаем вычисленные корни. Весь алгоритм можно разделить на два цикла, основной, который является идентичным для метода Аберта-Эрлиха и метода Дюрана-Кернера, и дополнительный, который реализуется конкретно для каждого метода.
Рис. 2. Основной цикл методов поиска корней
Основной цикл (Рис. 2) работает до тех пор пока приращение для всех корней не достигнет заданной точности. Дополнительный цикл (Рис. 3) вычисляет для каждого корня приращение по методу Аберта-Эрлиха. Перед тем как запускается основной цикл вычисления корней, происходит инициализация переменных и выделение памяти (Рис. 2). Далее происходит вычисление начальных приближений корней (Рис. 2 пункт 2). Значения для начальных приближений генерируются случайным образом (функция ROOT), далее запускается основной цикл алгоритма, условием выхода из которого является значение переменной flag (Рис. 2 пункт 3). Переменная flag сигнализирует, что приращения для всех корней полинома достигли заданной точности (Рис. 2 пункты 7 и 8).
Внутри основного цикла (Рис. 2 пункт 6) функционирует дополнительный (Рис. 3), в теле которого вычисляется приращение для каждого корня в отдельности. Данный алгоритм разделен на два этапа. Первым этапом происходит суммирование (Рис. 3 пункты 4-6):
v 1
sum= X -------
j ф к zk - z
(S)
j
На следующем этапе (Рис. 3 пункт 7) происходят вычисления модуля полинома, производной и приращения для текущего корня по формуле:
1
deriv/poly - sum
(9)
z
а также происходит сохранение нового корня. Далее проводится анализ вычисленного приращения (Рис. 2 пункт 7). Если все предыдущие приращения достигли заданной точности и текущее значение не превышает заданной точности, то работа основного цикла (после вычисления оставшихся корней) будет остановлена, иначе дальнейшие вычисления будут продолжены.
Алгоритм Дюрана-Кернера. Входными данными при поиске корней многочлена по методу Дюрана-Кернера будут аналогичны как и по предыдущему методу, т.е. степень и коэффициенты полинома, а также точность вычислений. На выходе мы получаем вычисленные корни. Алгоритм также можно разделить на две части, основной цикл (описанный выше) и дополнительный (Рис. 4). Расчет приращения начинается с того, что проводится вычисление произведения разности каждого корня с текущим (Рис. 4 пункты 4-6) по формуле:
д.впош = П 2к — 2 ^
} * к
(10)
Рис. 3. Блок-схема алгоритма Аберта-Эрлиха
На следующем этапе (Рис. 4 пункт 12) вычисляется модуль полинома и приращение для текущего корня по формуле
2=ро1уИеп от. (11)
А также заносится новый корень в память. Далее проводится анализ вычисленного приращения (описано в предыдущем пункте).
Рис. 3. Блок-схема алгоритма Дюрана-Кернера
Численный эксперимент
Численный эксперимент состоит из подготовительных этапов и исследования производительности алгоритмов. На первом этапе случайным образом генерируются многочлены. Для генерации многочленов вручную задаются количество многочленов одного типа, степень многочлена и граничные значения коэффициентов.
На следующем этапе генерируются случайным образом начальные приближения корней. На данном этапе пользователь устанавливает количество наборов начальных приближений. Границы для генерации начальных приближений вычисляются относительно коэффициентов многочлена.
После этого мы получаем массив сгенерированных многочленов и к каждому многочлену массив сгенерированных начальных приближений. Последним подготовительным этапом является установка точности вычислений. Точность вычислений задаётся для принятия решения о остановке работы алгоритма. Если вновь вычисленное приращение корня меньше по модулю выбранной точности, то корень считается найденным. Далее для каждого метода запускаем поиск корней.
При работе алгоритмов исследуем количество итераций и время необходимых для поиска корней.
При проведении теста генерировалось по 100 многочленов и для каждого многочлена генерировалось по 100 различных наборов начальных приближений. Область определения коэффициентов ограничивалась значениями от (-10-i10) до (10+i 10) исходя из условий прикладной задачи. Точность установлена равной 1E-5. Программная реализация алгоритмов разработана на языке C++, эксперимент проводился на следующем оборудовании: AMD Phenom™ II P650 Dual-Core 2.60 GHz, 3 Gb, MS Windows 7 (32) Home basic.
На рис. 5 видно, что с точки зрения количества итераций необходимых для достижения заданной точности, метод Аберта-Эрлиха наиболее эффективен, но с точки зрения затрачиваемого времени, наиболее эффективен метод Дюрана-Кернера (Рис. 6).
186
_ — Метод Аберта-Эрлиха ---------Метод Дюрана-Кернера
Степень полинома Рис. 4. Зависимость количества итераций от степени полинома
Такая зависимость связана с тем, что при использовании метода Аберта-Эрлиха необходимо вычислять производную, а также при вычислении приращения используется больше арифметических операций. При использовании метода Дюрана-Кернера необходимо только модуль многочлена разделить на произведение разности корней, что в свою очередь сокращает затраты по времени.
-----Метод Аберта-Эрлиха ------Метод Дюрана-Кернера
0 5 10 15 20 25 30
Степень полинома
Рис. 5. Зависимость количества затрачиваемого времени на вычисления от степени полинома
Заключение
В исследуемой области определения комплексных коэффициентов от (-10-i 10) до (10+i10), при установленной точности 1Е-5 вплоть до 30-й степени полиномов, проведенный численный эксперимент показал, что для рассмотренных методов одновременного поиска корней многочлена характерен линейный рост количества итераций и квадратичная зависимость времени на 103 вычислений от степени полинома. Предложена программная реализация алгоритма локализации корней и генерации начальных приближений, иллюстрирующая стабильность работы методов Аберта-Эрлиха и Дюрана-Кернера в исследуемых диапазонах. Разработанное приложение позволяет по внесенным данным формировать статистику работы описываемых алгоритмов и рекомендовать оптимизационные процедуры для последующего использования рассмотренных вычислительных схем применительно к моделям эффективной среды [5].
ЛИТЕРАТУРА
1. Виноградов А.П. К вопросу об эффективных параметрах метаматериалов / А.П. Виноградов, А.В. Дорофеенко, С. Зухди // УФН. 2008. Т. 178, № 5. С. 511-518.
2. Прасолов В.В. Многочлены / В.В. Прасолов. 3-е изд. М.: МЦНМО, 2003. 336 с.
3. Aberth O. Iteration methods for finding all zeros of a polynomial simultaneously / O. Aberth // Mathematics of computation. 1973. P. 339-344.
4. Kerner, Immo O. (1966). Ein Gesamtschrittverfahren zur Berechnung der Nullstellen von Polynomen. Numerische Mathematik 8: 290-294.
5. Математическое моделирование структур и процессов взаимодействия электромагнитного излучения с Соге-8Ье11 нанообъектами / С.П. Романчук, Д.В. Терин, А.М. Кац, Ю.В. Клинаев // Вестник СГТУ. 2011. 4 (60). Вып. 2. С. 98-102.
Романчук Сергей Петрович -
аспирант кафедры «Техническая физика и информационные технологии» Энгельсского технологического института (филиала) Саратовского государственного технического университета имени Гагарина Ю. А.
Терин Денис Владимирович -
кандидат физико-математических наук, доцент кафедры «Техническая физика и информационные технологии» Энгельсского технологического института (филиала) Саратовского государственного технического университета имени Гагарина Ю.А.
Sergey P. Romanchuk -
Postgraduate
Department of Technical Physics and Information Technologies,
Engels Institute of Technology (Branch),
Yuri Gagarin State Technical University of Saratov
Denis V. Terin -
Ph. D., Associate Professor
Department of Technical Physics and Information
Technologies,
Engels Institute of Technology (Branch),
Yuri Gagarin State Technical University of Saratov
Шатурная Оксана Сергеевна -
кандидат физико-математических наук, доцент кафедры «Прикладная математика и информатика» Саратовского государственного социальноэкономического университета
Oksana S. Shaturnaya -
Ph. D., Associate Professor
Department of Applied Mathematics and Computer Science,
Saratov State Socio-Economic University
Статья поступила в редакцию 19.11.13, принята к опубликованию 15.12.13