Метод обратных итераций для поиска собственных векторов



Метод обратных итераций предназначен для поиска собственного вектора xi, когда соответствующее собственное значение l i известно с некоторой погрешностью. Обозначим через  возмущенное собственное значение, тогда, поскольку , постольку уравнение  имеет в качестве решения тривиальное, т.е. xi = 0.

Возьмем произвольный вектор b и рассмотрим систему:

.                                                                           (20)

Определитель системы (20) отличен от нуля, поэтому система имеет единственное решение. Покажем, что это решение близко к собственному вектору xi, соответствующему собственному значению l i.

Ограничимся случаем, когда матрица n-го порядка A имеет n линейно-независимых собственных векторов xj, j = 1,…,n. В этом случае собственные векторы образуют базис, по которому можно разложить векторы x и b из (20), т.е.

.                                                             (21)

После подстановки (21) в (20) и при учете того, что , находим

.                                                         (22)

Поскольку система собственных векторов xj, j = 1,…,n линейно-независима, постольку , т.е.

.                                                              (23)

Согласно формуле (23), один из коэффициентов разложения x j велик при . Это обстоятельство является решающим в методе обратных итераций. Уточним его для нескольких случаев.

Случай №1. Пусть собственное значение l i является простым, тогда среди коэффициентов разложения , согласно (23), коэффициент  является большим, т.е. вектор x с точностью до нормировки близок вектору xi.

Таким образом, согласно (23), в методе обратной итерации собственный вектор отыскивается тем лучше, чем точнее известно соответствующее собственное значение. Если собственное значение известно слишком грубо или вектор b выбран неудачно так, что x и xi отличаются значительно, организуют итерационный процесс в следующем виде:

.

Расчеты показывают, что итерационный процесс сходится достаточно быстро (достаточно одной двух итераций), при этом на каждом шаге рекомендуется нормировать .

Случай №2. Пусть собственное значение l i является кратным, кратности p > 1 и ему соответствует p линейно-независимых собственных вектора x1,…,xp. В этом случае векторы x1,…,xp определяются неоднозначно, т.к. любая их линейная комбинация является собственным вектором. Действительно, имеем следующую цепочку верных равенств

,

т.е. система векторов x1,…,xp порождает подпространство, в котором можно выбрать произвольный базис. Векторы, составляющие выбранный базис, могут быть рассмотрены в качестве искомых собственных векторов.

В этом случае, согласно (23), в разложении вектора x будут усилены несколько компонент x1,x2,…,x p, причем в одинаковой степени, т.е. вектор x будет линейной комбинацией векторов x1,…,xp. Чтобы найти все линейно-независимые векторы x1,…,xp, необходимо применить метод обратных итераций для p линейно-независимых векторов b1,…,bp.

Случай №3. Пусть собственное значение l i является кратным, кратности p > 1 и ему соответствует q (q < p) линейно-независимых собственных вектора x1,…,xq. В этом случае также применим метод обратных итераций в форме предыдущего случая. Единственное отличие состоит в том, что среди векторов обратной итерации x(k), соответствующих правым частям bk, лишь q векторов являются линейно-независимыми, что выясняется при использовании процедуры ортогонализации.

Количество арифметические операций в методе обратных итераций складывается из нахождения собственного вектора » n3 операций, число же собственных векторов » n , т.е. всего » n4 операций. Таким образом, при больших n метод неэкономичен, но при n небольших (в пределах нескольких сотен) он вполне приемлем, т.к. прост, универсален и устойчив.

На листинге_№5 приведен код программы для поиска собственных векторов матрицы, у которой все собственные значения простые. Кроме того, собственные значения считаются известными, быть может, и с некоторой погрешностью. В качестве примера матрицы берется трехдиагональная матрица Q (18) из предыдущего пункта.

 

Листинг_№5

%Программа поиска собственных векторов матрицы

%с помощью метода обратной итерации на примере

%трехдиагональной матрицы

%очищаем рабочее пространство

clear all

%определяем максимальный порядок матрицы A=Q

nmax=200;

%задаем параметр матрицы A=Q

q=0.1;

%организуем цикл расчетов собственных векторов

%для матриц различных порядков (от 1 до nmax)

for n=1:nmax

%формируем трехдиагональную матрицу

%A=Q порядка n

A=zeros(n);

for i=1:n

   A(i,i)=1+2*q;

end

for i=2:n

   A(i,i-1)=-q;

end

for i=1:(n-1)

   A(i,i+1)=-q;

end

%цикл расчета собственных векторов методом

%обратной итерации

for k=1:n

   %определяем собственное значение

   lambda(k)=1+4*q*sin((pi*k)/(2*(n+1)))^2;

   %возмущаем собственное значение

   lambda(k)=lambda(k)+1e-5*randn;

   %формируем правую часть системы уравнений

   %метода обратной итерации

   b=randn(n,1);

   %организуется итерационный процесс метода

   %обратной итерации с тремя итерациями

   x0=b;

   for j=1:3

       %решаем систему обратной итерации

       x1=(A-lambda(k)*eye(n))\x0;

       x0=x1/norm(x1);

   end

      %формируется матрица, в которой столбцами

   %являются собственные вектора матрицы A=Q

   for j=1:n

       ev(j,k)=x0(j);

   end

end

%оценивается точность найденных собственных

%векторов для каждого порядка матрицы

 error(n)=0;

for k=1:n

   error(n)=error(n)+...

            norm((A-lambda(k)*eye(n))*ev(:,k));

end

end

%рисуется зависимость погрешности вычисления

%собственных векторов от порядка матрицы

plot(1:nmax,error);

 

На рис.5 приведена зависимость итоговой ошибки численной оценки собственных векторов методом обратной итерации от порядка матрицы. Ошибка оценивалась по формуле error = . Анализ графика показывает, что ошибка вполне удовлетворительна вплоть до порядка матрицы n = 200.

 

Рис.5. Зависимость численной оценки собственных
векторов от порядка матрицы

 

Метод отражения

Современные экономичные и устойчивые методы нахождения всех собственных значений основаны на приведении матрицы преобразованиями подобия к той или иной упрощенной форме. Такой упрощенной формой может быть треугольная матрица (верхняя или нижняя), почти треугольная, трехдиагональная или другая форма, для которой проблема собственных значений легко решается.

В данном разделе рассмотрим метод отражений, позволяющий любую матрицу преобразовать к почти треугольной форме за (10/3)n3 арифметических действий, а эрмитову матрицу к трехдиагональной форме за (4/3)n3 арифметических операций. Поскольку поиск собственных значений трехдиагональной матрицы экономичен (см. соответствующий пример выше), постольку метод отражений для эрмитовых матриц является одним из самых быстрых.

Введем операцию отражения в n-мерном пространстве относительно некоторой гиперплоскости G, проходящей через начало координат. Схема операции отражения вектора y относительно гиперплоскости G представлена на рис.6. Гиперплоскость характеризуется вектором нормали w. Произвольный вектор y раскладывается на две составляющие: параллельную вектору w и равную  и перпендикулярную вектору w и равную y = y - w(w,y), где скалярное произведение (…,…) определено формулой:

.

Рис.6. Схема отражения вектора y относительно
гиперплоскости G

 

При отражении вектора y его перпендикулярная составляющая y не меняется, а параллельная составляющая меняет знак. В результате отраженный вектор z есть разность z = y - y|| или

.                                                                         (24)

Преобразование отражения (24) можно записать в канонической форме, вводя матрицу отражения R:

                                                                (25)

или в координатной форме

.                                       (25¢)

Перечислим без доказательства (доказательства просты и могут быть проделаны самостоятельно) основные свойства матрицы отражения, определенной в (25), (25¢):

· матрица эрмитова, т.е. R = RH;

· квадрат матрицы отражения равен единичной матрице, т.е. R2 = E или, в другой форме, матрица отражения равна своей обратной R = R-1;

· из предыдущих двух пунктов следует, что матрица отражения является унитарной, т.к. верно равенство RH = R-1.

Последнее свойство особенно важно в методе отражения, поскольку известно, что при преобразованиях подобия с помощью унитарной матрицы свойство эрмитовости сохраняется. По этой причине, если в рамках метода отражения удастся привести матрицу к почти треугольной форме, то, в силу сохранения свойства эрмитовости, матрица будет трехдиагональной.

Покажем, что для произвольной матрицы можно подобрать последовательность подобных преобразований отражения, которые приведут матрицу к верхней почти треугольной форме. Будем считать, что уже обнулены первые q - 1 столбцов в нижней части матрицы. Разобьем полученную матрицу на клетки так, как это изображено на рис.7.

 

Рис.7. Иллюстрация процедуры приведения матрицы к почти
треугольной форме методом отражений

 

На рис.7 черные кружки содержат ненулевые элементы матрицы, а белые — нулевые. Клетка A1 уже приведена к почти треугольному виду, а у прямоугольной матрицы A3 последний столбец содержит ненулевые элементы. Обведенная группа черных кружков в клетке A3 обозначает те элементы матрицы, которые должны быть обнулены на q-м шаге.

Определим вектор , описывающий матрицу отражения, которая после преобразования подобия обнуляет элементы матрицы, обведенные замкнутой линией на рис.7. В дальнейшем индекс q, у вектора w будет для простоты опущен. Вектор w определим в виде:

.                                                             (26)

Согласно (26), матрица отражения (25), (25¢) может быть представлена в следующем блочно-диагональном виде:

.                    (27)

Из курса линейной алгебры известно, что, если матрицы представлены в одном и том же блочно-диагональном виде, то их перемножение можно осуществлять по обычным правилам матричного умножения, считая матричные клетки как обычные матричные элементы. Осуществим преобразование подобия с матрицей отражения (27), тогда

.            (28)

Клетка A1 в (28) уже приведена к почти треугольной форме. Осталось рассмотреть клетку WA3 и добиться ее обнуления. Непосредственной проверкой можно убедиться в том, что в матрице WA3 все столбцы нулевые, кроме последнего столбца, который можно представить в виде:

,                                                     (29)

где

.                                                                          (30)

Исходя из представления (29) добьемся того, чтобы все элементы столбца, кроме самого верхнего обратились в нуль. Это сделать легко, положив

.                                                           (31)

Из (29) найдем также wq +1, т.е.

.                                                             (32)

Подставляя (31), (32) в условие нормировки (w,w) = 1, находим

.                  (33)

С другой стороны, подставляя (31), (32) в (30), находим

.                                                   (34)

Согласно (34), можно заметить, что  вещественное выражение, а после вычитания уравнения (34) из (33), найдем

.                                                               (35)

После подстановки (35) в (34), имеем

.                                                     (36)

Второй член в правой части (36) должен быть вещественным, т.е.

                                        (37)

где

                                     (38)

Поскольку в формулах (31), (32) при определении вектора нормали к гиперплоскости отражения нам приходится делить на a, постольку выгодно выбрать нечетное значение k в формуле (37), чтобы не столкнуться с возможностью деления на нуль или близкое к нулю значение. В итоге можно получить

.                                              (39)

Заметим, что матрица отражения (27) не меняется при замене , при этом a, согласно (30), заменяется на . С учетом неопределенности аргумента числа a, формулу (39) в оценке a можно считать завершающей.

Если преобразуется чисто вещественная матрица A, то переход от (36) к (39) сводится к преобразованию:

.                                                                (40)

Формулы (31), (32), (35), (38) — (40) полностью определяют преобразование подобия от матрицы A к матрице B с помощью матрицы отражения R.

Приведенная процедура разобрана для случая обнуления нижней части q-го столбца. Всего необходимо обработать n - 2 первых столбцов матрицы, т.е. q = 1,2,…,n - 2, чтобы произвольная матрица A преобразовалась в верхнюю почти треугольную матрицу S, а эрмитова — в трехдиагональную. Если  — матрицы отражения, последовательно преобразующие матрицу A к верхнему почти треугольному (трехдиагональному) виду, то

.

Как уже упоминалось ранее, после приведения матрицы к верхней почти треугольной (трехдиагональной) форме легко можно найти собственные значения и собственные вектора yi. Собственные значения преобразованной матрицы S такие же, как и у матрицы A, а собственные вектора вычисляются по формуле .

Подсчет числа арифметических операций при экономном использовании метода отражения дает следующие оценки для эрмитовой матрицы: на подсчет всех собственных значений требуется  операций, для нахождения всех собственных векторов — еще . Для решения полной проблемы собственных значений эрмитовых матриц метод отражений один из самых быстрых и устойчивых методов.

В пакете MATLAB приведение матрицы к верхней почти треугольной форме с помощью преобразования подобия унитарной матрицей осуществляется функцией hess. Это же преобразование в пакете MATLAB называется разложением Хессенберга. Типичное обращение к разложению Хессенберга выглядит следующим образом: [R,S] = hess(A), A = RSRH.

На листинге_№6 приведен код программы преобразования произвольной матрицы к верхней почти треугольной форме с помощью метода отражения по формулам (27), (28), (31), (32), (35), (38) — (40). Вычисляется время работы центрального процессора по преобразованию матрицы в зависимости от ее порядка и эта зависимость сравнивается с аналогичной, но при использовании встроенной в MATLAB функции hess, которая осуществляет такое же преобразование матрицы и тем же методом отражения.

 

Листинг_№6

%Программа приведения матрицы к верхней почти

%треугольной форме методом отражения

%очищаем рабочее пространство

clear all

%определяем максимальный порядок матрицы

nmax=403;

%организуем цикл преобразований матриц разного

%порядка

for n=3:20:nmax

%запоминаем начало работы процессора при

%преобразовании матрицы

t0=cputime;

%создаем случайную матрицу

A=randn(n);

%определяем цикл q-2 подобных

%преобразований отражения

for q=1:(n-2)

   u=0;

   for i=(q+1):n

       u=u+abs(A(i,q))^2;

   end

   %согласно теории вычисляем b(q+1,q)

   bq1q=sqrt(u);

   alpha=sqrt(2*bq1q*(bq1q+abs(A(q+1,q))));

   %формируем вектор нормали w к плоскости

   %отражения

   w=zeros(n,1);

   w(q+1)=(A(q+1,q)+bq1q*sign(A(q+1,q)))/alpha;

   for i=(q+2):n

       w(i)=A(i,q)/alpha;

   end

   %вычисляем матрицу отражения R при текущем

   %значении вектора w

   for i=1:n

       for j=1:n

           if i==j

               R(i,j)=1-2*w(i)*w(j);

           else

               R(i,j)=-2*w(i)*w(j);

           end

       end

   end

   %осуществляем подобное преобразование матрицы A

   %с помощью матрицы отражения R

   B=R*A*R;

   A=B;

end

%определяем время потраченное центральным процессором

%на преобразование матрицы A к верхнему почти

%треугольному виду методом отражения

t(n)=cputime-t0;

%аналогичную процедуру оценки времени центрального

%процессора проводим при использовании разложения

%Хессенберга с помощью функции hess

t0=cputime;

B=hess(randn(n));

thess(n)=cputime-t0;

end

%рисуем в одном окне график зависимости времени работы

%центрального процессора по преобразованию матрицы от

%порядка матрицы для нашей программы (маркер *) и для

%встроенной в MATLAB программы hess (марке "пентаграмма")

plot(3:20:nmax,t([3:20:nmax]),'-*',...

3:20:nmax,thess([3:20:nmax]),'-p');

 

На рис.8 приведена итоговая пара кривых производительности центрального процессора компьютера. Видно, что наша программа заметно уступает по производительности встроенной в MATLAB функции. Этому есть объяснение. Преобразование подобия по формуле (28) осуществлено в программе листинга_6 не оптимально. Предлагается самостоятельно так модифицировать код программы, чтобы приблизиться к производительности встроенной функции hess.

 

Рис.8. Сравнение производительности центрального
процессора для двух программ

 

Помимо метода отражения, используется также так называемый метод вращений[1]. И тот и другой методы относятся к прямым методам преобразования матриц к верхнему почти треугольному виду.

Наряду с прямыми методами разработаны и используются итерационные методы. К ним относится, например, метод Якоби, который преобразует эрмитову матрицу в диагональную с помощью преобразований вращения. В целом итерационные метод Якоби уступает по скорости методу отражений, его основное преимущество — надежность и единообразие вычисления всех собственных значений и собственных векторов. К итерационным методам относится также метод обобщенных вращений (развитый Эберлейн и В.В. Воеводиным), ортогональный степенной метод (предложен В.В. Воеводиным), треугольный степенной метод (предложен Бауэром), QR — алгоритм (предложен В.Н. Кублановской и Френсисом) основан на преобразовании матрицы к треугольной форме и ряд других алгоритмов.


Дата добавления: 2022-01-22; просмотров: 84; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!