Литература
1. Малашонок Г.11.. Лапаев А.О., Пирютин II.А. Быстрое умножение в кольце целых чисел // Вестник Тамбовского универститета. Серия: Естественные и технические науки. Тамбов, 2007. Т. 12. Вып.1. С. 130.
2. Кнут Д. Искусство программирования, М., СПб.; Киев, 2004. Т. 2.
Поступила в редакцию 15 декабря 2007г.
Вычисление комплексных корней полиномов
© Г.И.Малашонок , © А.А.Бетин
Предлагается метод вычисления комплексных корней полиномов. Особенностью метода является то, что задача сводится к вычислению действительных корней полиномов, все остальные вычисления являюся точными символьно-численными.
Дан полином над полем комплексных чисел степени п
/ (г) = аогп + а\хп 1 + ... + апх + ап+\. (1)
Задача состоит в нахождении всех корней уравнения
/ (г) = 0
с заданной точностью ЕЕ- это максимальная по модулю абсолютная ошибка вычисления действительной и мнимой части каждого корня.
Вычисление корней полинома проведем в два этапа. Сначала разложим многочлен на множители, не содержащие кратных корней, а затем найдем все корни каждого из сомножителей.
Лемма 1.
Существует алгоритм разложения полинома на множители свободные от квадратов с использованием только точных символьно-численных операций.
Доказательство.
Рассмотрим полином над полем комплексных чисел
/ (х) = адхп + а\хп 1 + ... + апх + ап+1.
Этот полином имеет п комплексных корней, с учетом их кратности, поэтому может быть записан в виде
г г
f(х) = ао П(х - хз Т4 , ^ тз = п
3 = 1 3 = 1
где т3- - кратность корпя х3-.
Введм некоторые обозначения. Пусть I = {1, • • • , £} - множество номеров несовпадающих корней.
Пусть среди чисел т3- (] = 1 • • • t) встречается в различных натуральных чисел п1,п2, • • • ,п3,п1 <
П2 < п3 < ••• < п8. Вьщелим подмножества корней, имеющих одинаковую кратность: Мг С I,
в
N = ^ : х3- - корень кратности пг}. Получим разбиение множества I та подмножества I = У Мг.
1=1
Введем функцию кг, определенную для 1 < г < пя, которая указывает на нанменьшее из чисел п^, которое не меньше чем натуральное г:
к* = шш Н. (*)
пн>г
Пусть /3 — это сомножители /, которые требуется найти и которые не имеют кратных корней. Мы ищем следующее разложение полинома /(г) на сомножители:
/(г) = П /П, /3 = П (г - г3)-
3=1 jeN^
Рассмотрим алгоритм вычисления /3.
/
/' = /1 /Г /з"3 • • • /" + /П"1 /П"2 — 1 /П • • • /" + • • • + /Щ /" • • • /" —1 /п>- 1
/
Ф1 = СОО(/; /') = /Г1—1/Г2—1 • • • /Щ—^
Найдем Ф2 = ССД(ф1; ф1) и запишем в виде
ф2 = П /3
/ ■ni — 2
3>^2
где к3 определена в (*). Продолжим вычислепия и для 2 < р < пя получим:
фр = ССДф,—1; ФР—1) = П /
■П^—Р
Легко видеть, ЧТО Фп3 —1 = /в; причем показатель стеиеии у /3, с которым он входит в исходный полином /(г), равен п3 - числу производных.
Обозначим дПз = /3. Для вычисления остальных сомножителей /1 ••• /3—1 предварительно вычислим все сомножители:
фп3 — 2 фп3 —3
gns — 1 2 , gns—2 з 2 , ...,
дп3 дп3 дпв — 1
= фщ —к —1 = ф0
дп3 — к = 2 3 к+1 , ...’ до = д2д3 дП .
дпа —к + 1дпа —к+2 ••• дп> д1д3 д"
В последовательности д = {до, д1, • • • , дп } могут быть не только полиномы, но и константы. Если из нее вычеркнуть все константы, то получим последовательность полиномов {/1, /2, • • • , /я} и при этом / равно произведению / = /П1 /Щ2 • • • /Щ и каждая фупкция / = др входит в произведение в степени р. Таким образом, получено разложение полинома па сомножители, несодержащие кратных корней. Лемма доказана.
Главный результат настоящей работы содержится в следующем утверждении.
Лемма 2.
Пусть полином /(г) = ао^п + а1^п—1 + ... + апг + ап+1 те имеет кратных корней в С, тогда все
его корни можно найти, используя точные символьно-численные операции и операции нахождения
действительных корней полиномов от одной переменной.
Доказательство.
Рассмотрим полином над полем комплексных чисел, который не имеет кратных корней.
/ (г) = ао^п + Я1^п 1 + ... + + Ящ+1. (2)
Требуется найти все корни уравнения
/ (*)=0. (3)
с заданной точностью Е. Е - это максимальная по модулю абсолютная ошибка вычисления действительной и мнимой части каждого корня.
Выделим у коэффициентов и неизвестного г = действительную и мнимую часть, и представим функцию /(г) как сумму ее мнимой и действительной части. Тогда задача сводится к решению
системы уравнении, которая получена приравниванием действительной и мнимои части полинома к нулю.
Обозначим
Тогда система будет иметь вид:
Де(/(г)) : /ш(/(г))
фо(х,У)
ф1(х,У)
фо(х,у),
: ф1 (х,У).
0,
0.
(4)
Система (4) - это система состоящая из 2-х алгебраических уравнений с 2-мя неизвестными.
Рассмотрим идеал /й = (ф0,ф1) С Д[ж, у], порожденный ф0 и ф1. Каждое решение системы (4) обращает в ноль любой элемент идеала М.
Построим последовательность полиномиальных остатков по следующей схеме. Будем считать, что у - старшая переменная и будем рассматривать полиномы в кольце Д[ж][у]. Обозначим через йеду фз степень полиома фг по переменной у. Пусть для определенности йеду ф1 не превосходит йеду ф0. Тогда множно построить последовательность полиномиальных остатков по следующей схеме:
а1 ф0 + в1ф1 = ф2, а2 ф1 + в2ф2 = ф3,
ат фт—1 + втф фт+Ъ
где аг € Д[ж], вг € Д [ж, у] выбираются так, чтобы выполнялось условие йеду фг>йеду ф3+1, г =
1, 2, • • • , п. Операция вычисления фг та шаге г называется операция псевдоделения. Нетрудно видеть,
что найденные таким образом фг находятся в идеале /й.
Аналогично можно поступить, считая ж старшей переменной и рассматривая фг € Д[у][ж].
Пусть в результате этих вычислений были получены многочлены/1 (ж, у) и /2(ж, у), как последние
/1 /2
А(ж) и ^(у), которые возникают из-за операций псевдоделения. Поэтому в общем случае полиномы /1 /2
/1(ж,у) = ^у^^ЖуЖ^ (5)
/2(ж, у) = ф(ж уЬ^ЖуМу^ (6)
ф(ж, у) ж у
/1 ( ж, у) у
уж
/1(ж,у) = ^(ж,у)«(ж).
Теперь, считая в ф(ж, у) ж старшей переменной, вынесем общий множитель при ж - полином от у, получим:
Л (ж,у) = ф(ж,у)«(ж)^(у).
/2 ( ж, у) ж
у
/2(ж,у) = ф(ж,у)в (у)П(ж).
Вычислим
А(ж) = ( ) ^ а(ж) = А(ж)п(ж),
П(ж)
мЫ = ^ ^ в(у) = м(уЖж).
Таким образом, получаем все сомножители в выражениях (5) и (6). Отметим, что п(ж) и 0(у) не имеют действительных корней, так как иначе система (4) имела бы бесконечно много решений.
Пусть z = х + iy решение (2), тогда ф(х, у)А(х) = 0 и ф(х,у)^(у) = 0. Рассматривая все пары (х, у), найдинные с точностью E, такие, что A(x) = 0 и ^(y) = 0, выбирем из них те, для которых:
| фо(х,У) = 0,
1 ф1(х,У) = 0.
Это будут корни уравнения (2). Если таких корней полученоn штук, то задача решена.
Если таких пар меньше чем n и еще требуется найти недостающий ni корень, то это означает, что ненайденные искомые корни являются корнями уравнения
ф(х,У) = °.
Функция ф(х, у) - непрерывна, бесконечное число раз дифференциируема и имеет конечное число
( x, y)
этой функции. Поэтому они являются решениями системы
( фо(х,У) = 0
1 фх(х,у) = 0
если фх = 0, или системы
| фо(х,У) = 0,
1 фу (х,у) = 0,
если фу = 0. Функции фх и фу частные производиые поиу соответственно, не могут одновременно обращаться в ноль, так как в этом случае функция ф(х, у) = const.
Таким образом, получена система 2-х алгебраических уравнений от 2-х переменных и эта система имеет конечное число решний. Искать решения этой системы будем аналогично тому, как искали
n1
процесс дальше.
фх фу
то мы можем найти все ее действительные корни, подставить их в ф, решить уравнение ф = 0
( х, y) ф( х, y) = 0.
Так как ф имеет общую степень непревосходящую min йед(ф1, фо), а фх и фу имеют общую степень строго меньше чем ф, то такой процесс завершится в конечное число шагов и будут найдены все n решений уравнения (2). Лемма доказана.
Эти леммы позволяют сформулировать следующую теорему.
Теорема.
Существует алгоритм вычисления всех комплексных корней полинома (1) с учетом их кратности, который использует только точные символьно-численные операции и операции нахождения действительных корней полиномов от одной переменной.
Доказательство.
Доказательство содержится в леммах 1 и 2.
В леммах 1 и 2 содержится алгоритм нахождения всех комплексных корней полинома. На основе этого алгоритма была создана Лауа-программа. С этой программой проводились эксперименты. В следующей главе приведены некоторые простые примеры вычисления всех комплексных корней полиномов. Расчеты проводились в среде JDK 1.5.
Литература
1. Малашонок Г. 11.. Бетин А.А. О вычислении комплексных корней полиномов. Вестник ТГУ. Том 12, вып. 1, 2007.
2. Лунц Г.Л Эльсгольц Л.Э. Функции комплексного переменного: Учебник для вузов. 2-е изд. — СПб. 2002.
3. П.П. Привалов. Введение в теорию функций комплексного переменного. М. 1954.
4. Сидоров Ю.В., Федорюк М.В., Шабунин М.И. Лекции по теории функций компекного переменного. 2-е изд., перераб. и доп. - М.: Наука. 1982.
Поступила в редакцию 15 декабря 2007г.