
- •Проблема собственных значений Введение
- •1. Необходимые сведения из линейной алгебры
- •1.1 Обозначения
- •1.2 Основные определения
- •1.2.1 Матричные операции
- •1.2.2 Преобразование подобия
- •1.2.3 Матрицы со специальными свойствами
- •1.3 Проблема собственных значений
- •1.3.1 Собственные значения и векторы
- •1.3.2 Характеристическое уравнение
- •1.3.3 Собственные значения и собственные векторы диагональных матриц
- •1.3.4 Связь между собственными значениями и векторами подобных матриц
- •1.3.5 Матрицы простой структуры
- •2. Численные методы решения проблемы собственных значений
- •2.1 Классификация задач
- •2.2 Методы решения полной проблемы собственных значений
- •2.2.1 Метод Якоби
- •2.2.3 Приведение симметричной матрицы к трехдиагональной форме с помощью преобразований Хаусхолдера.
- •2.3 Методы решения частичной проблемы собственных значений
- •2.3.1 Прямые итерации
- •2.3.2 Обратные итерации
- •2.3.3 Последовательность Штурма и метод бисекции
2. Численные методы решения проблемы собственных значений
С теоретической точки зрения решение проблемы собственных значений дано уравнениями (12) и (13). Вначале следует найти собственные значения из характеристического уравнения (13), а затем, подставляя их по одному в левую часть однородных уравнений (12), получить соответствующие собственные векторы. На практике этот путь возможен, но обладает серьезными недостатками. Во-первых, задача численного определения корней многочлена очень часто оказывается неустойчивой. Во-вторых, с точки зрения объема вычислительной работы такой подход неэффективен (требует довольно больших затрат). Современные численные методы решения задач на собственные значения основаны на иных принципах.
Фундаментальное изложение теоретических основ и численных методов решения проблемы собственных значений можно найти в классической монографии Дж. Уилкинсона [3]. Очень хорошее описание численных методов для симметричных матриц содержится в книге [4], сочетающей предельную ясность и простоту изложения с достаточной математической строгостью и не требующей от читателя высокой математической подготовки. Наконец, общепризнанным эталоном практической реализации численных методов является справочник Дж. Уилкинсона и К. Райнша [5], который содержит тщательно отработанные алгоритмы, записанные на языке АЛГОЛ, и набор контрольных задач для их проверки. Алгоритмы из этого справочника составляют основу таких широко известных пакетов программ для решения задач линейной алгебры, как EISPACK и LAPACK, и входят в состав многих библиотек общего назначения, например, CRAY SCILIB и SLATEC Common Mathematical Library. Модуль EIGEN (файл EIGEN.PAS), используемый в практических заданиях по теме «Проблема собственных значений», также составлен из алгоритмов [Error: Reference source not found], переведенных на язык Паскаль.
В дальнейшем мы ограничимся только методами нахождения собственных значений и собственных векторов вещественных симметричных матриц (т.е. решением так называемой симметричной проблемы собственных значений). Как уже было сказано выше, в большинстве физических и химических приложений возникают именно такие матрицы, так что это ограничение не уменьшает практической пользы рассматриваемых методов. Кроме того, некоторые методы применимы и к матрицам более общего вида.
2.1 Классификация задач
Термин «проблема собственных значений» применяют ко всем задачам, связанным с нахождением собственных значений и/или собственных векторов. Различают полную и частичную проблемы собственных значений. Под полной проблемой понимают нахождение всех, а под частичной – некоторых избранных собственных значений данной матрицы. Собственные векторы могут получаться вместе (одновременно) с собственными значениями либо определяться отдельно с помощью специальных методов.
Численные методы, применяемые для решения полной и частичной проблем собственных значений, принципиально различны. При выборе того или иного метода приходится учитывать не только содержание прикладной задачи, но и другие факторы. Например, большинство методов решения частичной проблемы ищут собственные значения по одному, так что суммарные затраты зависят от размера матрицы и количества определяемых значений. Напротив, методы решения полной проблемы находят все собственные значения разом; объем работы зависит только от размера матрицы, причем удельные затраты, приходящиеся на одно собственное значение, оказываются значительно ниже. Практика показывает, что если требуется определить более 25% всех собственных значений, то решение частичной проблемы становится нерентабельным – гораздо быстрее решить полную проблему и отобрать те собственные значения, которые действительно нужны.
Другой фактор, который иногда оказывается решающим – объем требуемой памяти. В некоторых практических приложениях приходится решать проблему собственных значений для матриц очень высоких порядков (N103104). При этом памяти для размещения всех необходимых массивов может не хватить, и понадобятся специальные алгоритмы, позволяющие эффективно работать с матрицами, хранимыми на диске, считывая поочередно в память несколько строк или столбцов. Если для матрицы большого размера нужны собственные векторы, то объем доступной памяти может оказаться недостаточным для размещения всех векторов. В этом случае приходится отказываться от одновременного вычисления собственных векторов и собственных значений (что было бы наиболее экономично в смысле вычислительных затрат) и находить собственные векторы поодиночке с помощью специального алгоритма после того, как решена полная проблема для собственных значений.
Задачи (и методы их решения) классифицируют также по структуре матриц – например, матрицы общего вида (не имеющие особых отличительных свойств), симметричные, ленточные (где отличны от нуля лишь элементы вблизи диагонали). Различают также плотные и разреженные матрицы. К плотным относят матрицы, у которых большинство элементов отличны от нуля. Разреженными считают матрицы, где количество ненулевых элементов мало по сравнению с общим (обычно достаточно большим) числом элементов. При этом ненулевые элементы могут располагаться компактно (как в упомянутых выше ленточных матрицах) или быть разбросанными по всей матрице. В случае разреженных матриц можно добиться значительной экономии памяти и объема вычислений, если хранить и обрабатывать только ненулевые элементы (разумеется, для этого нужны специальные алгоритмы).