Алгоритм Ланцоша с выборочной ортогонализацией: различия между версиями

Материал из Алговики
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Строка 5: Строка 5:
 
  <math> q_{1} = \frac{b_{j}}{\|b\|_2}</math>, где <math> \|b\|_2 = \sqrt{\sum\limits_{j=1}^{n} b_j^2}</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> for\, j=1\,\, to\, \, k\, \, do:</math>
    <math>z_j = \sum\limits_{m=1}^{n} a_{jm} q_{i_m}, \; j = 1,\,\dots\,, n</math> #Считаем результат применения линейного оператора   
+
     <math>z=Aq_j,  </math>
     <math>z&=Aq_j,  </math>
+
     <math>\alpha_j=q_j^Tz, </math>
     <math>\alpha_j&=q_j^Tz, </math>
+
     <math>z=z-\alpha_jq_j-\beta_{j-1}q_{j-1},  </math>
     <math>z&=z-\alpha_jq_j-\beta_{j}q_{j-1},  </math>
+
     <math>for\, i=1\,\, to\, \, j-1\, \, do: </math>
     <math>\beta_{j+1}&=||z|| </math>
+
        <math>if\,  \beta_j|v_i(j)| \leqslant \sqrt{\varepsilon}\|T_j\| </math>
    <math>q_{j+1}&=z/\beta_{j+1}, </math>
+
            <math>z = z-(y^T_{i,j},z)y_{i,j} </math>
     <math> </math>
+
     <math>\beta_{j}=\|z\|_2 </math>
     <math> </math>
+
     <math>q_{j+1}=z/\beta_{j}, </math>
     <math> </math>
+
      
 
<math>A</math> к вектору <math>q_i</math>.
 
<math>A</math> к вектору <math>q_i</math>.
  

Версия 02:45, 7 декабря 2016

Symbol wait.svgЭта работа прошла предварительную проверку
Дата последней правки страницы:
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]
    

[math]A[/math] к вектору [math]q_i[/math].

[math]i.2\, \alpha_i = \sum\limits_{j=1}^{n}q_{i_j} z_j[/math] #Получаем результат скалярного произведения векторов [math]q_i[/math] и [math]z[/math].

[math]i.3\, z_j = z_j - \alpha_i q_{i_j} - \beta_{i-1}q_{i-1_j}, \, j = 1,\,\dots\,, n[/math] #Вычисляем линейную комбинацию векторов.

[math]i.4\, \beta_i = \|z\|_2 = \sqrt{\sum\limits_{j=1}^{n} z_j^2}[/math] #Считаем норму вектора [math]z[/math].

[math]i.5[/math] Проверка равенства [math]\beta_i == 0[/math] # Если норма оказалась равной нулю, то завершаем итерации и переходим к вычислению собственных векторов и собственных значений полученной матрицы. В обратном случае, продолжаем выполнения итераций.

[math]i.6\, q_{i+1_j} = \frac{z_j}{\beta_i}, \; j = 1,\, \dots \,, n[/math] #Нормируем вектор [math]z[/math].

[math]i.7\,[/math] Если выполнили [math]k[/math] итераций, то завершаем выполнение итераций, переходим к следующему шагу. Иначе начинаем последующую итерацию цикла.

[math]4.[/math] Вычисляем собственные значения и собственные вектора полученной матрицы [math]T_k[/math].