Проблема собственных значений довольно хорошо изучена теоретически, и (хотя нет единого алгоритма, который бы эффективно решал проблему собственных значений в любой ее постановке) имеется довольно много различных алгоритмов и их модификаций решения проблемы собственных значений в различных постановках для различных типов матриц. Этим и объясняется относительно большое число подпрограмм данного подраздела. Известны целые пакеты подпрограмм, предназначенные для решения проблемы собственных значений, например [ 3, 4 ], часть подпрограмм из которых (с некоторыми изменениями) включена в состав рассматриваемого подраздела.
Выбор конкретного алгоритма из большого числа существующих для решения какой - либо конкретной спектральной задачи должен осуществляться в зависимости от постановки задачи с учетом особенностей данной матрицы. Перечислим некоторые возможные постановки проблемы собственных значений:
- | полная проблема собственных значений: |
- | вычислить все собственные значения; |
- | вычислить все собственные значения и все собственные векторы; |
- | частичная проблема собственных значений: |
- | вычислить k наименьших или k наибольших собственных значений; |
- | вычислить k наименьших или k наибольших собственных значений и соответствующие им собственные векторы; |
- | вычислить собственные значения, принадлежащие заданному интервалу; |
- | вычислить собственные значения, принадлежащие заданному интервалу, и соответствующие им собственные векторы. |
При решении проблемы собственных значений все матрицы разбиваются на две больших, существенно различающихся по свойствам своих собственных значений и собственных векторов, класса: эрмитовы (в вещественном случае - симметричные) и неэрмитовы.
Каждый из этих классов в свою очередь может быть разбит на подклассы. При этом удобно выделять в подклассы матрицы, для которых развиты какие - нибудь специальные методы или имеются эффективные модификации методов, применяемых в общем случае.
Для задач средних размеров, матрицы которых могут быть целиком размещены в оперативной памяти, используются обычно численные методы, основанные на итерационном приведении исходной матрицы A общего вида с помощью преобразований подобия к матрице B специального вида (например, диагонального или треугольного), для которой проблема собственных значений решается достаточно просто.
Для задач больших размеров, матрицы которых, как правило, являются разреженными, используются другие методы, так как подобные преобразования, вообще говоря, разрушают разреженность матрицы.
В целях экономии памяти для некоторых матриц (симметричных, ленточных симметриченных) может быть использована компактная форма хранения.
По - разному хранятся вещественные и комплексные матрицы. Комплексные матрицы обычно запоминаются в виде двух квадратных массивов, в одном из которых хранится вещественная часть, а в другом - мнимая.
В рассматриваемом подразделе представлены следующие типы матриц: комплексные эрмитовы, вещественные симметричные, симметричные ленточные, симметричные разреженные, симметричные трехдиагональные, матрицы общего вида, матрица Хессенберга, матрицы Якоби.