Участник:AleksLevin/Алгоритм Ланцоша вычисления собственных значений симметричной матрицы для точной арифметики (без переортогонализации): различия между версиями

Материал из Алговики
Перейти к навигации Перейти к поиску
Строка 14: Строка 14:
  
 
== Математическое описание алгоритма ==
 
== Математическое описание алгоритма ==
Для лучшего понимания описания, данного в этом пункте статьи, рекомендуется ознакомиться с параграфом ''6.6 Методы Крыловского подпространства'' [2, с.313]. Здесь же дано краткое описание всех переменных, математических операций и необходимый теоретический минимум.
+
Для лучшего понимания описания, данного в этом пункте статьи, рекомендуется ознакомиться с параграфом ''6.6 Методы Крыловского подпространства'' [2, с.313].  
 +
Здесь же дано краткое описание всех переменных, математических операций и необходимый теоретический минимум.
 +
 
 +
Алгоритм Ланцоша для вычисления <math style="vertical-align:0%;>k</math> собственных значений и собственных векторов вещественной симметричной матрицы <math style="vertical-align:0%;>A=A^T</math> в точной арифметике [2, с.381] :
  
Алгоритм Ланцоша для вычисления собственных значений и собственных векторов вещественной симметричной матрицы <math style="vertical-align:0%;>A=A^T</math> в точной арифметике [2, с.381] :
 
 
<math>
 
<math>
 
\begin{align}
 
\begin{align}
Строка 32: Строка 34:
 
</math>
 
</math>
  
В продемонстрированном
+
 
 +
В продемонстрированном выше алгоритме <math style="vertical-align:0%;>b</math> - заданный вещественный вектор. Также полагается известным алгоритм вычисления произведения матрицы <math style="vertical-align:0%;>A</math> на вектор <math style="vertical-align:0%;>x</math>.
 +
Введём матрицу Крылова, определяемую следующим соотношением: <math>K_j = [b,Ab,A^2b,...,A^{j-1}b]</math>.
 +
 
 +
Далее, на практике, матрица <math style="vertical-align:0%;>K</math> заменяется матрицей <math style="vertical-align:-20%;>Q</math>, такой, что при любом числе <math style="vertical-align:0%;>k</math> линейные оболочки первых <math style="vertical-align:0%;>k</math> столбцов в <math style="vertical-align:0%;>K</math> и <math style="vertical-align:-20%;>Q</math> являются одним и тем же подпространством [2,c.315].
 +
Тогда матрица <math style="vertical-align:-20%;>Q</math>, в отличие от матрицы <math style="vertical-align:0%;>K</math>, хорошо обусловлена и легко обратима. В результате получаем матрицу <math>Q_j = [q_1, q_2, \dots, q_j]</math> размерности <math>n \times j</math>, столбцы которой ортогональны и являются базисом подпространства Крылова.
 +
 
 +
В алгоритме Ланцоша вычислению подлежит столько первых столбцов в матрице <math style="vertical-align:-20%;>Q_j</math>, сколько необходимо для получения требуемого приближения к решению <math>A\,x\,=b\,\,(A\,x=\lambda \, x)</math>.
 +
 
 +
Затем на каждом шаге цикла формируем симметричную трёхдиагональную матрицу <math>T_j = Q^T_j A Q</math>, к которой применяем процесс Рэлея-Ритца для поиска её собственных значений.
 +
Эти собственные значения, они же числа Ритца, и полагаются приближёнными собственными значениями исходной матрицы <math style="vertical-align:0%;>A</math>.
  
 
== Вычислительное ядро алгоритма ==
 
== Вычислительное ядро алгоритма ==

Версия 23:46, 10 ноября 2016

Основные авторы описания: Левин А.Д. (студент, кафедра вычислительных методов, 604 группа)

1 Свойства и структура алгоритмов

1.1 Общее описание алгоритма

Данный алгоритм появился в 1950 г. и носит имя венгерского физика и математика Корнелия Ланцоша (венг. Lánczos Kornél). Алгоритм Ланцоша относится к итерационным методам вычисления собственных значений для матриц столь больших порядков [math] n[/math], что к ним нельзя применить прямые методы из-за ограничений по времени и памяти.

Сам Ланцош указывал, что его метод предназначен для отыскания нескольких собственных векторов симметричных матриц, хотя к методу сразу было обращено внимание, как к способу приведения всей матрицы к трёхдиагональному виду. Двадцатью годами позже канадский математик Крис Пэж показал, что, несмотря на чувствительность к округлениям, алгоритм Ланцоша - эффективное средство вычисления некоторых [math]k[/math] собственных чисел и соответствующих им собственных векторов [1, c.276].

Алгоритм Ланцоша для вычисления собственных значений симметричной матрицы [math]A[/math] соединяет в себе метод Ланцоша для построения последовательности подпространств Крылова и ортонормированных векторов Ланцоша и процедуру Рэлея-Ритца получения оптимальных приближений собственных значений и соответствующих векторов исходной матрицы [math]A[/math] [2, с.381].

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

1.2 Математическое описание алгоритма

Для лучшего понимания описания, данного в этом пункте статьи, рекомендуется ознакомиться с параграфом 6.6 Методы Крыловского подпространства [2, с.313]. Здесь же дано краткое описание всех переменных, математических операций и необходимый теоретический минимум.

Алгоритм Ланцоша для вычисления [math]k[/math] собственных значений и собственных векторов вещественной симметричной матрицы [math]A=A^T[/math] в точной арифметике [2, с.381] :

[math] \begin{align} q_1 = & b/ \|b\|_2,\; \beta_0 = 0,\; q_0 = 0\\ for \; & j = 1 \; to \; k \\ & z = Aq_j\\ & \alpha_j = q^T_j z\\ & z = z - \alpha_j q_j - \beta_{j-1}q_{j-1}\\ & \beta_j = \|z\|_2\\ & If \; \beta_j == 0 \; then\; stop\; the\; algorithm \\ & \; q_{j+1} = z / \beta_j \\ & compute\; eigenvalues\; and \;eigenvectors\;of \;matrix \;T_j\;and\;estimate \;the\; errors\\ end \; & for \end{align} [/math]


В продемонстрированном выше алгоритме [math]b[/math] - заданный вещественный вектор. Также полагается известным алгоритм вычисления произведения матрицы [math]A[/math] на вектор [math]x[/math]. Введём матрицу Крылова, определяемую следующим соотношением: [math]K_j = [b,Ab,A^2b,...,A^{j-1}b][/math].

Далее, на практике, матрица [math]K[/math] заменяется матрицей [math]Q[/math], такой, что при любом числе [math]k[/math] линейные оболочки первых [math]k[/math] столбцов в [math]K[/math] и [math]Q[/math] являются одним и тем же подпространством [2,c.315]. Тогда матрица [math]Q[/math], в отличие от матрицы [math]K[/math], хорошо обусловлена и легко обратима. В результате получаем матрицу [math]Q_j = [q_1, q_2, \dots, q_j][/math] размерности [math]n \times j[/math], столбцы которой ортогональны и являются базисом подпространства Крылова.

В алгоритме Ланцоша вычислению подлежит столько первых столбцов в матрице [math]Q_j[/math], сколько необходимо для получения требуемого приближения к решению [math]A\,x\,=b\,\,(A\,x=\lambda \, x)[/math].

Затем на каждом шаге цикла формируем симметричную трёхдиагональную матрицу [math]T_j = Q^T_j A Q[/math], к которой применяем процесс Рэлея-Ритца для поиска её собственных значений. Эти собственные значения, они же числа Ритца, и полагаются приближёнными собственными значениями исходной матрицы [math]A[/math].

1.3 Вычислительное ядро алгоритма

1.4 Макроструктура алгоритма

1.5 Схема реализации последовательного алгоритма

1.6 Последовательная сложность алгоритма

1.7 Информационный граф

1.8 Ресурс параллелизма алгоритма

1.9 Входные и выходные данные алгоритма

1.10 Свойства алгоритма

2 Программная реализация алгоритма

2.1 Особенности реализации последовательного алгоритма

2.2 Локальность данных и вычислений

2.3 Возможные способы и особенности параллельной реализации алгоритма

2.4 Масштабируемость алгоритма и его реализации

2.5 Динамические характеристики и эффективность реализации алгоритма

2.6 Выводы для классов архитектур

2.7 Существующие реализации алгоритма

3 Литература

[1] Парлетт Б. Симметричная проблема собственных значений. Численные методы //М.: Мир. - 1983. - С. 276-294

[2] James W. Demmel Вычислительная линейная алгебра. Теория и приложения //Мир. - 2001. С. 381-391