Алгоритм собственных значений «разделяй и властвуй»
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Алгоритмы собственных значений «разделяй и властвуй» — это класс алгоритмов собственных значений для эрмитовых или действительных симметричных матриц , которые в последнее время (около 1990-х годов) стали конкурентоспособными с точки зрения стабильности и эффективности с более традиционными алгоритмами, такими как алгоритм QR . Основная концепция этих алгоритмов — подход «разделяй и властвуй» из информатики . Проблема собственных значений делится на две проблемы примерно вдвое меньшего размера, каждая из которых решается рекурсивно , а собственные значения исходной проблемы вычисляются на основе результатов этих меньших задач.
В этой статье рассматривается основная идея алгоритма, первоначально предложенного Куппеном в 1981 году, который не является численно стабильным без дополнительных уточнений.
Фон
[ редактировать ]Как и в большинстве алгоритмов собственных значений для эрмитовых матриц, принцип «разделяй и властвуй» начинается с приведения к трехдиагональной форме. Для матрица, стандартный метод для этого, через отражения Хаусхолдера , принимает операции с плавающей запятой или если собственные векторы также нужны . Существуют и другие алгоритмы, такие как итерация Арнольди , которые могут работать лучше для определенных классов матриц; мы не будем рассматривать это далее здесь.
В некоторых случаях можно разложить проблему собственных значений на более мелкие задачи. Рассмотрим блочную диагональную матрицу
Собственные значения и собственные векторы являются просто теми из и , и почти всегда будет быстрее решить эти две меньшие проблемы, чем решить исходную проблему сразу. Этот метод можно использовать для повышения эффективности многих алгоритмов собственных значений, но он имеет особое значение для принципа «разделяй и властвуй».
В оставшейся части статьи мы будем предполагать, что входными данными для алгоритма «разделяй и властвуй» являются действительная симметричная трехдиагональная матрица . Алгоритм может быть модифицирован для эрмитовых матриц.
Разделять
[ редактировать ]Часть алгоритма « разделяй и властвуй» исходит из осознания того, что трехдиагональная матрица является «почти» диагональю блока.
Размер подматрицы мы позвоним , а потом является . почти блочная диагональ, независимо от того, как выбран. Для эффективности мы обычно выбираем .
Мы пишем как блочная диагональная матрица плюс поправка ранга 1 :
Единственная разница между и это правая нижняя запись в был заменен на и аналогично, в верхняя левая запись был заменен на .
Оставшаяся часть шага деления заключается в поиске собственных значений (и, при желании, собственных векторов) и , то есть найти диагонализации и . Этого можно добиться с помощью рекурсивных вызовов алгоритма «разделяй и властвуй», хотя практические реализации часто переключаются на алгоритм QR для достаточно маленьких подматриц.
Завоевывать
[ редактировать ]Часть направленная на завоевание, алгоритма, является неинтуитивной частью. Учитывая вычисленные выше диагонализации подматриц, как найти диагонализацию исходной матрицы?
Сначала определите , где это последний ряд и это первый ряд . Теперь элементарно показать, что
Оставшаяся задача свелась к нахождению собственных значений диагональной матрицы плюс поправки первого ранга. Прежде чем показать, как это сделать, упростим обозначения. Ищем собственные значения матрицы , где диагональная с различными элементами и — любой вектор с ненулевыми элементами. В этом случае .
Случай нулевой записи прост, поскольку если w i равно нулю, ( ,d i ) является собственной парой ( находится в стандартном базисе) с .
Если является собственным значением, мы имеем:
где — соответствующий собственный вектор. Сейчас
Имейте в виду, что является ненулевым скаляром. Ни один ни равны нулю. Если должно было быть равно нулю, будет собственным вектором к . Если бы это было так, будет содержать только одну ненулевую позицию, поскольку является отличной диагональю и, следовательно, внутренним произведением ведь не может быть нулем. Таким образом, мы имеем:
или записанное в виде скалярного уравнения,
Это уравнение известно как вековое уравнение . Таким образом, задача свелась к нахождению корней рациональной функции, определяемой левой частью этого уравнения.
Все общие алгоритмы собственных значений должны быть итеративными. [ нужна ссылка ] и алгоритм «разделяй и властвуй» ничем не отличается. Решение нелинейного векового уравнения требует итерационного метода, такого как метод Ньютона-Рафсона . Однако каждый корень можно найти за O (1) итераций, каждая из которых требует проваливается (для -степень рациональной функции), что делает стоимость итеративной части этого алгоритма .
Анализ
[ редактировать ]W будет использовать основную теорему для повторений по принципу «разделяй и властвуй» для анализа времени выполнения. Помните, что выше мы заявили, что выбираем . Мы можем написать рекуррентное соотношение :
В обозначениях Мастер-теоремы и таким образом . Четко, , поэтому у нас есть
Выше мы указывали, что приведение эрмитовой матрицы к трехдиагональному виду требует проваливается. Это затмевает время выполнения части «разделяй и властвуй», и на данный момент неясно, какое преимущество предлагает алгоритм «разделяй и властвуй» перед алгоритмом QR (который также требует флопы для трехдиагональных матриц).
Преимущество метода «разделяй и властвуй» проявляется тогда, когда также необходимы собственные векторы. В этом случае приведение к трехдиагональной форме принимает , но вторая часть алгоритма занимает также. Для алгоритма QR с разумной целевой точностью это , тогда как для принципа «разделяй и властвуй» это . Причина такого улучшения заключается в том, что в методе «разделяй и властвуй» часть алгоритма (умножение матрицы) отделены от итерации, тогда как в QR это должно происходить на каждом итерационном шаге. Добавление провалы для снижения, общее улучшение составляет от к проваливается.
Практическое использование алгоритма «разделяй и властвуй» показало, что в большинстве реалистичных задач на собственные значения этот алгоритм действительно справляется лучше. Причина в том, что очень часто матрицы и векторы имеют тенденцию быть численно разреженными , что означает, что они имеют много записей со значениями, меньшими, чем точность с плавающей запятой , что допускает численное дефлятирование , т.е. разбиение проблемы на несвязанные подзадачи.
Варианты и реализация
[ редактировать ]Представленный здесь алгоритм является самой простой версией. Во многих практических реализациях для обеспечения стабильности используются более сложные поправки ранга 1; в некоторых вариантах даже используются поправки второго ранга. [ нужна ссылка ]
Существуют специализированные методы поиска корней для рациональных функций, которые могут оказаться лучше, чем метод Ньютона-Рафсона, с точки зрения производительности и стабильности. Их можно использовать для улучшения итеративной части алгоритма «разделяй и властвуй».
Алгоритм «разделяй и властвуй» легко распараллеливается , а пакеты вычислений линейной алгебры, такие как LAPACK, содержат высококачественные параллельные реализации. [ нужна ссылка ]
Ссылки
[ редактировать ]- Деммель, Джеймс В. (1997), Прикладная числовая линейная алгебра , Филадельфия, Пенсильвания: Общество промышленной и прикладной математики , ISBN 0-89871-389-7 , МР 1463942 .
- Куппен, JJM (1981). «Метод разделяй и властвуй для решения симметричной трехдиагональной собственной задачи». Численная математика . 36 (2): 177–195. дои : 10.1007/BF01396757 . S2CID 120504744 .