Алгоритм Ланцоша с выборочной ортогонализацией
Свойства и структура алгоритма
Общее описание алгоритма
Алгоритм Лáнцоша представляет собой мощный метод для нахождения нескольких собственных значений и собственных векторов симметричной матрицы А и для решения систем линейных уравнений. Алгоритм особенно эффективен, если матрица А разреженная и большого размера. Однако любая практическая реализация этого алгоритма страдает от ошибок округления, т.к. векторы Ланцоша теряют взаимную ортогональность. Для того чтобы поддерживать некоторый уровень ортогональности, появились методы полной переортогонализации и выборочной ортогонализации. В этой работе мы рассмотрим последний метод в качестве способа для поддержания ортогональности среди векторов Ланцоша. Он состоит в том, что на каждом шаге проверяется
[math]\displaystyle{ \beta_0=0,q_0=0 }[/math] [math]\displaystyle{ q_{1} = \frac{b_{j}}{\|b\|_2} }[/math], где [math]\displaystyle{ \|b\|_2 = \sqrt{\sum\limits_{j=1}^{n} b_j^2} }[/math] [math]\displaystyle{ for\, j=1\,\, to\, \, k\, \, do: }[/math] [math]\displaystyle{ z=Aq_j, }[/math] [math]\displaystyle{ \alpha_j=q_j^Tz, }[/math] [math]\displaystyle{ z=z-\alpha_jq_j-\beta_{j-1}q_{j-1}, }[/math] [math]\displaystyle{ for\, i=1\,\, to\, \, j-1\, \, do: }[/math] [math]\displaystyle{ if\, \beta_j|v_i(j)| \leqslant \sqrt{\varepsilon}\|T_j\| }[/math] [math]\displaystyle{ z = z-(y^T_{i,j},z)y_{i,j} }[/math], где [math]\displaystyle{ y_{i,j} = Q_jv_i }[/math] [math]\displaystyle{ \beta_{j}=\|z\|_2 }[/math] [math]\displaystyle{ q_{j+1}=z/\beta_{j}, }[/math] Вычисляем собственные значения и собственные векторы полученной матрицы [math]\displaystyle{ T_j }[/math].