<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nikita270a</id>
	<title>Алговики - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nikita270a"/>
	<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/ru/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Nikita270a"/>
	<updated>2026-10-22T18:03:53Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Nikita270a&amp;diff=13059</id>
		<title>Участник:Nikita270a</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Nikita270a&amp;diff=13059"/>
		<updated>2016-10-17T22:14:03Z</updated>

		<summary type="html">&lt;p&gt;Nikita270a: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Ланцоша с полной переортогонализацией&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(n^2)+O(nk^2) &amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;\frac{n(n + 1)}{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;k(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Авторы: Алексейчук Н.Н 616, Ястребов К.С. 609.&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма. ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм Ланцоша ищет собвственные значения и собственные векторы для симетричной матрицы A вещественных чисел. Является итерацонным алгоритмом. Алгоритм Ланцоша использует степенной метод (&amp;lt;math&amp;gt; b_{k+1} = \frac{Ab_k}{||Ab_k||} &amp;lt;/math&amp;gt;) для поиска наибольших собственных значений и векторов матриц.   &lt;br /&gt;
&lt;br /&gt;
В отличие от прямых алгоритмов требует мешьше памяти и мощности, что является несомненным плюсом для больших матриц. &lt;br /&gt;
&lt;br /&gt;
Несмотря на свою скорость работы и экономию памяти, сначала не был популярным алгоритмом из – за недостаточной вычислительной устойчивости. В 1970 году Ojalvo и Newman [http://arc.aiaa.org/doi/abs/10.2514/3.5878?journalCode=aiaaj] показали способ сделать алгоритм достаточно устойчивым. В этой же статье алгоритм был применен к расчету инженерной конструкции с большим количеством узлов, которые подвергались динамической нагрузке.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Памятка:&lt;br /&gt;
Степенной метод нахождения наибольшего собственного числа матрицы можно сформулировать в предельном виде: если &amp;lt;math&amp;gt; b_0 &amp;lt;/math&amp;gt; – случайный вектор, и &amp;lt;math&amp;gt; b_n+1 = Ab_n &amp;lt;/math&amp;gt;, тогда для больших чисел n предел &amp;lt;math&amp;gt;x_n/||x_n|| &amp;lt;/math&amp;gt; стремится к нормированному наибольшему собственному вектору.&lt;br /&gt;
&lt;br /&gt;
Алгоритм Ланцоша комбинирует метод Ланцоша для нахождения крыловского подпространства и метод Релэя – Ритца. &lt;br /&gt;
&lt;br /&gt;
Подпространство Крылова для степенного метода:&lt;br /&gt;
&amp;lt;math&amp;gt; K_m(v,A) = span[x_1, Ax_1, A^2x_1, ..., A^{k-1}x_1] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В качестве входных данных для алгоритма Ланцоша подаются квадратная матрица размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;X&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;A=A^T&amp;lt;/math&amp;gt;; а так же вектор начального приближения &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Метод осуществляет поиск трехдиагональной симметричной матрицы &amp;lt;math&amp;gt;T_k=Q_k^TAQ_k&amp;lt;/math&amp;gt;. Причем собственные значения &amp;lt;math&amp;gt;T_k&amp;lt;/math&amp;gt; таковы, что приближают собственные значения исходной матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;. То есть на каждом &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;-м шаге из ортонормированных векторов Ланцоша строится матрица &amp;lt;math&amp;gt;Q_k = [q_1,q_2,...,q_k]&amp;lt;/math&amp;gt; и в качестве приближенных собственных значений матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; принимаются числа Ритца.&lt;br /&gt;
&lt;br /&gt;
Из-за ошибок округления вектора &amp;lt;math&amp;gt; A^{k-1}x_1 &amp;lt;/math&amp;gt;, формирующие подпространство Крылова, становятся неортогональными. Чтобы решить данную прорблему, проводят переортогонализацию методом Грамма-Шмидта.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Вычислительным ядром данного алгоритма являются следующие шаги:&lt;br /&gt;
*1.   &amp;lt;math&amp;gt;Aq=( \sum\nolimits_{i=^n}a_{1i}q_i, \sum\nolimits_{i=2}^na_{2i}q_i, ..., \sum\nolimits_{i=1}^na_{ni}q_i)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*2.    &amp;lt;math&amp;gt;z=z-\sum\nolimits_{i=1}^{k}(z^Tq_i)q_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данном случае первая операция выполняет умножение симметричной матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;X&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; на &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;-мерный вектор &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt;, вследствие чего вычислительная сложность выполнения заключается в &amp;lt;math&amp;gt;n^2&amp;lt;/math&amp;gt; умножений и &amp;lt;math&amp;gt;n^2-n&amp;lt;/math&amp;gt; сложений. Второе действие является процессом ортогонализации Грама-Шмидта. В последнем действии вычисляются &amp;lt;math&amp;gt;k^2n+k(n+2)&amp;lt;/math&amp;gt; умножений и &amp;lt;math&amp;gt;k^2n + k(n + 1) + 2&amp;lt;/math&amp;gt; операций сложения.&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
*1. Скалярное произведение: &amp;lt;math&amp;gt; (x,y) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*2. Суммирование:  &amp;lt;math&amp;gt; x+\alpha y &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Схема ==&lt;br /&gt;
Input: A, b (random vector with unit norm)&lt;br /&gt;
: &amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\begin{align}&lt;br /&gt;
q_1 = b/||b||_2, \beta_0 = 0, q_0 = 0 \\&lt;br /&gt;
j = 1 ,...,k \\&lt;br /&gt;
q_1&amp;amp;=b/||b||,\beta_0=0,q_o=0. \\&lt;br /&gt;
z&amp;amp;=Aq_j, \\&lt;br /&gt;
\alpha_j&amp;amp;=q_j^Tz, \\&lt;br /&gt;
z&amp;amp;=z-\alpha_jq_j-\beta_{j-1}q_{j-1}, \\&lt;br /&gt;
\beta&amp;amp;=||z||,\\&lt;br /&gt;
q_{j+1}&amp;amp;=z/\beta_j, \quad j \in [1, k].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\end{align}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Вычислительная сложность==&lt;br /&gt;
Количество операций складывается из количества операций для классического метода Ланцоша[https://books.google.ru/books?id=T8EPBwAAQBAJ&amp;amp;pg=PA242&amp;amp;lpg=PA242&amp;amp;dq=lanczos+algorithm+complexity&amp;amp;source=bl&amp;amp;ots=kWVnVP_uJp&amp;amp;sig=a-4GTEt6vRE8YhR1R6dOPwvOSIk&amp;amp;hl=en&amp;amp;sa=X&amp;amp;ved=0ahUKEwiQ2u3U4-LPAhWvbZoKHe0QBaw4ChDoAQg7MAY#v=onepage&amp;amp;q=lanczos%20algorithm%20complexity&amp;amp;f=false] и и количества операций для переортогонализации методом грамма-Шмидта[http://stackoverflow.com/questions/27986225/computational-complexity-of-gram-schmidt-orthogonalization-algorithm].&lt;br /&gt;
&lt;br /&gt;
Итоговая сложность составляет &amp;lt;math&amp;gt;O(n^2)+O(nk^2) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Graph.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные==&lt;br /&gt;
На вход принимается сама матрица &amp;lt;math&amp;gt; A \in R^{n \times n}&amp;lt;/math&amp;gt;, случайный вектор &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; (впрочем возможен вариант, при котором этот вектор генерируется случайным образом). &lt;br /&gt;
Ввиду симметричности входной матрицы достаточно передать лишь ее верхнюю треугольную матрицу, что дает объем входных данных &amp;lt;math&amp;gt;\frac{n(n + 1)}{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Выходными данными для &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;ой итерации являются вектор &amp;lt;math&amp;gt; Aq_j &amp;lt;/math&amp;gt; и собственное число &amp;lt;math&amp;gt; \lambda &amp;lt;/math&amp;gt;. Общий объем выходных данных &amp;lt;math&amp;gt;k(n+1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Свойства алгоритма==&lt;br /&gt;
Если &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; эрмитова матрица, то алгоритм Ланцоша и Bi-Lanczos сходятся к одинаковым трехдиагональным матрицам ритца[http://ta.twi.tudelft.nl/nw/users/vuik/papers/DUT-TWI-96-44.pdf].&lt;br /&gt;
&lt;br /&gt;
При реализации классического алгоритма Ланцоша возникает большая погрешность при округлении. Вариант с полной переортогонализацией позволяет избегать больших погрешностей, однако является более ресурсоемким. Существует промежуточный вариант с частичной переортогонализацией. &lt;br /&gt;
&lt;br /&gt;
Алгоритм может завершить свою работу досрочно, когда найденные собственные значения будут достаточно близки к целевым.&lt;br /&gt;
&lt;br /&gt;
==Реусурс параллелизма алгоритма==&lt;br /&gt;
&lt;br /&gt;
Хотя алгоритм является итерационным, возможно распараллелить внутри каждой итерации умножение матрицы на вектор и процесс переортогонализации Грамма-Шмидта.&lt;br /&gt;
&lt;br /&gt;
Процесс умножения матриц matvec можно распараллелить несколькими способами[https://eprint.iacr.org/2011/416.pdf].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Библиотеки реализующие алгоритм==&lt;br /&gt;
&lt;br /&gt;
The IETL Project http://www.comp-phys.org/software/ietl/ C++&lt;br /&gt;
&lt;br /&gt;
NAG Library http://www.nag.com/content/nag-library C, C++, Fortran, C#, MATLAB, R&lt;br /&gt;
&lt;br /&gt;
ARPACK https://people.sc.fsu.edu/~jburkardt/m_src/arpack/arpack.html MATLAB&lt;br /&gt;
&lt;br /&gt;
GrapLab https://turi.com/products/create/open_source.html C++&lt;br /&gt;
&lt;br /&gt;
С частичной переортаганализацией&lt;br /&gt;
&lt;br /&gt;
LANSO/PLANSO http://web.cs.ucdavis.edu/~bai/ET/lanczos_methods/overview_PLANSO.html Fortran (уже распараллелена)&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
Ojalvo, I.U. and Newman, M., &amp;quot;Vibration modes of large structures by an automatic matrix-reduction method&amp;quot;, AIAA J., 8 (7), 1234–1239 (1970).&lt;/div&gt;</summary>
		<author><name>Nikita270a</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Nikita270a&amp;diff=12918</id>
		<title>Участник:Nikita270a</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Nikita270a&amp;diff=12918"/>
		<updated>2016-10-16T23:43:40Z</updated>

		<summary type="html">&lt;p&gt;Nikita270a: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Ланцоша с полной переортогонализацией&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;O(k)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;\frac{n(n + 1)}{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;k(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Авторы: Алексейчук Н.Н 616, Ястребов К.С. 609.&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма. ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм Ланцоша ищет собвственные значения и собственные векторы для симетричной матрицы A вещественных чисел. Является итерацонным алгоритмом. Алгоритм Ланцоша использует степенной метод (&amp;lt;math&amp;gt; b_{k+1} = \frac{Ab_k}{||Ab_k||} &amp;lt;/math&amp;gt;) для поиска наибольших собственных значений и векторов матриц.   &lt;br /&gt;
&lt;br /&gt;
В отличие от прямых алгоритмов требует мешьше памяти и мощности, что является несомненным плюсом для больших матриц. &lt;br /&gt;
&lt;br /&gt;
Несмотря на свою скорость работы и экономию памяти, сначала не был популярным алгоритмом из – за недостаточной вычислительной устойчивости. В 1970 году Ojalvo и Newman показали способ сделать алгоритм достаточно устойчивым. В этой же статье алгоритм был применен к расчету инженерной конструкции с большим количеством узлов, которые подвергались динамической нагрузке.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Памятка:&lt;br /&gt;
Степенной метод нахождения наибольшего собственного числа матрицы можно сформулировать в предельном виде: если &amp;lt;math&amp;gt; b_0 &amp;lt;/math&amp;gt; – случайный вектор, и &amp;lt;math&amp;gt; b_n+1 = Ab_n &amp;lt;/math&amp;gt;, тогда для больших чисел n предел &amp;lt;math&amp;gt;x_n/||x_n|| &amp;lt;/math&amp;gt; стремится к нормированному наибольшему собственному вектору.&lt;br /&gt;
&lt;br /&gt;
Алгоритм Ланцоша комбинирует метод Ланцоша для нахождения крыловского подпространства и метод Релэя – Ритца. &lt;br /&gt;
&lt;br /&gt;
Подпространство Крылова для степенного метода:&lt;br /&gt;
&amp;lt;math&amp;gt; K_m(v,A) = span[x_1, Ax_1, A^2x_1, ..., A^{k-1}x_1] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В качестве входных данных для алгоритма Ланцоша подаются квадратная матрица размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;X&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;A=A^T&amp;lt;/math&amp;gt;; а так же вектор начального приближения &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Метод осуществляет поиск трехдиагональной симметричной матрицы &amp;lt;math&amp;gt;T_k=Q_k^TAQ_k&amp;lt;/math&amp;gt;. Причем собственные значения &amp;lt;math&amp;gt;T_k&amp;lt;/math&amp;gt; таковы, что приближают собственные значения исходной матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;. То есть на каждом &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;-м шаге из ортонормированных векторов Ланцоша строится матрица &amp;lt;math&amp;gt;Q_k = [q_1,q_2,...,q_k]&amp;lt;/math&amp;gt; и в качестве приближенных собственных значений матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; принимаются числа Ритца.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Вычислительным ядром данного алгоритма являются следующие шаги:&lt;br /&gt;
*1.   &amp;lt;math&amp;gt;Aq=( \sum\nolimits_{i=^n}a_{1i}q_i, \sum\nolimits_{i=2}^na_{2i}q_i, ..., \sum\nolimits_{i=1}^na_{ni}q_i)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*2.    &amp;lt;math&amp;gt;z=z-\sum\nolimits_{i=1}^{k}(z^Tq_i)q_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данном случае первая операция выполняет умножение симметричной матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;X&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; на &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;-мерный вектор &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt;, вследствие чего вычислительная сложность выполнения заключается в &amp;lt;math&amp;gt;n^2&amp;lt;/math&amp;gt; умножений и &amp;lt;math&amp;gt;n^2-n&amp;lt;/math&amp;gt; сложений. Второе действие является процессом ортогонализации Грама-Шмидта. В последнем действии вычисляются &amp;lt;math&amp;gt;k^2n+k(n+2)&amp;lt;/math&amp;gt; умножений и &amp;lt;math&amp;gt;k^2n + k(n + 1) + 2&amp;lt;/math&amp;gt; операций сложения.&lt;br /&gt;
&lt;br /&gt;
== Схема ==&lt;br /&gt;
Input: A, b (random vector with unit norm)&lt;br /&gt;
: &amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\begin{align}&lt;br /&gt;
q_1 = b/||b||_2, \beta_0 = 0, q_0 = 0 \\&lt;br /&gt;
j = 1 ,...,k \\&lt;br /&gt;
q_1&amp;amp;=b/||b||,\beta_0=0,q_o=0. \\&lt;br /&gt;
z&amp;amp;=Aq_j, \\&lt;br /&gt;
\alpha_j&amp;amp;=q_j^Tz, \\&lt;br /&gt;
z&amp;amp;=z-\alpha_jq_j-\beta_{j-1}q_{j-1}, \\&lt;br /&gt;
\beta&amp;amp;=||z||,\\&lt;br /&gt;
q_{j+1}&amp;amp;=z/\beta_j, \quad j \in [1, k].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\end{align}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Graph.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Библиотеки реализующие алгоритм==&lt;br /&gt;
&lt;br /&gt;
The IETL Project http://www.comp-phys.org/software/ietl/ C++&lt;br /&gt;
&lt;br /&gt;
NAG Library http://www.nag.com/content/nag-library C, C++, Fortran, C#, MATLAB, R&lt;br /&gt;
&lt;br /&gt;
ARPACK https://people.sc.fsu.edu/~jburkardt/m_src/arpack/arpack.html MATLAB&lt;br /&gt;
&lt;br /&gt;
GrapLab https://turi.com/products/create/open_source.html C++&lt;br /&gt;
&lt;br /&gt;
С частично переортаганализацией&lt;br /&gt;
&lt;br /&gt;
LANSO/PLANSO http://web.cs.ucdavis.edu/~bai/ET/lanczos_methods/overview_PLANSO.html Fortran (уже распараллелена)&lt;/div&gt;</summary>
		<author><name>Nikita270a</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Nikita270a&amp;diff=12867</id>
		<title>Участник:Nikita270a</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Nikita270a&amp;diff=12867"/>
		<updated>2016-10-16T21:20:22Z</updated>

		<summary type="html">&lt;p&gt;Nikita270a: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Ланцоша с полной переортогонализацией&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;O(k)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;\frac{n(n + 1)}{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;k(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Авторы: Алексейчук Н.Н 616, Ястребов К.С. 609.&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма. ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм Ланцоша ищет собвственные значения и собственные векторы для симетричной матрицы A вещественных чисел. Является итерацонным алгоритмом. Алгоритм Ланцоша использует степенной метод (&amp;lt;math&amp;gt; b_{k+1} = \frac{Ab_k}{||Ab_k||} &amp;lt;/math&amp;gt;) для поиска наибольших собственных значений и векторов матриц.   &lt;br /&gt;
&lt;br /&gt;
В отличие от прямых алгоритмов требует мешьше памяти и мощности, что является несомненным плюсом для больших матриц. &lt;br /&gt;
&lt;br /&gt;
Несмотря на свою скорость работы и экономию памяти, сначала не был популярным алгоритмом из – за недостаточной вычислительной устойчивости. В 1970 году Ojalvo и Newman показали способ сделать алгоритм достаточно устойчивым. В этой же статье алгоритм был применен к расчету инженерной конструкции с большим количеством узлов, которые подвергались динамической нагрузке.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Памятка:&lt;br /&gt;
Степенной метод нахождения наибольшего собственного числа матрицы можно сформулировать в предельном виде: если &amp;lt;math&amp;gt; b_0 &amp;lt;/math&amp;gt; – случайный вектор, и &amp;lt;math&amp;gt; b_n+1 = Ab_n &amp;lt;/math&amp;gt;, тогда для больших чисел n предел &amp;lt;math&amp;gt;x_n/||x_n|| &amp;lt;/math&amp;gt; стремится к нормированному наибольшему собственному вектору.&lt;br /&gt;
&lt;br /&gt;
Алгоритм Ланцоша комбинирует метод Ланцоша для нахождения крыловского подпространства и метод Релэя – Ритца. &lt;br /&gt;
&lt;br /&gt;
Подпространство Крылова для степенного метода:&lt;br /&gt;
&amp;lt;math&amp;gt; K_m(v,A) = span[x_1, Ax_1, A^2x_1, ..., A^{k-1}x_1] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В качестве входных данных для алгоритма Ланцоша подаются квадратная матрица размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;X&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;A=A^T&amp;lt;/math&amp;gt;; а так же вектор начального приближения &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Метод осуществляет поиск трехдиагональной симметричной матрицы &amp;lt;math&amp;gt;T_k=Q_k^TAQ_k&amp;lt;/math&amp;gt;. Причем собственные значения &amp;lt;math&amp;gt;T_k&amp;lt;/math&amp;gt; таковы, что приближают собственные значения исходной матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;. То есть на каждом &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;-м шаге из ортонормированных векторов Ланцоша строится матрица &amp;lt;math&amp;gt;Q_k = [q_1,q_2,...,q_k]&amp;lt;/math&amp;gt; и в качестве приближенных собственных значений матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; принимаются числа Ритца.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Вычислительным ядром данного алгоритма являются следующие шаги:&lt;br /&gt;
*1.   &amp;lt;math&amp;gt;Aq=( \sum\nolimits_{i=^n}a_{1i}q_i, \sum\nolimits_{i=2}^na_{2i}q_i, ..., \sum\nolimits_{i=1}^na_{ni}q_i)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*2.    &amp;lt;math&amp;gt;z=z-\sum\nolimits_{i=1}^{k}(z^Tq_i)q_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данном случае первая операция выполняет умножение симметричной матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;X&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; на &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;-мерный вектор &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt;, вследствие чего вычислительная сложность выполнения заключается в &amp;lt;math&amp;gt;n^2&amp;lt;/math&amp;gt; умножений и &amp;lt;math&amp;gt;n^2-n&amp;lt;/math&amp;gt; сложений. Второе действие является процессом ортогонализации Грама-Шмидта. В последнем действии вычисляются &amp;lt;math&amp;gt;k^2n+k(n+2)&amp;lt;/math&amp;gt; умножений и &amp;lt;math&amp;gt;k^2n + k(n + 1) + 2&amp;lt;/math&amp;gt; операций сложения.&lt;br /&gt;
&lt;br /&gt;
== Схема ==&lt;br /&gt;
Input: A, b (random vector with unit norm)&lt;br /&gt;
: &amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\begin{align}&lt;br /&gt;
q_1 = b/||b||_2, \beta_0 = 0, q_0 = 0 \\&lt;br /&gt;
for j = 1 ,...,k \\&lt;br /&gt;
q_1&amp;amp;=b/||b||,\beta_0=0,q_o=0. \\&lt;br /&gt;
z&amp;amp;=Aq_j, \\&lt;br /&gt;
\alpha_j&amp;amp;=q_j^Tz, \\&lt;br /&gt;
z&amp;amp;=z-\alpha_jq_j-\beta_{j-1}q_{j-1}, \\&lt;br /&gt;
\beta&amp;amp;=||z||,\\&lt;br /&gt;
q_{j+1}&amp;amp;=z/\beta_j, \quad j \in [1, k].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\end{align}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Graph.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Библиотеки реализующие алгоритм==&lt;br /&gt;
&lt;br /&gt;
The IETL Project http://www.comp-phys.org/software/ietl/ C++&lt;br /&gt;
&lt;br /&gt;
NAG Library http://www.nag.com/content/nag-library C, C++, Fortran, C#, MATLAB, R&lt;br /&gt;
&lt;br /&gt;
ARPACK https://people.sc.fsu.edu/~jburkardt/m_src/arpack/arpack.html MATLAB&lt;br /&gt;
&lt;br /&gt;
GrapLab https://turi.com/products/create/open_source.html C++&lt;br /&gt;
&lt;br /&gt;
С частично переортаганализацией&lt;br /&gt;
&lt;br /&gt;
LANSO/PLANSO http://web.cs.ucdavis.edu/~bai/ET/lanczos_methods/overview_PLANSO.html Fortran (уже распараллелена)&lt;/div&gt;</summary>
		<author><name>Nikita270a</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Graph_lanczos.jpg&amp;diff=12096</id>
		<title>Файл:Graph lanczos.jpg</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Graph_lanczos.jpg&amp;diff=12096"/>
		<updated>2016-10-15T21:05:25Z</updated>

		<summary type="html">&lt;p&gt;Nikita270a: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nikita270a</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Nikita270a&amp;diff=12092</id>
		<title>Участник:Nikita270a</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Nikita270a&amp;diff=12092"/>
		<updated>2016-10-15T21:04:32Z</updated>

		<summary type="html">&lt;p&gt;Nikita270a: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Ланцоша с полной переортогонализацией&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;O(k)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;\frac{n(n + 1)}{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;k(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Авторы: Ялексейчук Н.Н 616, Ястребов К.С. 609.&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма. ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм Ланцоша ищет собвственные значения и собственные векторы для симетричной матрицы A вещественных чисел. Является итерацонным алгоритмом. Алгоритм Ланцоша использует степенной метод (&amp;lt;math&amp;gt; b_{k+1} = \frac{Ab_k}{||Ab_k||} &amp;lt;/math&amp;gt;) для поиска наибольших собственных значений и векторов матриц.   &lt;br /&gt;
&lt;br /&gt;
В отличие от прямых алгоритмов требует мешьше памяти и мощности, что является несомненным плюсом для больших матриц. &lt;br /&gt;
&lt;br /&gt;
Несмотря на свою скорость работы и экономию памяти, сначала не был популярным алгоритмом из – за недостаточной вычислительной устойчивости. В 1970 году Ojalvo и Newman показали способ сделать алгоритм достаточно устойчивым. В этой же статье алгоритм был применен к расчету инженерной конструкции с большим количеством узлов, которые подвергались динамической нагрузке.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Памятка:&lt;br /&gt;
Степенной метод нахождения наибольшего собственного числа матрицы можно сформулировать в предельном виде: если &amp;lt;math&amp;gt; b_0 &amp;lt;/math&amp;gt; – случайный вектор, и &amp;lt;math&amp;gt; b_n+1 = Ab_n &amp;lt;/math&amp;gt;, тогда для больших чисел n предел &amp;lt;math&amp;gt;x_n/||x_n|| &amp;lt;/math&amp;gt; стремится к нормированному наибольшему собственному вектору.&lt;br /&gt;
&lt;br /&gt;
Алгоритм Ланцоша комбинирует метод Ланцоша для нахождения крыловского подпространства и метод Релэя – Ритца. &lt;br /&gt;
&lt;br /&gt;
Подпространство Крылова для степенного метода:&lt;br /&gt;
&amp;lt;math&amp;gt; K_m(v,A) = span[x_1, Ax_1, A^2x_1, ..., A^{k-1}x_1] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В качестве входных данных для алгоритма Ланцоша подаются квадратная матрица размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;X&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;A=A^T&amp;lt;/math&amp;gt;; а так же вектор начального приближения &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;. Метод осуществляет поиск трехдиагональной симметричной матрицы &amp;lt;math&amp;gt;T_k=Q_k^TAQ_k&amp;lt;/math&amp;gt;. Причем собственные значения &amp;lt;math&amp;gt;T_k&amp;lt;/math&amp;gt; таковы, что приближают собственные значения исходной матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;. То есть на каждом &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;-м шаге из ортонормированных векторов Ланцоша строится матрица &amp;lt;math&amp;gt;Q_k = [q_1,q_2,...,q_k]&amp;lt;/math&amp;gt; и в качестве приближенных собственных значений матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; принимаются числа Ритца. Пусть &amp;lt;math&amp;gt;T_k=VAV^T&amp;lt;/math&amp;gt; есть спектральное разложение матрицы &amp;lt;math&amp;gt;T_k&amp;lt;/math&amp;gt;, столбцы матрицы &amp;lt;math&amp;gt;Q_kV&amp;lt;/math&amp;gt; рассматриваются как приближения к соответсвующим собственным векторам матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;Дж. Деммель «Вычислительная линейная алгебра» (стр. 391)&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Схема ==&lt;br /&gt;
Input: A, b (random vector with unit norm)&lt;br /&gt;
: &amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\begin{align}&lt;br /&gt;
q_1 = b/||b||_2, \beta_0 = 0, q_0 = 0 \\&lt;br /&gt;
for j = 1 ,...,k \\&lt;br /&gt;
q_1&amp;amp;=b/||b||,\beta_0=0,q_o=0. \\&lt;br /&gt;
z&amp;amp;=Aq_j, \\&lt;br /&gt;
\alpha_j&amp;amp;=q_j^Tz, \\&lt;br /&gt;
z&amp;amp;=z-\alpha_jq_j-\beta_{j-1}q_{j-1}, \\&lt;br /&gt;
\beta&amp;amp;=||z||,\\&lt;br /&gt;
q_{j+1}&amp;amp;=z/\beta_j, \quad j \in [1, k].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\end{align}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Библиотеки реализующие алгоритм==&lt;br /&gt;
&lt;br /&gt;
The IETL Project http://www.comp-phys.org/software/ietl/ C++&lt;br /&gt;
&lt;br /&gt;
NAG Library http://www.nag.com/content/nag-library C, C++, Fortran, C#, MATLAB, R&lt;br /&gt;
&lt;br /&gt;
ARPACK https://people.sc.fsu.edu/~jburkardt/m_src/arpack/arpack.html MATLAB&lt;br /&gt;
&lt;br /&gt;
GrapLab https://turi.com/products/create/open_source.html C++&lt;br /&gt;
&lt;br /&gt;
С частично переортаганализацией&lt;br /&gt;
&lt;br /&gt;
LANSO/PLANSO http://web.cs.ucdavis.edu/~bai/ET/lanczos_methods/overview_PLANSO.html Fortran (уже распараллелена)&lt;/div&gt;</summary>
		<author><name>Nikita270a</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Nikita270a&amp;diff=12073</id>
		<title>Участник:Nikita270a</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Nikita270a&amp;diff=12073"/>
		<updated>2016-10-15T21:01:32Z</updated>

		<summary type="html">&lt;p&gt;Nikita270a: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Ланцоша с полной переортогонализацией&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;O(k)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;\frac{n(n + 1)}{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;k(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Авторы: Ялексейчук Н.Н 616, Ястребов К.С. 609.&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма. ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм Ланцоша ищет собвственные значения и собственные векторы для симетричной матрицы A вещественных чисел. Является итерацонным алгоритмом. Алгоритм Ланцоша использует степенной метод (&amp;lt;math&amp;gt; b_{k+1} = \frac{Ab_k}{||Ab_k||} &amp;lt;/math&amp;gt;) для поиска наибольших собственных значений и векторов матриц.   &lt;br /&gt;
&lt;br /&gt;
В отличие от прямых алгоритмов требует мешьше памяти и мощности, что является несомненным плюсом для больших матриц. &lt;br /&gt;
&lt;br /&gt;
Несмотря на свою скорость работы и экономию памяти, сначала не был популярным алгоритмом из – за недостаточной вычислительной устойчивости. В 1970 году Ojalvo и Newman показали способ сделать алгоритм достаточно устойчивым. В этой же статье алгоритм был применен к расчету инженерной конструкции с большим количеством узлов, которые подвергались динамической нагрузке.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Памятка:&lt;br /&gt;
Степенной метод нахождения наибольшего собственного числа матрицы можно сформулировать в предельном виде: если &amp;lt;math&amp;gt; b_0 &amp;lt;/math&amp;gt; – случайный вектор, и &amp;lt;math&amp;gt; b_n+1 = Ab_n &amp;lt;/math&amp;gt;, тогда для больших чисел n предел &amp;lt;math&amp;gt;x_n/||x_n|| &amp;lt;/math&amp;gt; стремится к нормированному наибольшему собственному вектору.&lt;br /&gt;
&lt;br /&gt;
Алгоритм Ланцоша комбинирует метод Ланцоша для нахождения крыловского подпространства и метод Релэя – Ритца. &lt;br /&gt;
&lt;br /&gt;
Подпространство Крылова для степенного метода:&lt;br /&gt;
&amp;lt;math&amp;gt; K_m(v,A) = span[x_1, Ax_1, A^2x_1, ..., A^{k-1}x_1] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В качестве входных данных для алгоритма Ланцоша подаются квадратная матрица размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;X&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;A=A^T&amp;lt;/math&amp;gt;; а так же вектор начального приближения &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;. Метод осуществляет поиск трехдиагональной симметричной матрицы &amp;lt;math&amp;gt;T_k=Q_k^TAQ_k&amp;lt;/math&amp;gt;. Причем собственные значения &amp;lt;math&amp;gt;T_k&amp;lt;/math&amp;gt; таковы, что приближают собственные значения исходной матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;. То есть на каждом &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;-м шаге из ортонормированных векторов Ланцоша строится матрица &amp;lt;math&amp;gt;Q_k = [q_1,q_2,...,q_k]&amp;lt;/math&amp;gt; и в качестве приближенных собственных значений матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; принимаются числа Ритца. Пусть &amp;lt;math&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;=VAV&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt;&amp;lt;/math&amp;gt; есть спектральное разложение матрицы &amp;lt;math&amp;gt;T_k&amp;lt;/math&amp;gt;, столбцы матрицы &amp;lt;math&amp;gt;Q_kV&amp;lt;/math&amp;gt; рассматриваются как приближения к соответсвующим собственным векторам матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;Дж. Деммель «Вычислительная линейная алгебра» (стр. 391)&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Схема ==&lt;br /&gt;
Input: A, b (random vector with unit norm)&lt;br /&gt;
: &amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\begin{align}&lt;br /&gt;
q_1 = b/||b||_2, \beta_0 = 0, q_0 = 0 \\&lt;br /&gt;
for j = 1 ,...,k \\&lt;br /&gt;
q_1&amp;amp;=b/||b||,\beta_0=0,q_o=0. \\&lt;br /&gt;
z&amp;amp;=Aq_j, \\&lt;br /&gt;
\alpha_j&amp;amp;=q_j^Tz, \\&lt;br /&gt;
z&amp;amp;=z-\alpha_jq_j-\beta_{j-1}q_{j-1}, \\&lt;br /&gt;
\beta&amp;amp;=||z||,\\&lt;br /&gt;
q_{j+1}&amp;amp;=z/\beta_j, \quad j \in [1, k].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\end{align}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Библиотеки реализующие алгоритм==&lt;br /&gt;
&lt;br /&gt;
The IETL Project http://www.comp-phys.org/software/ietl/ C++&lt;br /&gt;
&lt;br /&gt;
NAG Library http://www.nag.com/content/nag-library C, C++, Fortran, C#, MATLAB, R&lt;br /&gt;
&lt;br /&gt;
ARPACK https://people.sc.fsu.edu/~jburkardt/m_src/arpack/arpack.html MATLAB&lt;br /&gt;
&lt;br /&gt;
GrapLab https://turi.com/products/create/open_source.html C++&lt;br /&gt;
&lt;br /&gt;
С частично переортаганализацией&lt;br /&gt;
&lt;br /&gt;
LANSO/PLANSO http://web.cs.ucdavis.edu/~bai/ET/lanczos_methods/overview_PLANSO.html Fortran (уже распараллелена)&lt;/div&gt;</summary>
		<author><name>Nikita270a</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Nikita270a&amp;diff=12069</id>
		<title>Участник:Nikita270a</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Nikita270a&amp;diff=12069"/>
		<updated>2016-10-15T21:00:31Z</updated>

		<summary type="html">&lt;p&gt;Nikita270a: Новая страница: «{{algorithm | name              = Алгоритм Ланцоша с полной переортогонализацией | serial_complexity = &amp;lt;math&amp;gt;O(n^2)&amp;lt;/mat…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Ланцоша с полной переортогонализацией&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;O(k)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;\frac{n(n + 1)}{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;k(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма. ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм Ланцоша ищет собвственные значения и собственные векторы для симетричной матрицы A вещественных чисел. Является итерацонным алгоритмом. Алгоритм Ланцоша использует степенной метод (&amp;lt;math&amp;gt; b_{k+1} = \frac{Ab_k}{||Ab_k||} &amp;lt;/math&amp;gt;) для поиска наибольших собственных значений и векторов матриц.   &lt;br /&gt;
&lt;br /&gt;
В отличие от прямых алгоритмов требует мешьше памяти и мощности, что является несомненным плюсом для больших матриц. &lt;br /&gt;
&lt;br /&gt;
Несмотря на свою скорость работы и экономию памяти, сначала не был популярным алгоритмом из – за недостаточной вычислительной устойчивости. В 1970 году Ojalvo и Newman показали способ сделать алгоритм достаточно устойчивым. В этой же статье алгоритм был применен к расчету инженерной конструкции с большим количеством узлов, которые подвергались динамической нагрузке.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Памятка:&lt;br /&gt;
Степенной метод нахождения наибольшего собственного числа матрицы можно сформулировать в предельном виде: если &amp;lt;math&amp;gt; b_0 &amp;lt;/math&amp;gt; – случайный вектор, и &amp;lt;math&amp;gt; b_n+1 = Ab_n &amp;lt;/math&amp;gt;, тогда для больших чисел n предел &amp;lt;math&amp;gt;x_n/||x_n|| &amp;lt;/math&amp;gt; стремится к нормированному наибольшему собственному вектору.&lt;br /&gt;
&lt;br /&gt;
Алгоритм Ланцоша комбинирует метод Ланцоша для нахождения крыловского подпространства и метод Релэя – Ритца. &lt;br /&gt;
&lt;br /&gt;
Подпространство Крылова для степенного метода:&lt;br /&gt;
&amp;lt;math&amp;gt; K_m(v,A) = span[x_1, Ax_1, A^2x_1, ..., A^{k-1}x_1] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В качестве входных данных для алгоритма Ланцоша подаются квадратная матрица размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;X&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;A=A^T&amp;lt;/math&amp;gt;; а так же вектор начального приближения &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;. Метод осуществляет поиск трехдиагональной симметричной матрицы &amp;lt;math&amp;gt;T_k=Q_k^TAQ_k&amp;lt;/math&amp;gt;. Причем собственные значения &amp;lt;math&amp;gt;T_k&amp;lt;/math&amp;gt; таковы, что приближают собственные значения исходной матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;. То есть на каждом &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;-м шаге из ортонормированных векторов Ланцоша строится матрица &amp;lt;math&amp;gt;Q_k = [q_1,q_2,...,q_k]&amp;lt;/math&amp;gt; и в качестве приближенных собственных значений матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; принимаются числа Ритца. Пусть &amp;lt;math&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;=VAV&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt;&amp;lt;/math&amp;gt; есть спектральное разложение матрицы &amp;lt;math&amp;gt;T_k&amp;lt;/math&amp;gt;, столбцы матрицы &amp;lt;math&amp;gt;Q_kV&amp;lt;/math&amp;gt; рассматриваются как приближения к соответсвующим собственным векторам матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;Дж. Деммель «Вычислительная линейная алгебра» (стр. 391)&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Схема ==&lt;br /&gt;
Input: A, b (random vector with unit norm)&lt;br /&gt;
: &amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\begin{align}&lt;br /&gt;
q_1 = b/||b||_2, \beta_0 = 0, q_0 = 0 \\&lt;br /&gt;
for j = 1 ,...,k \\&lt;br /&gt;
q_1&amp;amp;=b/||b||,\beta_0=0,q_o=0. \\&lt;br /&gt;
z&amp;amp;=Aq_j, \\&lt;br /&gt;
\alpha_j&amp;amp;=q_j^Tz, \\&lt;br /&gt;
z&amp;amp;=z-\alpha_jq_j-\beta_{j-1}q_{j-1}, \\&lt;br /&gt;
\beta&amp;amp;=||z||,\\&lt;br /&gt;
q_{j+1}&amp;amp;=z/\beta_j, \quad j \in [1, k].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\end{align}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Библиотеки реализующие алгоритм==&lt;br /&gt;
&lt;br /&gt;
The IETL Project http://www.comp-phys.org/software/ietl/ C++&lt;br /&gt;
&lt;br /&gt;
NAG Library http://www.nag.com/content/nag-library C, C++, Fortran, C#, MATLAB, R&lt;br /&gt;
&lt;br /&gt;
ARPACK https://people.sc.fsu.edu/~jburkardt/m_src/arpack/arpack.html MATLAB&lt;br /&gt;
&lt;br /&gt;
GrapLab https://turi.com/products/create/open_source.html C++&lt;br /&gt;
&lt;br /&gt;
С частично переортаганализацией&lt;br /&gt;
&lt;br /&gt;
LANSO/PLANSO http://web.cs.ucdavis.edu/~bai/ET/lanczos_methods/overview_PLANSO.html Fortran (уже распараллелена)&lt;/div&gt;</summary>
		<author><name>Nikita270a</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9E%D1%82%D0%BA%D1%80%D1%8B%D1%82%D0%B0%D1%8F_%D1%8D%D0%BD%D1%86%D0%B8%D0%BA%D0%BB%D0%BE%D0%BF%D0%B5%D0%B4%D0%B8%D1%8F_%D1%81%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=12046</id>
		<title>Открытая энциклопедия свойств алгоритмов</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9E%D1%82%D0%BA%D1%80%D1%8B%D1%82%D0%B0%D1%8F_%D1%8D%D0%BD%D1%86%D0%B8%D0%BA%D0%BB%D0%BE%D0%BF%D0%B5%D0%B4%D0%B8%D1%8F_%D1%81%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=12046"/>
		<updated>2016-10-15T20:57:20Z</updated>

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