Алгоритм Ланцоша с выборочной ортогонализацией
![]() | Эта работа прошла предварительную проверку Дата последней правки страницы: 07.12.2016 Данная работа соответствует формальным критериям. Проверено ASA. |
[math] \beta_0=0,q_0=0[/math] [math] q_{1} = \frac{b_{j}}{\|b\|_2}[/math], где [math] \|b\|_2 = \sqrt{\sum\limits_{j=1}^{n} b_j^2}[/math] [math] for\, j=1\,\, to\, \, k\, \, do:[/math] [math]z=Aq_j, [/math] [math]\alpha_j=q_j^Tz, [/math] [math]z=z-\alpha_jq_j-\beta_{j-1}q_{j-1}, [/math] [math]for\, i=1\,\, to\, \, j-1\, \, do: [/math] [math]if\, \beta_j|v_i(j)| \leqslant \sqrt{\varepsilon}\|T_j\| [/math] [math]z = z-(y^T_{i,j},z)y_{i,j} [/math] [math]\beta_{j}=\|z\|_2 [/math] [math]q_{j+1}=z/\beta_{j}, [/math]
A к вектору q_i.
[math]i.2\, \alpha_i = \sum\limits_{j=1}^{n}q_{i_j} z_j[/math] #Получаем результат скалярного произведения векторов [math]q_i[/math] и [math]z[/math].
i.3\, z_j = z_j - \alpha_i q_{i_j} - \beta_{i-1}q_{i-1_j}, \, j = 1,\,\dots\,, n #Вычисляем линейную комбинацию векторов.
i.4\, \beta_i = \|z\|_2 = \sqrt{\sum\limits_{j=1}^{n} z_j^2} #Считаем норму вектора z.
i.5 Проверка равенства \beta_i == 0 # Если норма оказалась равной нулю, то завершаем итерации и переходим к вычислению собственных векторов и собственных значений полученной матрицы. В обратном случае, продолжаем выполнения итераций.
i.6\, q_{i+1_j} = \frac{z_j}{\beta_i}, \; j = 1,\, \dots \,, n #Нормируем вектор z.
i.7\, Если выполнили k итераций, то завершаем выполнение итераций, переходим к следующему шагу. Иначе начинаем последующую итерацию цикла.
4. Вычисляем собственные значения и собственные вектора полученной матрицы T_k.