Участник:Kozlov Vladimir/Алгоритм Ланцоша для арифметики с плавающей точкой с полной переортогонализацией: различия между версиями

Материал из Алговики
Перейти к навигации Перейти к поиску
Строка 1: Строка 1:
 
== Свойства и структура алгоритма ==
 
== Свойства и структура алгоритма ==
 
=== Общее описание алгоритма ===
 
=== Общее описание алгоритма ===
'''Алгоритм Ланцоша''' — это итерационный алгоритм поиска <math>k</math> приближённых собственных значений симметричной вещественной матрицы <math>A</math> размера <math>n \times n</math>. Алгоритм применяется, когда матрица <math>A</math> слишком велика, чтобы к ней можно было применять точные прямые методы вычисления собственных значений. Алгоритм '''метод Рэлея-Ритца''' поиска приближённых собственных значений и '''метод Ланцоша''' построения крыловского подпространства.
+
'''Алгоритм Ланцоша''' — это итерационный алгоритм поиска <math>k</math> приближённых собственных значений симметричной вещественной матрицы <math>A</math> размера <math>n \times n</math>. Алгоритм применяется, когда матрица <math>A</math> слишком велика, чтобы к ней можно было применять точные прямые методы вычисления собственных значений. Алгоритм '''метод Рэлея Ритца''' поиска приближённых собственных значений и '''метод Ланцоша''' построения крыловского подпространства.
  
Метод Рэлея-Ритца является методом поиска <math>k</math> приближённых собственных значений симметричной вещественной матрицы <math>A</math> размера <math>n \times n</math>. Если <math>Q = [Q_k, Q_u]</math> — ортонормированная матрица размера <math>n \times n</math>, <math>Q_k</math> имеет размер <math>n \times k</math>, <math>Q_u</math> имеет размер <math>n \times n - k</math>, то можно записать равенство
+
Метод Рэлея Ритца является методом поиска <math>k</math> приближённых собственных значений симметричной вещественной матрицы <math>A</math> размера <math>n \times n</math>. Если <math>Q = [Q_k, Q_u]</math> — ортонормированная матрица размера <math>n \times n</math>, <math>Q_k</math> имеет размер <math>n \times k</math>, <math>Q_u</math> имеет размер <math>n \times n - k</math>, то можно записать равенство
  
 
<math>T = Q^T A Q = [Q_k, Q_u]^T A [Q_k, Q_u] =  
 
<math>T = Q^T A Q = [Q_k, Q_u]^T A [Q_k, Q_u] =  
Строка 15: Строка 15:
 
\end{array} \right].</math>
 
\end{array} \right].</math>
  
Метод Рэлея-Ритца заключается в том, что собственные значения матрицы <math>T_k</math> объявляются приближёнными собственными значениями матрицы <math>A</math>. Можно показать, что
+
Метод Рэлея Ритца заключается в том, что собственные значения матрицы <math>T_k = Q_k^T A Q_k</math> объявляются приближёнными собственными значениями матрицы <math>A</math>. Такое приближение является в некотором смысле «наилучшим»: можно показать, что если <math>T_k = V \Lambda V^{-1}</math> — спектральное разложение <math>T_k</math>, то пара <math>(Q_k V, \Lambda)</math> минимизирует функционал <math>L(P_k, D) = \Vert A P_k - P_k D \Vert_2</math>, причём <math>L(Q_k V, \Lambda) = \Vert T_{ku} \Vert_2</math>, то есть <math>A \approx (Q_k V) \Lambda (Q_k V)^{-1}</math> — приближённое спектральное разложение матрицы <math>A</math>. Из этого также видно, что метод Рэлея — Ритца позволяет получать приближения для собственных векторов матрицы <math>A</math>. Более того, можно показать, что собственные значения <math>T</math> отличаются от некоторых собственных значений <math>A</math> не более чем на <math>\Vert T_{ku} \Vert_2</math>. Метод Ланцоша — это метод построения матрицы <math>Q</math>, при использовании которого, во-первых, матрица <math>T</math> оказывается симметричной трёхдиагональной, во-вторых, столбцы <math>Q</math> и <math>T</math> вычисляются последовательно.
 +
 
 +
В теории в методе Ланцоша для вычисления каждого следующего столбца <math>q_{j + 1}</math> матрицы <math>Q</math> достаточно знать только <math>q_{j - 1}</math> и <math>q_{j}</math> в силу трёхдиагональности матрицы <math>T</math>. На практике из-за ошибок округления, если не предпринимать специальных мер, набор векторов <math>q_{1}, \dots, q_{k}</math> перестаёт быть ортогональным. Для борьбы с этим явлением на каждом шаге метода Ланцоша приходится выполнять так называемую переортогонализацию — повторно запускать процесс ортогонализации Грама-Шмидта.
  
 
=== Математическое описание алгоритма ===
 
=== Математическое описание алгоритма ===

Версия 17:03, 15 октября 2016

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

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

Алгоритм Ланцоша — это итерационный алгоритм поиска [math]k[/math] приближённых собственных значений симметричной вещественной матрицы [math]A[/math] размера [math]n \times n[/math]. Алгоритм применяется, когда матрица [math]A[/math] слишком велика, чтобы к ней можно было применять точные прямые методы вычисления собственных значений. Алгоритм метод Рэлея — Ритца поиска приближённых собственных значений и метод Ланцоша построения крыловского подпространства.

Метод Рэлея — Ритца является методом поиска [math]k[/math] приближённых собственных значений симметричной вещественной матрицы [math]A[/math] размера [math]n \times n[/math]. Если [math]Q = [Q_k, Q_u][/math] — ортонормированная матрица размера [math]n \times n[/math], [math]Q_k[/math] имеет размер [math]n \times k[/math], [math]Q_u[/math] имеет размер [math]n \times n - k[/math], то можно записать равенство

[math]T = Q^T A Q = [Q_k, Q_u]^T A [Q_k, Q_u] = \left[ \begin{array}{cc} Q_k^T A Q_k & Q_k^T A Q_u\\ Q_u^T A Q_k & Q_u^T A Q_u \end{array} \right] = \left[ \begin{array}{cc} T_{k} & T_{ku}^T\\ T_{ku} & T_{u} \end{array} \right].[/math]

Метод Рэлея — Ритца заключается в том, что собственные значения матрицы [math]T_k = Q_k^T A Q_k[/math] объявляются приближёнными собственными значениями матрицы [math]A[/math]. Такое приближение является в некотором смысле «наилучшим»: можно показать, что если [math]T_k = V \Lambda V^{-1}[/math] — спектральное разложение [math]T_k[/math], то пара [math](Q_k V, \Lambda)[/math] минимизирует функционал [math]L(P_k, D) = \Vert A P_k - P_k D \Vert_2[/math], причём [math]L(Q_k V, \Lambda) = \Vert T_{ku} \Vert_2[/math], то есть [math]A \approx (Q_k V) \Lambda (Q_k V)^{-1}[/math] — приближённое спектральное разложение матрицы [math]A[/math]. Из этого также видно, что метод Рэлея — Ритца позволяет получать приближения для собственных векторов матрицы [math]A[/math]. Более того, можно показать, что собственные значения [math]T[/math] отличаются от некоторых собственных значений [math]A[/math] не более чем на [math]\Vert T_{ku} \Vert_2[/math]. Метод Ланцоша — это метод построения матрицы [math]Q[/math], при использовании которого, во-первых, матрица [math]T[/math] оказывается симметричной трёхдиагональной, во-вторых, столбцы [math]Q[/math] и [math]T[/math] вычисляются последовательно.

В теории в методе Ланцоша для вычисления каждого следующего столбца [math]q_{j + 1}[/math] матрицы [math]Q[/math] достаточно знать только [math]q_{j - 1}[/math] и [math]q_{j}[/math] в силу трёхдиагональности матрицы [math]T[/math]. На практике из-за ошибок округления, если не предпринимать специальных мер, набор векторов [math]q_{1}, \dots, q_{k}[/math] перестаёт быть ортогональным. Для борьбы с этим явлением на каждом шаге метода Ланцоша приходится выполнять так называемую переортогонализацию — повторно запускать процесс ортогонализации Грама-Шмидта.

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

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

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

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

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

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

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

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

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

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

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

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

3 Литература