Алгоритм Ланцоша с выборочной ортогонализацией
| Файл:Symbol wait.svg | Эта работа прошла предварительную проверку Дата последней правки страницы: 06.12.2016 Данная работа соответствует формальным критериям. Проверено ASA. |
[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_j = \sum\limits_{m=1}^{n} a_{jm} q_{i_m}, \; j = 1,\,\dots\,, n }[/math] #Считаем результат применения линейного оператора [math]\displaystyle{ z&=Aq_j, }[/math] [math]\displaystyle{ \alpha_j&=q_j^Tz, }[/math] [math]\displaystyle{ z&=z-\alpha_jq_j-\beta_{j}q_{j-1}, }[/math] [math]\displaystyle{ \beta_{j+1}&=||z|| }[/math] [math]\displaystyle{ q_{j+1}&=z/\beta_{j+1}, }[/math] [math]\displaystyle{ }[/math] [math]\displaystyle{ }[/math] [math]\displaystyle{ }[/math]
[math]\displaystyle{ A }[/math] к вектору [math]\displaystyle{ q_i }[/math].
[math]\displaystyle{ i.2\, \alpha_i = \sum\limits_{j=1}^{n}q_{i_j} z_j }[/math] #Получаем результат скалярного произведения векторов [math]\displaystyle{ q_i }[/math] и [math]\displaystyle{ z }[/math].
[math]\displaystyle{ i.3\, z_j = z_j - \alpha_i q_{i_j} - \beta_{i-1}q_{i-1_j}, \, j = 1,\,\dots\,, n }[/math] #Вычисляем линейную комбинацию векторов.
[math]\displaystyle{ i.4\, \beta_i = \|z\|_2 = \sqrt{\sum\limits_{j=1}^{n} z_j^2} }[/math] #Считаем норму вектора [math]\displaystyle{ z }[/math].
[math]\displaystyle{ i.5 }[/math] Проверка равенства [math]\displaystyle{ \beta_i == 0 }[/math] # Если норма оказалась равной нулю, то завершаем итерации и переходим к вычислению собственных векторов и собственных значений полученной матрицы. В обратном случае, продолжаем выполнения итераций.
[math]\displaystyle{ i.6\, q_{i+1_j} = \frac{z_j}{\beta_i}, \; j = 1,\, \dots \,, n }[/math] #Нормируем вектор [math]\displaystyle{ z }[/math].
[math]\displaystyle{ i.7\, }[/math] Если выполнили [math]\displaystyle{ k }[/math] итераций, то завершаем выполнение итераций, переходим к следующему шагу. Иначе начинаем последующую итерацию цикла.
[math]\displaystyle{ 4. }[/math] Вычисляем собственные значения и собственные вектора полученной матрицы [math]\displaystyle{ T_k }[/math].