Участник: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> | <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 Общее описание алгоритма
- 1.2 Математическое описание алгоритма
- 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 Свойства и структура алгоритмов
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