Участник:Nikita270a
Алгоритм Ланцоша с полной переортогонализацией | |
Последовательный алгоритм | |
Последовательная сложность | O(n^2) |
Объём входных данных | \frac{n(n + 1)}{2} |
Объём выходных данных | k(n + 1) |
Параллельный алгоритм | |
Высота ярусно-параллельной формы | O(k) |
Ширина ярусно-параллельной формы | O(n^2) |
Авторы: Ялексейчук Н.Н 616, Ястребов К.С. 609.
Содержание
1 Общее описание алгоритма.
Алгоритм Ланцоша ищет собвственные значения и собственные векторы для симетричной матрицы A вещественных чисел. Является итерацонным алгоритмом. Алгоритм Ланцоша использует степенной метод ( b_{k+1} = \frac{Ab_k}{||Ab_k||} ) для поиска наибольших собственных значений и векторов матриц.
В отличие от прямых алгоритмов требует мешьше памяти и мощности, что является несомненным плюсом для больших матриц.
Несмотря на свою скорость работы и экономию памяти, сначала не был популярным алгоритмом из – за недостаточной вычислительной устойчивости. В 1970 году Ojalvo и Newman показали способ сделать алгоритм достаточно устойчивым. В этой же статье алгоритм был применен к расчету инженерной конструкции с большим количеством узлов, которые подвергались динамической нагрузке.
2 Математическое описание алгоритма
Памятка: Степенной метод нахождения наибольшего собственного числа матрицы можно сформулировать в предельном виде: если b_0 – случайный вектор, и b_n+1 = Ab_n , тогда для больших чисел n предел x_n/||x_n|| стремится к нормированному наибольшему собственному вектору.
Алгоритм Ланцоша комбинирует метод Ланцоша для нахождения крыловского подпространства и метод Релэя – Ритца.
Подпространство Крылова для степенного метода: K_m(v,A) = span[x_1, Ax_1, A^2x_1, ..., A^{k-1}x_1]
В качестве входных данных для алгоритма Ланцоша подаются квадратная матрица размерности nXn: A=A^T; а так же вектор начального приближения b. Метод осуществляет поиск трехдиагональной симметричной матрицы T_k=Q_k^TAQ_k. Причем собственные значения T_k таковы, что приближают собственные значения исходной матрицы A. То есть на каждом k-м шаге из ортонормированных векторов Ланцоша строится матрица Q_k = [q_1,q_2,...,q_k] и в качестве приближенных собственных значений матрицы A принимаются числа Ритца. Пусть T_k=VAV^T есть спектральное разложение матрицы T_k, столбцы матрицы Q_kV рассматриваются как приближения к соответсвующим собственным векторам матрицы A[1]:
3 Схема
Input: A, b (random vector with unit norm)
- \begin{align} q_1 = b/||b||_2, \beta_0 = 0, q_0 = 0 \\ for j = 1 ,...,k \\ q_1&=b/||b||,\beta_0=0,q_o=0. \\ z&=Aq_j, \\ \alpha_j&=q_j^Tz, \\ z&=z-\alpha_jq_j-\beta_{j-1}q_{j-1}, \\ \beta&=||z||,\\ q_{j+1}&=z/\beta_j, \quad j \in [1, k]. \end{align}
4 Информационный граф
5 Библиотеки реализующие алгоритм
The IETL Project http://www.comp-phys.org/software/ietl/ C++
NAG Library http://www.nag.com/content/nag-library C, C++, Fortran, C#, MATLAB, R
ARPACK https://people.sc.fsu.edu/~jburkardt/m_src/arpack/arpack.html MATLAB
GrapLab https://turi.com/products/create/open_source.html C++
С частично переортаганализацией
LANSO/PLANSO http://web.cs.ucdavis.edu/~bai/ET/lanczos_methods/overview_PLANSO.html Fortran (уже распараллелена)
- ↑ Дж. Деммель «Вычислительная линейная алгебра» (стр. 391)