Алгоритм Дженкинса – Трауба - Jenkins–Traub algorithm
В Алгоритм Дженкинса – Трауба для полиномиальных нулей - это быстрый глобально сходящийся итерационный метод, опубликованный в 1970 г. Майкл А. Дженкинс и Джозеф Ф. Трауб. Они предложили два варианта: один для общих многочленов с комплексными коэффициентами, широко известный как алгоритм «CPOLY», и более сложный вариант для частного случая многочленов с действительными коэффициентами, широко известный как алгоритм «RPOLY». Последнее является «практически стандартом для полиномиальных кортежей черного ящика».[1]
В этой статье описан сложный вариант. Учитывая многочлен п,
с комплексными коэффициентами вычисляет приближения к п нули из п(z) по одному в примерно возрастающем порядке. После вычисления каждого корня его линейный множитель удаляется из многочлена. Используя это дефляция гарантирует, что каждый корень вычисляется только один раз и что все корни найдены.
Реальный вариант следует тому же шаблону, но одновременно вычисляет два корня, либо два действительных корня, либо пару сопряженных комплексных корней. Избегая сложной арифметики, реальный вариант может быть быстрее (в 4 раза), чем сложный вариант. Алгоритм Дженкинса – Трауба стимулировал значительные исследования теории и программного обеспечения для методов этого типа.
Обзор
Алгоритм Дженкинса – Трауба вычисляет все корни многочлен с комплексными коэффициентами. Алгоритм начинается с проверки полинома на наличие очень больших или очень маленьких корней. При необходимости коэффициенты масштабируются путем изменения масштаба переменной. В алгоритме правильные корни находятся один за другим и, как правило, в увеличивающемся размере. После того, как каждый корень найден, полином сдувается путем деления соответствующего линейного множителя. Действительно, факторизация полинома в линейный множитель и оставшийся спущенный полином уже является результатом процедуры поиска корня. Процедура поиска корней состоит из трех этапов, которые соответствуют разным вариантам обратная степенная итерация. См. Дженкинс и Трауб.[2]Описание также можно найти в Ральстоне и Рабинович[3] п. 383. Алгоритм аналогичен по духу двухэтапному алгоритму, исследованному Траубом.[4]
Процедура поиска корней
Начиная с текущего полинома п(Икс) степени п, наименьший корень из Р (х) вычисляется. С этой целью была проведена серия так называемых ЧАС многочленов построено. Все эти многочлены имеют степень п - 1 и должны сходиться к коэффициенту п(Икс), содержащую все остальные корни. Последовательность ЧАС полиномы встречаются в двух вариантах: ненормализованный вариант, который позволяет легко получить теоретическое понимание, и нормализованный вариант полиномы, которые удерживают коэффициенты в числовом значении.
Строительство ЧАС многочлены зависит от последовательности комплексных чисел называется смены. Сами эти сдвиги зависят, по крайней мере, на третьем этапе, от предыдущего ЧАС полиномы. В ЧАС полиномы определяются как решение неявной рекурсии
- и
Прямым решением этого неявного уравнения является
где полиномиальное деление точное.
Алгоритмически можно использовать, например, Схема Хорнера или же Правило Руффини вычислить полиномы в и одновременно получить частные. С полученными частными п(Икс) и час(Икс) в качестве промежуточных результатов следующие ЧАС полином получается как
Поскольку коэффициент высшей степени получается из Р (Х), старший коэффициент является . Если это разделить нормализованное ЧАС многочлен
Этап первый: бессменный процесс
За набор . Обычно M = 5 выбирается для многочленов умеренных степеней до п = 50. Этот этап не является необходимым только из теоретических соображений, но полезен на практике. Это подчеркивается в ЧАС полиномы - сомножитель (линейного множителя) наименьшего корня.
Этап второй: процесс фиксированной смены
Сдвиг для этого этапа определяется как некоторая точка, близкая к наименьшему корню полинома. Он квазислучайно расположен на окружности с внутренним радиусом корня, который, в свою очередь, оценивается как положительное решение уравнения
Поскольку левая часть является выпуклой функцией и монотонно возрастает от нуля до бесконечности, это уравнение легко решить, например, с помощью Метод Ньютона.
Теперь выберите на окружности этого радиуса. Последовательность многочленов , , генерируется с фиксированным значением сдвига . Во время этой итерации текущее приближение для корня
прослеживается. Второй этап завершается успешно, если условия
- и
одновременно встречаются. Если после некоторого количества итераций успеха не было, пробуется другая случайная точка на круге. Обычно используется 9 итераций для полиномов средней степени со стратегией удвоения в случае множественных отказов.
Этап третий: процесс переменной смены
В теперь генерируются с использованием переменных сдвигов которые генерируются
является последней оценкой корня второго этапа и
- куда нормализованный ЧАС полином, то есть делится на его старший коэффициент.
Если размер шага на третьем этапе недостаточно быстро падает до нуля, второй этап запускается заново с другой случайной точкой. Если это не удается после небольшого числа перезапусков, количество шагов на втором этапе удваивается.
Конвергенция
Можно показать, что при условии L выбирается достаточно большим, sλ всегда сходится к корню п.
Алгоритм сходится для любого распределения корней, но может не найти все корни многочлена. Кроме того, сходимость немного быстрее, чем квадратичная сходимость итерации Ньютона – Рафсона, однако он использует как минимум в два раза больше операций на шаг.
В чем сила алгоритма?
Сравните с Итерация Ньютона – Рафсона
Итерация использует данный п и . В отличие от третьего этапа Дженкинса – Трауба
в точности итерация Ньютона – Рафсона, выполняемая на определенных рациональные функции. Точнее, Ньютон – Рафсон выполняется на последовательности рациональных функций
За достаточно большой,
как можно ближе к полиному первой степени
куда один из нулей . Несмотря на то, что стадия 3 представляет собой итерацию Ньютона – Рафсона, дифференцирование не выполняется.
Анализ ЧАС многочлены
Позволять быть корнями п(Икс). Так называемые факторы Лагранжа Р (Х) являются кофакторами этих корней,
Если все корни разные, то множители Лагранжа образуют базис пространства многочленов степени не выше п - 1. Анализируя процедуру рекурсии, обнаруживаем, что ЧАС многочлены имеют координатное представление
Каждый фактор Лагранжа имеет старший коэффициент 1, так что старший коэффициент полиномов H является суммой коэффициентов. Таким образом, нормированные полиномы H имеют вид
Приказы конвергенции
Если условие выполняется почти для всех итераций, нормализованные полиномы H будут сходиться по крайней мере геометрически к .
При условии, что
получаем асимптотические оценки для
- этап 1:
- для этапа 2, если s достаточно близко к :
- и
- и для этапа 3:
- и
- приводя к более высокому порядку сходимости, чем квадратичный , куда это Золотое сечение.
Интерпретация как итерация обратной мощности
Все этапы комплексного алгоритма Дженкинса – Трауба могут быть представлены как задача линейной алгебры определения собственных значений специальной матрицы. Эта матрица является координатным представлением линейной карты в п-мерное пространство многочленов степени п - 1 или меньше. Основная идея этой карты - интерпретировать факторизацию
с корнем и оставшийся фактор степени п - 1 как уравнение на собственный вектор для умножения с переменной Иксс последующим вычислением остатка с делителем п(Икс),
Это отображает многочлены степени не выше п - от 1 до многочленов степени не выше п - 1. Собственные значения этого отображения являются корнями п(Икс), поскольку уравнение собственного вектора имеет вид
откуда следует, что , то есть, является линейным фактором п(Икс). В мономиальном базисе линейное отображение представлен сопутствующая матрица полинома п, так как
результирующая матрица коэффициентов
К этой матрице обратная степенная итерация применяется в трех вариантах: без сдвига, постоянного сдвига и обобщенного рэлеевского сдвига на трех этапах алгоритма. Более эффективно выполнять операции линейной алгебры в полиномиальной арифметике, а не с помощью матричных операций, однако свойства обратной степенной итерации остаются прежними.
Реальные коэффициенты
Описанный ранее алгоритм Дженкинса – Трауба работает для многочленов с комплексными коэффициентами. Те же авторы создали трехэтапный алгоритм для многочленов с действительными коэффициентами. Увидеть Дженкинса и Трауба Трехэтапный алгоритм для вещественных многочленов с использованием квадратичной итерации.[5] Алгоритм находит линейный или квадратичный фактор, полностью работающий в реальной арифметике. Если комплексный и реальный алгоритмы применяются к одному и тому же действительному многочлену, реальный алгоритм будет примерно в четыре раза быстрее. Реальный алгоритм всегда сходится, и скорость сходимости больше второго порядка.
Связь со сдвинутым QR-алгоритмом
Есть удивительная связь со сдвинутым QR-алгоритмом для вычисления собственных значений матрицы. См. Деккер и Трауб Сдвинутый QR-алгоритм для эрмитовых матриц.[6] Опять же, сдвиги можно рассматривать как итерацию Ньютона-Рафсона для последовательности рациональных функций, сходящихся к полиному первой степени.
Программное обеспечение и тестирование
Программное обеспечение для алгоритма Дженкинса – Трауба было опубликовано как Jenkins and Traub Алгоритм 419: нули комплексного многочлена.[7] Программное обеспечение для настоящего алгоритма было опубликовано как Jenkins. Алгоритм 493: нули действительного многочлена.[8]
Методы были протестированы многими людьми. Как и предполагалось, они пользуются более быстрой, чем квадратичная сходимость для всех распределений нулей.
Однако есть многочлены, которые могут вызвать потерю точности, как показано в следующем примере. Все нули полинома лежат на двух полукругах разного радиуса. Уилкинсон рекомендует, чтобы для стабильного дефляции сначала вычислялись меньшие нули. Сдвиги второй ступени выбираются так, чтобы сначала находились нули на меньшем полукруге. Известно, что после дефляции многочлен с нулями на полукруге плохо обусловлен, если степень велика; см. Уилкинсон,[9] п. 64. Исходный полином был 60-й степени и страдал от сильной дефляционной нестабильности.
Рекомендации
- ^ Press, W.H., Teukolsky, S.A., Vetterling, W.T. и Flannery, B.P. (2007), Численные рецепты: Искусство научных вычислений, 3-е изд., Cambridge University Press, стр. 470.
- ^ Дженкинс, М. А. и Трауб, Дж. Ф. (1970), Трехэтапная итерация сдвига переменных для полиномиальных нулей и ее связь с обобщенной итерацией Рэлея, Нумер. Математика. 14, 252–263.
- ^ Ральстон А. и Рабиновиц П. (1978), Первый курс численного анализа, 2-е изд., Макгроу-Хилл, Нью-Йорк.
- ^ Трауб, Дж. Ф. (1966), Класс глобально сходящихся итерационных функций для решения полиномиальных уравнений, Математика. Comp., 20 (93), 113–138.
- ^ Дженкинс, М. А. и Трауб, Дж. Ф. (1970), Трехэтапный алгоритм для вещественных многочленов с использованием квадратичной итерации, SIAM J. Numer. Анализ., 7 (4), 545–566.
- ^ Деккер, Т. Дж. И Трауб, Дж. Ф. (1971), Сдвинутый QR-алгоритм для эрмитовых матриц, Лин. Алгебра и приложения, 4 (2), 137–154.
- ^ Дженкинс, М. А. и Трауб, Дж. Ф. (1972), Алгоритм 419: нули комплексного многочлена, Comm. ACM, 15, 97–99.
- ^ Дженкинс, М.А. (1975), Алгоритм 493: нули действительного многочлена, АСМ ТОМС, 1, 178–189.
- ^ Уилкинсон, Дж. Х. (1963), Ошибки округления в алгебраических процессах, Prentice Hall, Englewood Cliffs, N.J.
внешняя ссылка
- Бесплатное загружаемое приложение для Windows, использующее метод Дженкинса – Трауба для полиномов с действительными и комплексными коэффициентами.
- RPoly ++ Оптимизированная для SSE реализация C ++ алгоритма RPOLY.