<?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=%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80+%D0%A7%D0%B5%D1%80%D0%BD%D1%8B%D1%88%D0%B5%D0%B2</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=%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80+%D0%A7%D0%B5%D1%80%D0%BD%D1%8B%D1%88%D0%B5%D0%B2"/>
	<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/%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80_%D0%A7%D0%B5%D1%80%D0%BD%D1%8B%D1%88%D0%B5%D0%B2"/>
	<updated>2026-10-22T20:06:55Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80_%D0%A7%D0%B5%D1%80%D0%BD%D1%8B%D1%88%D0%B5%D0%B2&amp;diff=20493</id>
		<title>Обсуждение участника:Александр Чернышев</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80_%D0%A7%D0%B5%D1%80%D0%BD%D1%8B%D1%88%D0%B5%D0%B2&amp;diff=20493"/>
		<updated>2016-12-09T15:25:48Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Статья Метод_Ньютона_для_решения_систем_нелинейных_уравнений */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Статья [[Метод_Ньютона_для_решения_систем_нелинейных_уравнений]] ==&lt;br /&gt;
&lt;br /&gt;
=== Замечания ===&lt;br /&gt;
&lt;br /&gt;
* добавить врезку со свойствами алгоритма&lt;br /&gt;
* &amp;quot;Для&amp;quot; ... &amp;quot;Конец&amp;quot; лучше заменить, например, на &amp;quot;for&amp;quot; и &amp;quot;end for&amp;quot;&lt;br /&gt;
* в п.1.4 лучше сделать отсылку на соответствующие странички AlgoWiki&lt;br /&gt;
* в п.1.6 значение k может быть велико, порядка n&lt;br /&gt;
&#039;&#039;исправлено&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* п.1.7 добавьте словесное описание информационного графа, описание его этапов, и какие выводы можно сделать на его основе&lt;br /&gt;
исправлено&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=20480</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=20480"/>
		<updated>2016-12-09T12:31:26Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment|VadimVV}}&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Метод Ньютона для решения систем нелинейных уравнений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(lkn^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;\frac{r_0}{\|r_0\|}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;For&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;For&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;End for&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\|\omega_m\|&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;End for&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* [[Умножение_плотной_неособенной_матрицы_на_вектор_(последовательный_вещественный_вариант)|Умножение матрицы на вектор]]&lt;br /&gt;
&lt;br /&gt;
* [[Скалярное_произведение_векторов,_вещественная_версия,_последовательно-параллельный_вариант|Скалярное произведение векторов]]&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ. &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;nk&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k^2n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(kn^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(kn)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt;&lt;br /&gt;
Предположим, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда сложность расчета вектор-функции будет &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;, матрицы якобиана - &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(kn^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; сложность составит &amp;lt;math&amp;gt;O(n^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационный граф]]&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;
Пусть нам будет дана матрица порядка &#039;&#039;n&#039;&#039;. Будем предполагать, что доступно p процессоров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как и ранее будем предполагать, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&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&amp;lt;/math&amp;gt; операций умножения матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   &amp;lt;math&amp;gt;k^2&amp;lt;/math&amp;gt; операций расчета нормы, умножения вектора на число, сложения векторов - &amp;lt;math&amp;gt;O(\frac{k^2n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   QR-факторизация матрицы - &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
На решении задачи минимизации:&lt;br /&gt;
   Обратный ход метода Гаусса - &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Умножение матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
На оставшиеся операции одной итерации метода Ньютона:&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление вектор-функции F в точке - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление матрицы якобиана J в точке - &amp;lt;math&amp;gt;O(\frac{n^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Расчет нормы - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, при небольших значениях параметра &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; получим суммарную оценку &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;.&lt;br /&gt;
Выполнение данного ограничения можно достичь следующими способами:&lt;br /&gt;
&lt;br /&gt;
1) Увеличение скорости сходимости решения СЛАУ при использовании предобуславливания&lt;br /&gt;
&lt;br /&gt;
2) Используя модификацию данного алгоритма - GMRES(m)&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
В качестве модельной задачи рассмотрим один из примеров&amp;lt;ref&amp;gt;http://www.mcs.anl.gov/petsc/petsc-3.5/src/snes/examples/tutorials/ex30.c.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
, поставляемых вместе с модулем SNES пакета PETSc.&lt;br /&gt;
&lt;br /&gt;
Тестирование алгоритма проводилось на суперкомпьютере &amp;quot;Ломоносов&amp;quot;[http://parallel.ru/cluster Суперкомпьютерного комплекса Московского университета].&lt;br /&gt;
&lt;br /&gt;
Версия MPI - impi/4.1.0&lt;br /&gt;
&lt;br /&gt;
Реализация BLAS - mkl/11.2.0&lt;br /&gt;
&lt;br /&gt;
Запуски проводились на regulal4&lt;br /&gt;
&lt;br /&gt;
Модель используемого CPU - Intel Xeon X5570 2.93GHz&lt;br /&gt;
&lt;br /&gt;
Версия PETSc - 3.7.4&lt;br /&gt;
&lt;br /&gt;
Флаги компиляции: -fPIC -Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -fvisibility=hidden -g3&lt;br /&gt;
&lt;br /&gt;
Кроме того, использовались следующие параметры:&lt;br /&gt;
&lt;br /&gt;
1) Pестарт алгоритма GMRES через 300 итераций&lt;br /&gt;
&lt;br /&gt;
2) Максимальное число итераций для нахождения решения СЛАУ - 1500&lt;br /&gt;
&lt;br /&gt;
3) Максимальное число итераций метода Ньютона на данном этапе решения - 20&lt;br /&gt;
&lt;br /&gt;
Набор начальных параметров:&lt;br /&gt;
&lt;br /&gt;
*    Число процессоров [1 2 4 8 16 32 48 64 80 96 112 128];&lt;br /&gt;
*    Порядок матрицы [82 122 162 202 242].&lt;br /&gt;
&lt;br /&gt;
[[Файл:NewtonFlops.jpg|thumb|center|700px|Рисунок 1. Изменение производительности в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonAcc.jpg|thumb|center|700px|Рисунок 2. Изменение ускорения в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonEff.jpg|thumb|center|700px|Рисунок 3. Изменение эффективности в зависимости от числа процессоров и размера матрицы]]&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;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=20479</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=20479"/>
		<updated>2016-12-09T12:11:44Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment|VadimVV}}&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Метод Ньютона для решения систем нелинейных уравнений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(lkn^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;\frac{r_0}{\|r_0\|}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;For&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;For&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;End for&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\|\omega_m\|&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;End for&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* [[Умножение_плотной_неособенной_матрицы_на_вектор_(последовательный_вещественный_вариант)|Умножение матрицы на вектор]]&lt;br /&gt;
&lt;br /&gt;
* [[Скалярное_произведение_векторов,_вещественная_версия,_последовательно-параллельный_вариант|Скалярное произведение векторов]]&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ. &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;nk&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k^2n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(kn^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(kn)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt;&lt;br /&gt;
Предположим, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда сложность расчета вектор-функции будет &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;, матрицы якобиана - &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(kn^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; сложность составит &amp;lt;math&amp;gt;O(n^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационный граф]]&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;
Пусть нам будет дана матрица порядка &#039;&#039;n&#039;&#039;. Будем предполагать, что доступно p процессоров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как и ранее будем предполагать, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&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&amp;lt;/math&amp;gt; операций умножения матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   &amp;lt;math&amp;gt;k^2&amp;lt;/math&amp;gt; операций расчета нормы, умножения вектора на число, сложения векторов - &amp;lt;math&amp;gt;O(\frac{k^2n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   QR-факторизация матрицы - &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
На решении задачи минимизации:&lt;br /&gt;
   Обратный ход метода Гаусса - &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Умножение матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
На оставшиеся операции одной итерации метода Ньютона:&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление вектор-функции F в точке - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление матрицы якобиана J в точке - &amp;lt;math&amp;gt;O(\frac{n^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Расчет нормы - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, при небольших значениях параметра &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; получим суммарную оценку &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;.&lt;br /&gt;
Выполнение данного ограничения можно достичь следующими способами:&lt;br /&gt;
&lt;br /&gt;
1) Увеличение скорости сходимости решения СЛАУ при использовании предобуславливания&lt;br /&gt;
&lt;br /&gt;
2) Используя модификацию данного алгоритма - GMRES(m)&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
В качестве модельной задачи рассмотрим один из примеров&amp;lt;ref&amp;gt;http://www.mcs.anl.gov/petsc/petsc-3.5/src/snes/examples/tutorials/ex30.c.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
, поставляемых вместе с модулем SNES пакета PETSc.&lt;br /&gt;
&lt;br /&gt;
Тестирование алгоритма проводилось на суперкомпьютере &amp;quot;Ломоносов&amp;quot;[http://parallel.ru/cluster Суперкомпьютерного комплекса Московского университета].&lt;br /&gt;
&lt;br /&gt;
Версия MPI - impi/4.1.0&lt;br /&gt;
&lt;br /&gt;
Реализация BLAS - mkl/11.2.0&lt;br /&gt;
&lt;br /&gt;
Запуски проводились на regulal4&lt;br /&gt;
&lt;br /&gt;
Модель используемого CPU - Intel Xeon X5570 2.93GHz&lt;br /&gt;
&lt;br /&gt;
Версия PETSc - 3.7.4&lt;br /&gt;
&lt;br /&gt;
Флаги компиляции: -fPIC -Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -fvisibility=hidden -g3&lt;br /&gt;
&lt;br /&gt;
Кроме того, использовались следующие параметры:&lt;br /&gt;
&lt;br /&gt;
1) Pестарт алгоритма GMRES через 300 итераций&lt;br /&gt;
&lt;br /&gt;
2) Максимальное число итераций для нахождения решения СЛАУ - 1500&lt;br /&gt;
&lt;br /&gt;
3) Максимальное число итераций метода Ньютона на данном этапе решения - 20&lt;br /&gt;
&lt;br /&gt;
Набор начальных параметров:&lt;br /&gt;
&lt;br /&gt;
*    Число процессоров [1 2 4 8 16 32 48 64 80 96 112 128];&lt;br /&gt;
*    Порядок матрицы [82 122 162 202 242].&lt;br /&gt;
&lt;br /&gt;
[[Файл:NewtonFlops.jpg|thumb|center|700px|Рисунок 1. Изменение производительности в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonAcc.jpg|thumb|center|700px|Рисунок 2. Изменение ускорения в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonEff.jpg|thumb|center|700px|Рисунок 3. Изменение эффективности в зависимости от числа процессоров и размера матрицы]]&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;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80_%D0%A7%D0%B5%D1%80%D0%BD%D1%8B%D1%88%D0%B5%D0%B2&amp;diff=20325</id>
		<title>Обсуждение участника:Александр Чернышев</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80_%D0%A7%D0%B5%D1%80%D0%BD%D1%8B%D1%88%D0%B5%D0%B2&amp;diff=20325"/>
		<updated>2016-12-08T09:22:27Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Замечания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Статья [[Метод_Ньютона_для_решения_систем_нелинейных_уравнений]] ==&lt;br /&gt;
&lt;br /&gt;
=== Замечания ===&lt;br /&gt;
&lt;br /&gt;
* добавить врезку со свойствами алгоритма&lt;br /&gt;
* &amp;quot;Для&amp;quot; ... &amp;quot;Конец&amp;quot; лучше заменить, например, на &amp;quot;for&amp;quot; и &amp;quot;end for&amp;quot;&lt;br /&gt;
* в п.1.4 лучше сделать отсылку на соответствующие странички AlgoWiki&lt;br /&gt;
* в п.1.6 значение k может быть велико, порядка n&lt;br /&gt;
исправлено&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=20283</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=20283"/>
		<updated>2016-12-07T19:53:54Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Макроструктура алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment|VadimVV}}&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Метод Ньютона для решения систем нелинейных уравнений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(lkn^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;\frac{r_0}{\|r_0\|}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;For&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;For&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;End for&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\|\omega_m\|&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;End for&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* [[Умножение_плотной_неособенной_матрицы_на_вектор_(последовательный_вещественный_вариант)|Умножение матрицы на вектор]]&lt;br /&gt;
&lt;br /&gt;
* [[Скалярное_произведение_векторов,_вещественная_версия,_последовательно-параллельный_вариант|Скалярное произведение векторов]]&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ. &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;nk&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k^2n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(kn^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(kn)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt;&lt;br /&gt;
Предположим, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда сложность расчета вектор-функции будет &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;, матрицы якобиана - &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(kn^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; сложность составит &amp;lt;math&amp;gt;O(n^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
Пусть нам будет дана матрица порядка &#039;&#039;n&#039;&#039;. Будем предполагать, что доступно p процессоров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как и ранее будем предполагать, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&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&amp;lt;/math&amp;gt; операций умножения матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   &amp;lt;math&amp;gt;k^2&amp;lt;/math&amp;gt; операций расчета нормы, умножения вектора на число, сложения векторов - &amp;lt;math&amp;gt;O(\frac{k^2n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   QR-факторизация матрицы - &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
На решении задачи минимизации:&lt;br /&gt;
   Обратный ход метода Гаусса - &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Умножение матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
На оставшиеся операции одной итерации метода Ньютона:&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление вектор-функции F в точке - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление матрицы якобиана J в точке - &amp;lt;math&amp;gt;O(\frac{n^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Расчет нормы - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, при небольших значениях параметра &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; получим суммарную оценку &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;.&lt;br /&gt;
Выполнение данного ограничения можно достичь следующими способами:&lt;br /&gt;
&lt;br /&gt;
1) Увеличение скорости сходимости решения СЛАУ при использовании предобуславливания&lt;br /&gt;
&lt;br /&gt;
2) Используя модификацию данного алгоритма - GMRES(m)&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
В качестве модельной задачи рассмотрим один из примеров&amp;lt;ref&amp;gt;http://www.mcs.anl.gov/petsc/petsc-3.5/src/snes/examples/tutorials/ex30.c.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
, поставляемых вместе с модулем SNES пакета PETSc.&lt;br /&gt;
&lt;br /&gt;
Тестирование алгоритма проводилось на суперкомпьютере &amp;quot;Ломоносов&amp;quot;[http://parallel.ru/cluster Суперкомпьютерного комплекса Московского университета].&lt;br /&gt;
&lt;br /&gt;
Версия MPI - impi/4.1.0&lt;br /&gt;
&lt;br /&gt;
Реализация BLAS - mkl/11.2.0&lt;br /&gt;
&lt;br /&gt;
Запуски проводились на regulal4&lt;br /&gt;
&lt;br /&gt;
Модель используемого CPU - Intel Xeon X5570 2.93GHz&lt;br /&gt;
&lt;br /&gt;
Версия PETSc - 3.7.4&lt;br /&gt;
&lt;br /&gt;
Флаги компиляции: -fPIC -Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -fvisibility=hidden -g3&lt;br /&gt;
&lt;br /&gt;
Кроме того, использовались следующие параметры:&lt;br /&gt;
&lt;br /&gt;
1) Pестарт алгоритма GMRES через 300 итераций&lt;br /&gt;
&lt;br /&gt;
2) Максимальное число итераций для нахождения решения СЛАУ - 1500&lt;br /&gt;
&lt;br /&gt;
3) Максимальное число итераций метода Ньютона на данном этапе решения - 20&lt;br /&gt;
&lt;br /&gt;
Набор начальных параметров:&lt;br /&gt;
&lt;br /&gt;
*    Число процессоров [1 2 4 8 16 32 48 64 80 96 112 128];&lt;br /&gt;
*    Порядок матрицы [82 122 162 202 242].&lt;br /&gt;
&lt;br /&gt;
[[Файл:NewtonFlops.jpg|thumb|center|700px|Рисунок 1. Изменение производительности в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonAcc.jpg|thumb|center|700px|Рисунок 2. Изменение ускорения в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonEff.jpg|thumb|center|700px|Рисунок 3. Изменение эффективности в зависимости от числа процессоров и размера матрицы]]&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;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=20282</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=20282"/>
		<updated>2016-12-07T19:46:02Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment|VadimVV}}&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Метод Ньютона для решения систем нелинейных уравнений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(lkn^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;\frac{r_0}{\|r_0\|}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;For&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;For&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;End for&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\|\omega_m\|&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;End for&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ. &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;nk&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k^2n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(kn^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(kn)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt;&lt;br /&gt;
Предположим, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда сложность расчета вектор-функции будет &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;, матрицы якобиана - &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(kn^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; сложность составит &amp;lt;math&amp;gt;O(n^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
Пусть нам будет дана матрица порядка &#039;&#039;n&#039;&#039;. Будем предполагать, что доступно p процессоров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как и ранее будем предполагать, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&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&amp;lt;/math&amp;gt; операций умножения матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   &amp;lt;math&amp;gt;k^2&amp;lt;/math&amp;gt; операций расчета нормы, умножения вектора на число, сложения векторов - &amp;lt;math&amp;gt;O(\frac{k^2n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   QR-факторизация матрицы - &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
На решении задачи минимизации:&lt;br /&gt;
   Обратный ход метода Гаусса - &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Умножение матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
На оставшиеся операции одной итерации метода Ньютона:&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление вектор-функции F в точке - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление матрицы якобиана J в точке - &amp;lt;math&amp;gt;O(\frac{n^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Расчет нормы - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, при небольших значениях параметра &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; получим суммарную оценку &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;.&lt;br /&gt;
Выполнение данного ограничения можно достичь следующими способами:&lt;br /&gt;
&lt;br /&gt;
1) Увеличение скорости сходимости решения СЛАУ при использовании предобуславливания&lt;br /&gt;
&lt;br /&gt;
2) Используя модификацию данного алгоритма - GMRES(m)&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
В качестве модельной задачи рассмотрим один из примеров&amp;lt;ref&amp;gt;http://www.mcs.anl.gov/petsc/petsc-3.5/src/snes/examples/tutorials/ex30.c.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
, поставляемых вместе с модулем SNES пакета PETSc.&lt;br /&gt;
&lt;br /&gt;
Тестирование алгоритма проводилось на суперкомпьютере &amp;quot;Ломоносов&amp;quot;[http://parallel.ru/cluster Суперкомпьютерного комплекса Московского университета].&lt;br /&gt;
&lt;br /&gt;
Версия MPI - impi/4.1.0&lt;br /&gt;
&lt;br /&gt;
Реализация BLAS - mkl/11.2.0&lt;br /&gt;
&lt;br /&gt;
Запуски проводились на regulal4&lt;br /&gt;
&lt;br /&gt;
Модель используемого CPU - Intel Xeon X5570 2.93GHz&lt;br /&gt;
&lt;br /&gt;
Версия PETSc - 3.7.4&lt;br /&gt;
&lt;br /&gt;
Флаги компиляции: -fPIC -Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -fvisibility=hidden -g3&lt;br /&gt;
&lt;br /&gt;
Кроме того, использовались следующие параметры:&lt;br /&gt;
&lt;br /&gt;
1) Pестарт алгоритма GMRES через 300 итераций&lt;br /&gt;
&lt;br /&gt;
2) Максимальное число итераций для нахождения решения СЛАУ - 1500&lt;br /&gt;
&lt;br /&gt;
3) Максимальное число итераций метода Ньютона на данном этапе решения - 20&lt;br /&gt;
&lt;br /&gt;
Набор начальных параметров:&lt;br /&gt;
&lt;br /&gt;
*    Число процессоров [1 2 4 8 16 32 48 64 80 96 112 128];&lt;br /&gt;
*    Порядок матрицы [82 122 162 202 242].&lt;br /&gt;
&lt;br /&gt;
[[Файл:NewtonFlops.jpg|thumb|center|700px|Рисунок 1. Изменение производительности в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonAcc.jpg|thumb|center|700px|Рисунок 2. Изменение ускорения в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonEff.jpg|thumb|center|700px|Рисунок 3. Изменение эффективности в зависимости от числа процессоров и размера матрицы]]&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;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=20281</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=20281"/>
		<updated>2016-12-07T19:43:08Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Последовательная сложность алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment|VadimVV}}&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Метод Ньютона для решения систем нелинейных уравнений&lt;br /&gt;
| serial_complexity = 0&lt;br /&gt;
| input_data        = 0&lt;br /&gt;
| output_data       = 0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;\frac{r_0}{\|r_0\|}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;For&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;For&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;End for&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\|\omega_m\|&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;End for&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ. &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;nk&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k^2n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(kn^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(kn)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt;&lt;br /&gt;
Предположим, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда сложность расчета вектор-функции будет &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;, матрицы якобиана - &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(kn^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; сложность составит &amp;lt;math&amp;gt;O(n^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
Пусть нам будет дана матрица порядка &#039;&#039;n&#039;&#039;. Будем предполагать, что доступно p процессоров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как и ранее будем предполагать, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&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&amp;lt;/math&amp;gt; операций умножения матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   &amp;lt;math&amp;gt;k^2&amp;lt;/math&amp;gt; операций расчета нормы, умножения вектора на число, сложения векторов - &amp;lt;math&amp;gt;O(\frac{k^2n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   QR-факторизация матрицы - &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
На решении задачи минимизации:&lt;br /&gt;
   Обратный ход метода Гаусса - &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Умножение матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
На оставшиеся операции одной итерации метода Ньютона:&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление вектор-функции F в точке - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление матрицы якобиана J в точке - &amp;lt;math&amp;gt;O(\frac{n^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Расчет нормы - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, при небольших значениях параметра &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; получим суммарную оценку &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;.&lt;br /&gt;
Выполнение данного ограничения можно достичь следующими способами:&lt;br /&gt;
&lt;br /&gt;
1) Увеличение скорости сходимости решения СЛАУ при использовании предобуславливания&lt;br /&gt;
&lt;br /&gt;
2) Используя модификацию данного алгоритма - GMRES(m)&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
В качестве модельной задачи рассмотрим один из примеров&amp;lt;ref&amp;gt;http://www.mcs.anl.gov/petsc/petsc-3.5/src/snes/examples/tutorials/ex30.c.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
, поставляемых вместе с модулем SNES пакета PETSc.&lt;br /&gt;
&lt;br /&gt;
Тестирование алгоритма проводилось на суперкомпьютере &amp;quot;Ломоносов&amp;quot;[http://parallel.ru/cluster Суперкомпьютерного комплекса Московского университета].&lt;br /&gt;
&lt;br /&gt;
Версия MPI - impi/4.1.0&lt;br /&gt;
&lt;br /&gt;
Реализация BLAS - mkl/11.2.0&lt;br /&gt;
&lt;br /&gt;
Запуски проводились на regulal4&lt;br /&gt;
&lt;br /&gt;
Модель используемого CPU - Intel Xeon X5570 2.93GHz&lt;br /&gt;
&lt;br /&gt;
Версия PETSc - 3.7.4&lt;br /&gt;
&lt;br /&gt;
Флаги компиляции: -fPIC -Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -fvisibility=hidden -g3&lt;br /&gt;
&lt;br /&gt;
Кроме того, использовались следующие параметры:&lt;br /&gt;
&lt;br /&gt;
1) Pестарт алгоритма GMRES через 300 итераций&lt;br /&gt;
&lt;br /&gt;
2) Максимальное число итераций для нахождения решения СЛАУ - 1500&lt;br /&gt;
&lt;br /&gt;
3) Максимальное число итераций метода Ньютона на данном этапе решения - 20&lt;br /&gt;
&lt;br /&gt;
Набор начальных параметров:&lt;br /&gt;
&lt;br /&gt;
*    Число процессоров [1 2 4 8 16 32 48 64 80 96 112 128];&lt;br /&gt;
*    Порядок матрицы [82 122 162 202 242].&lt;br /&gt;
&lt;br /&gt;
[[Файл:NewtonFlops.jpg|thumb|center|700px|Рисунок 1. Изменение производительности в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonAcc.jpg|thumb|center|700px|Рисунок 2. Изменение ускорения в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonEff.jpg|thumb|center|700px|Рисунок 3. Изменение эффективности в зависимости от числа процессоров и размера матрицы]]&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;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=20264</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=20264"/>
		<updated>2016-12-07T18:28:05Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment|VadimVV}}&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Метод Ньютона для решения систем нелинейных уравнений&lt;br /&gt;
| serial_complexity = 0&lt;br /&gt;
| input_data        = 0&lt;br /&gt;
| output_data       = 0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;\frac{r_0}{\|r_0\|}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;For&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;For&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;End for&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\|\omega_m\|&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;End for&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ. &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;nk&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k^2n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(kn^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(kn)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt;&lt;br /&gt;
Предположим, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда сложность расчета вектор-функции будет &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;, матрицы якобиана - &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(kn^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
Пусть нам будет дана матрица порядка &#039;&#039;n&#039;&#039;. Будем предполагать, что доступно p процессоров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как и ранее будем предполагать, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&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&amp;lt;/math&amp;gt; операций умножения матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   &amp;lt;math&amp;gt;k^2&amp;lt;/math&amp;gt; операций расчета нормы, умножения вектора на число, сложения векторов - &amp;lt;math&amp;gt;O(\frac{k^2n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   QR-факторизация матрицы - &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
На решении задачи минимизации:&lt;br /&gt;
   Обратный ход метода Гаусса - &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Умножение матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
На оставшиеся операции одной итерации метода Ньютона:&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление вектор-функции F в точке - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление матрицы якобиана J в точке - &amp;lt;math&amp;gt;O(\frac{n^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Расчет нормы - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, при небольших значениях параметра &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; получим суммарную оценку &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;.&lt;br /&gt;
Выполнение данного ограничения можно достичь следующими способами:&lt;br /&gt;
&lt;br /&gt;
1) Увеличение скорости сходимости решения СЛАУ при использовании предобуславливания&lt;br /&gt;
&lt;br /&gt;
2) Используя модификацию данного алгоритма - GMRES(m)&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
В качестве модельной задачи рассмотрим один из примеров&amp;lt;ref&amp;gt;http://www.mcs.anl.gov/petsc/petsc-3.5/src/snes/examples/tutorials/ex30.c.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
, поставляемых вместе с модулем SNES пакета PETSc.&lt;br /&gt;
&lt;br /&gt;
Тестирование алгоритма проводилось на суперкомпьютере &amp;quot;Ломоносов&amp;quot;[http://parallel.ru/cluster Суперкомпьютерного комплекса Московского университета].&lt;br /&gt;
&lt;br /&gt;
Версия MPI - impi/4.1.0&lt;br /&gt;
&lt;br /&gt;
Реализация BLAS - mkl/11.2.0&lt;br /&gt;
&lt;br /&gt;
Запуски проводились на regulal4&lt;br /&gt;
&lt;br /&gt;
Модель используемого CPU - Intel Xeon X5570 2.93GHz&lt;br /&gt;
&lt;br /&gt;
Версия PETSc - 3.7.4&lt;br /&gt;
&lt;br /&gt;
Флаги компиляции: -fPIC -Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -fvisibility=hidden -g3&lt;br /&gt;
&lt;br /&gt;
Кроме того, использовались следующие параметры:&lt;br /&gt;
&lt;br /&gt;
1) Pестарт алгоритма GMRES через 300 итераций&lt;br /&gt;
&lt;br /&gt;
2) Максимальное число итераций для нахождения решения СЛАУ - 1500&lt;br /&gt;
&lt;br /&gt;
3) Максимальное число итераций метода Ньютона на данном этапе решения - 20&lt;br /&gt;
&lt;br /&gt;
Набор начальных параметров:&lt;br /&gt;
&lt;br /&gt;
*    Число процессоров [1 2 4 8 16 32 48 64 80 96 112 128];&lt;br /&gt;
*    Порядок матрицы [82 122 162 202 242].&lt;br /&gt;
&lt;br /&gt;
[[Файл:NewtonFlops.jpg|thumb|center|700px|Рисунок 1. Изменение производительности в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonAcc.jpg|thumb|center|700px|Рисунок 2. Изменение ускорения в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonEff.jpg|thumb|center|700px|Рисунок 3. Изменение эффективности в зависимости от числа процессоров и размера матрицы]]&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;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=20263</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=20263"/>
		<updated>2016-12-07T18:24:38Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Вычислительное ядро алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment|VadimVV}}&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;\frac{r_0}{\|r_0\|}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;For&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;For&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;End for&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\|\omega_m\|&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;End for&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ. &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;nk&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k^2n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(kn^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(kn)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt;&lt;br /&gt;
Предположим, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда сложность расчета вектор-функции будет &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;, матрицы якобиана - &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(kn^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
Пусть нам будет дана матрица порядка &#039;&#039;n&#039;&#039;. Будем предполагать, что доступно p процессоров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как и ранее будем предполагать, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&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&amp;lt;/math&amp;gt; операций умножения матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   &amp;lt;math&amp;gt;k^2&amp;lt;/math&amp;gt; операций расчета нормы, умножения вектора на число, сложения векторов - &amp;lt;math&amp;gt;O(\frac{k^2n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   QR-факторизация матрицы - &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
На решении задачи минимизации:&lt;br /&gt;
   Обратный ход метода Гаусса - &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Умножение матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
На оставшиеся операции одной итерации метода Ньютона:&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление вектор-функции F в точке - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление матрицы якобиана J в точке - &amp;lt;math&amp;gt;O(\frac{n^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Расчет нормы - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, при небольших значениях параметра &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; получим суммарную оценку &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;.&lt;br /&gt;
Выполнение данного ограничения можно достичь следующими способами:&lt;br /&gt;
&lt;br /&gt;
1) Увеличение скорости сходимости решения СЛАУ при использовании предобуславливания&lt;br /&gt;
&lt;br /&gt;
2) Используя модификацию данного алгоритма - GMRES(m)&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
В качестве модельной задачи рассмотрим один из примеров&amp;lt;ref&amp;gt;http://www.mcs.anl.gov/petsc/petsc-3.5/src/snes/examples/tutorials/ex30.c.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
, поставляемых вместе с модулем SNES пакета PETSc.&lt;br /&gt;
&lt;br /&gt;
Тестирование алгоритма проводилось на суперкомпьютере &amp;quot;Ломоносов&amp;quot;[http://parallel.ru/cluster Суперкомпьютерного комплекса Московского университета].&lt;br /&gt;
&lt;br /&gt;
Версия MPI - impi/4.1.0&lt;br /&gt;
&lt;br /&gt;
Реализация BLAS - mkl/11.2.0&lt;br /&gt;
&lt;br /&gt;
Запуски проводились на regulal4&lt;br /&gt;
&lt;br /&gt;
Модель используемого CPU - Intel Xeon X5570 2.93GHz&lt;br /&gt;
&lt;br /&gt;
Версия PETSc - 3.7.4&lt;br /&gt;
&lt;br /&gt;
Флаги компиляции: -fPIC -Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -fvisibility=hidden -g3&lt;br /&gt;
&lt;br /&gt;
Кроме того, использовались следующие параметры:&lt;br /&gt;
&lt;br /&gt;
1) Pестарт алгоритма GMRES через 300 итераций&lt;br /&gt;
&lt;br /&gt;
2) Максимальное число итераций для нахождения решения СЛАУ - 1500&lt;br /&gt;
&lt;br /&gt;
3) Максимальное число итераций метода Ньютона на данном этапе решения - 20&lt;br /&gt;
&lt;br /&gt;
Набор начальных параметров:&lt;br /&gt;
&lt;br /&gt;
*    Число процессоров [1 2 4 8 16 32 48 64 80 96 112 128];&lt;br /&gt;
*    Порядок матрицы [82 122 162 202 242].&lt;br /&gt;
&lt;br /&gt;
[[Файл:NewtonFlops.jpg|thumb|center|700px|Рисунок 1. Изменение производительности в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonAcc.jpg|thumb|center|700px|Рисунок 2. Изменение ускорения в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonEff.jpg|thumb|center|700px|Рисунок 3. Изменение эффективности в зависимости от числа процессоров и размера матрицы]]&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;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=18733</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=18733"/>
		<updated>2016-11-21T10:38:21Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment}}&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;\frac{r_0}{\|r_0\|}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\|\omega_m\|&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ. &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;nk&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k^2n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(kn^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(kn)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt;&lt;br /&gt;
Предположим, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда сложность расчета вектор-функции будет &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;, матрицы якобиана - &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(kn^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
Пусть нам будет дана матрица порядка &#039;&#039;n&#039;&#039;. Будем предполагать, что доступно p процессоров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как и ранее будем предполагать, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&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&amp;lt;/math&amp;gt; операций умножения матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   &amp;lt;math&amp;gt;k^2&amp;lt;/math&amp;gt; операций расчета нормы, умножения вектора на число, сложения векторов - &amp;lt;math&amp;gt;O(\frac{k^2n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   QR-факторизация матрицы - &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
На решении задачи минимизации:&lt;br /&gt;
   Обратный ход метода Гаусса - &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Умножение матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
На оставшиеся операции одной итерации метода Ньютона:&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление вектор-функции F в точке - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление матрицы якобиана J в точке - &amp;lt;math&amp;gt;O(\frac{n^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Расчет нормы - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, при небольших значениях параметра &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; получим суммарную оценку &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;.&lt;br /&gt;
Выполнение данного ограничения можно достичь следующими способами:&lt;br /&gt;
&lt;br /&gt;
1) Увеличение скорости сходимости решения СЛАУ при использовании предобуславливания&lt;br /&gt;
&lt;br /&gt;
2) Используя модификацию данного алгоритма - GMRES(m)&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
В качестве модельной задачи рассмотрим один из примеров&amp;lt;ref&amp;gt;http://www.mcs.anl.gov/petsc/petsc-3.5/src/snes/examples/tutorials/ex30.c.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
, поставляемых вместе с модулем SNES пакета PETSc.&lt;br /&gt;
&lt;br /&gt;
Тестирование алгоритма проводилось на суперкомпьютере &amp;quot;Ломоносов&amp;quot;[http://parallel.ru/cluster Суперкомпьютерного комплекса Московского университета].&lt;br /&gt;
&lt;br /&gt;
Версия MPI - impi/4.1.0&lt;br /&gt;
&lt;br /&gt;
Реализация BLAS - mkl/11.2.0&lt;br /&gt;
&lt;br /&gt;
Запуски проводились на regulal4&lt;br /&gt;
&lt;br /&gt;
Модель используемого CPU - Intel Xeon X5570 2.93GHz&lt;br /&gt;
&lt;br /&gt;
Версия PETSc - 3.7.4&lt;br /&gt;
&lt;br /&gt;
Флаги компиляции: -fPIC -Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -fvisibility=hidden -g3&lt;br /&gt;
&lt;br /&gt;
Кроме того, использовались следующие параметры:&lt;br /&gt;
&lt;br /&gt;
1) Pестарт алгоритма GMRES через 300 итераций&lt;br /&gt;
&lt;br /&gt;
2) Максимальное число итераций для нахождения решения СЛАУ - 1500&lt;br /&gt;
&lt;br /&gt;
3) Максимальное число итераций метода Ньютона на данном этапе решения - 20&lt;br /&gt;
&lt;br /&gt;
Набор начальных параметров:&lt;br /&gt;
&lt;br /&gt;
*    Число процессоров [1 2 4 8 16 32 48 64 80 96 112 128];&lt;br /&gt;
*    Порядок матрицы [82 122 162 202 242].&lt;br /&gt;
&lt;br /&gt;
[[Файл:NewtonFlops.jpg|thumb|center|700px|Рисунок 1. Изменение производительности в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonAcc.jpg|thumb|center|700px|Рисунок 2. Изменение ускорения в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonEff.jpg|thumb|center|700px|Рисунок 3. Изменение эффективности в зависимости от числа процессоров и размера матрицы]]&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;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=18119</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=18119"/>
		<updated>2016-11-18T12:11:36Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment}}&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;\frac{r_0}{\|r_0\|}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\|\omega_m\|&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ. &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;nk&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k^2n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(kn^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(kn)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt;&lt;br /&gt;
Предположим, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда сложность расчета вектор-функции будет &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;, матрицы якобиана - &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(kn^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
Пусть нам будет дана матрица порядка &#039;&#039;n&#039;&#039;. Будем предполагать, что доступно p процессоров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как и ранее будем предполагать, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&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&amp;lt;/math&amp;gt; операций умножения матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   &amp;lt;math&amp;gt;k^2&amp;lt;/math&amp;gt; операций расчета нормы, умножения вектора на число, сложения векторов - &amp;lt;math&amp;gt;O(\frac{k^2n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   QR-факторизация матрицы - &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
На решении задачи минимизации:&lt;br /&gt;
   Обратный ход метода Гаусса - &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Умножение матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
На оставшиеся операции одной итерации метода Ньютона:&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление вектор-функции F в точке - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление матрицы якобиана J в точке - &amp;lt;math&amp;gt;O(\frac{n^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Расчет нормы - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, при небольших значениях параметра &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; получим суммарную оценку &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;.&lt;br /&gt;
Выполнение данного ограничения можно достичь следующими способами:&lt;br /&gt;
&lt;br /&gt;
1) Увеличение скорости сходимости решения СЛАУ при использовании предобуславливания&lt;br /&gt;
&lt;br /&gt;
2) Используя модификацию данного алгоритма - GMRES(m)&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
В качестве модельной задачи рассмотрим один из примеров&amp;lt;ref&amp;gt;http://www.mcs.anl.gov/petsc/petsc-3.5/src/snes/examples/tutorials/ex30.c.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
, поставляемых вместе с модулем SNES пакета PETSc.&lt;br /&gt;
&lt;br /&gt;
Тестирование алгоритма проводилось на суперкомпьютере &amp;quot;Ломоносов&amp;quot;[http://parallel.ru/cluster Суперкомпьютерного комплекса Московского университета].&lt;br /&gt;
&lt;br /&gt;
Версия MPI - impi/4.1.0&lt;br /&gt;
&lt;br /&gt;
Реализация BLAS - mkl/11.2.0&lt;br /&gt;
&lt;br /&gt;
Запуски проводились на regulal4&lt;br /&gt;
&lt;br /&gt;
Модель используемого CPU - Intel Xeon X5570 2.93GHz&lt;br /&gt;
&lt;br /&gt;
Кроме того, использовались следующие параметры:&lt;br /&gt;
&lt;br /&gt;
1) Pестарт алгоритма GMRES через 300 итераций&lt;br /&gt;
&lt;br /&gt;
2) Максимальное число итераций для нахождения решения СЛАУ - 1500&lt;br /&gt;
&lt;br /&gt;
3) Максимальное число итераций метода Ньютона на данном этапе решения - 20&lt;br /&gt;
&lt;br /&gt;
Набор начальных параметров:&lt;br /&gt;
&lt;br /&gt;
*    Число процессоров [1 2 4 8 16 32 48 64 80 96 112 128];&lt;br /&gt;
*    Порядок матрицы [82 122 162 202 242].&lt;br /&gt;
&lt;br /&gt;
[[Файл:NewtonFlops.jpg|thumb|center|700px|Рисунок 1. Изменение производительности в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonAcc.jpg|thumb|center|700px|Рисунок 2. Изменение ускорения в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonEff.jpg|thumb|center|700px|Рисунок 3. Изменение эффективности в зависимости от числа процессоров и размера матрицы]]&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;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80_%D0%A7%D0%B5%D1%80%D0%BD%D1%8B%D1%88%D0%B5%D0%B2&amp;diff=18043</id>
		<title>Обсуждение участника:Александр Чернышев</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80_%D0%A7%D0%B5%D1%80%D0%BD%D1%8B%D1%88%D0%B5%D0%B2&amp;diff=18043"/>
		<updated>2016-11-18T05:47:39Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Замечания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Статья [[Метод_Ньютона_для_решения_систем_нелинейных_уравнений]] ==&lt;br /&gt;
&lt;br /&gt;
=== Замечания ===&lt;br /&gt;
* П. 1.8 - отсутствует в явном виде оценка параллельной сложности ВСЕГО алгоритма (а не отдельных его частей). Добавьте фразу типа &amp;quot;Параллельная сложность алгоритма (или одной итерации, как в последовательном случае) при заданных параметрах равна ...&amp;quot;. Можно сделать какие-то предположения для облегчения оценки, но она должна быть. --[[Участник:VadimVV|VadimVV]] ([[Обсуждение участника:VadimVV|обсуждение]]) 13:42, 16 ноября 2016 (MSK)&lt;br /&gt;
* П. 2.4 - не приведен исходный код реализации. --[[Участник:VadimVV|VadimVV]] ([[Обсуждение участника:VadimVV|обсуждение]]) 13:42, 16 ноября 2016 (MSK)&lt;br /&gt;
* П. 2.4 - отсутствует описание платформы, на которой выполнялись эксперименты. --[[Участник:VadimVV|VadimVV]] ([[Обсуждение участника:VadimVV|обсуждение]]) 13:42, 16 ноября 2016 (MSK)&lt;br /&gt;
* П. 2.4 - отсутствует хотя бы минимальное описание/анализ показанных на графике результатов. --[[Участник:VadimVV|VadimVV]] ([[Обсуждение участника:VadimVV|обсуждение]]) 13:42, 16 ноября 2016 (MSK)&lt;br /&gt;
* П. 2.4 - рисунки не оформлены должным образом. --[[Участник:VadimVV|VadimVV]] ([[Обсуждение участника:VadimVV|обсуждение]]) 13:42, 16 ноября 2016 (MSK)&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80_%D0%A7%D0%B5%D1%80%D0%BD%D1%8B%D1%88%D0%B5%D0%B2&amp;diff=18013</id>
		<title>Обсуждение участника:Александр Чернышев</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80_%D0%A7%D0%B5%D1%80%D0%BD%D1%8B%D1%88%D0%B5%D0%B2&amp;diff=18013"/>
		<updated>2016-11-17T20:05:14Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Замечания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Статья [[Метод_Ньютона_для_решения_систем_нелинейных_уравнений]] ==&lt;br /&gt;
&lt;br /&gt;
=== Замечания ===&lt;br /&gt;
* П. 1.8 - отсутствует в явном виде оценка параллельной сложности ВСЕГО алгоритма (а не отдельных его частей). Добавьте фразу типа &amp;quot;Параллельная сложность алгоритма (или одной итерации, как в последовательном случае) при заданных параметрах равна ...&amp;quot;. Можно сделать какие-то предположения для облегчения оценки, но она должна быть. --[[Участник:VadimVV|VadimVV]] ([[Обсуждение участника:VadimVV|обсуждение]]) 13:42, 16 ноября 2016 (MSK)&lt;br /&gt;
* П. 2.4 - не приведен исходный код реализации. -&amp;lt;b&amp;gt;а как его предлагается привести? в рекомендациях к заполнению ничего не сказано  &amp;lt;/b&amp;gt; --[[Участник:VadimVV|VadimVV]] ([[Обсуждение участника:VadimVV|обсуждение]]) 13:42, 16 ноября 2016 (MSK)&lt;br /&gt;
* П. 2.4 - отсутствует описание платформы, на которой выполнялись эксперименты. --[[Участник:VadimVV|VadimVV]] ([[Обсуждение участника:VadimVV|обсуждение]]) 13:42, 16 ноября 2016 (MSK)&lt;br /&gt;
* П. 2.4 - отсутствует хотя бы минимальное описание/анализ показанных на графике результатов. --[[Участник:VadimVV|VadimVV]] ([[Обсуждение участника:VadimVV|обсуждение]]) 13:42, 16 ноября 2016 (MSK)&lt;br /&gt;
* П. 2.4 - рисунки не оформлены должным образом. --[[Участник:VadimVV|VadimVV]] ([[Обсуждение участника:VadimVV|обсуждение]]) 13:42, 16 ноября 2016 (MSK)&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=18011</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=18011"/>
		<updated>2016-11-17T19:52:59Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Последовательная сложность алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment}}&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;\frac{r_0}{\|r_0\|}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\|\omega_m\|&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ. &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;nk&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k^2n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(kn^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(kn)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt;&lt;br /&gt;
Предположим, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда сложность расчета вектор-функции будет &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;, матрицы якобиана - &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(kn^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
Пусть нам будет дана матрица порядка &#039;&#039;n&#039;&#039;. Будем предполагать, что доступно p процессоров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как и ранее будем предполагать, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&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&amp;lt;/math&amp;gt; операций умножения матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   &amp;lt;math&amp;gt;k^2&amp;lt;/math&amp;gt; операций расчета нормы, умножения вектора на число, сложения векторов - &amp;lt;math&amp;gt;O(\frac{k^2n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   QR-факторизация матрицы - &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
На решении задачи минимизации:&lt;br /&gt;
   Обратный ход метода Гаусса - &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Умножение матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
На оставшиеся операции одной итерации метода Ньютона:&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление вектор-функции F в точке - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление матрицы якобиана J в точке - &amp;lt;math&amp;gt;O(\frac{n^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Расчет нормы - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, при небольших значениях параметра &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; получим суммарную оценку &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;.&lt;br /&gt;
Выполнение данного ограничения можно достичь следующими способами:&lt;br /&gt;
&lt;br /&gt;
1) Увеличение скорости сходимости решения СЛАУ при использовании предобуславливания&lt;br /&gt;
&lt;br /&gt;
2) Используя модификацию данного алгоритма - GMRES(m)&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
В качестве модельной задачи рассмотрим один из примеров&amp;lt;ref&amp;gt;http://www.mcs.anl.gov/petsc/petsc-3.5/src/snes/examples/tutorials/ex30.c.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
, поставляемых вместе с модулем SNES пакета PETSc.&lt;br /&gt;
&lt;br /&gt;
Тестирование алгоритма проводилось на суперкомпьютере &amp;quot;Ломоносов&amp;quot;[http://parallel.ru/cluster Суперкомпьютерного комплекса Московского университета].&lt;br /&gt;
&lt;br /&gt;
Кроме того, использовались следующие параметры:&lt;br /&gt;
&lt;br /&gt;
1) Pестарт алгоритма GMRES через 300 итераций&lt;br /&gt;
&lt;br /&gt;
2) Максимальное число итераций для нахождения решения СЛАУ - 1500&lt;br /&gt;
&lt;br /&gt;
3) Максимальное число итераций метода Ньютона на данном этапе решения - 20&lt;br /&gt;
&lt;br /&gt;
Набор начальных параметров:&lt;br /&gt;
&lt;br /&gt;
*    Число процессоров [1 2 4 8 16 32 48 64 80 96 112 128];&lt;br /&gt;
*    Порядок матрицы [82 122 162 202 242].&lt;br /&gt;
&lt;br /&gt;
[[Файл:NewtonFlops.jpg|thumb|center|700px|Рисунок 1. Изменение производительности в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonAcc.jpg|thumb|center|700px|Рисунок 2. Изменение ускорения в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonEff.jpg|thumb|center|700px|Рисунок 3. Изменение эффективности в зависимости от числа процессоров и размера матрицы]]&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;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=18010</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=18010"/>
		<updated>2016-11-17T19:52:41Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Последовательная сложность алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment}}&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;\frac{r_0}{\|r_0\|}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\|\omega_m\|&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;nk&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k^2n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(kn^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(kn)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt;&lt;br /&gt;
Предположим, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда сложность расчета вектор-функции будет &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;, матрицы якобиана - &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(kn^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
Пусть нам будет дана матрица порядка &#039;&#039;n&#039;&#039;. Будем предполагать, что доступно p процессоров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как и ранее будем предполагать, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&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&amp;lt;/math&amp;gt; операций умножения матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   &amp;lt;math&amp;gt;k^2&amp;lt;/math&amp;gt; операций расчета нормы, умножения вектора на число, сложения векторов - &amp;lt;math&amp;gt;O(\frac{k^2n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   QR-факторизация матрицы - &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
На решении задачи минимизации:&lt;br /&gt;
   Обратный ход метода Гаусса - &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Умножение матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
На оставшиеся операции одной итерации метода Ньютона:&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление вектор-функции F в точке - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление матрицы якобиана J в точке - &amp;lt;math&amp;gt;O(\frac{n^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Расчет нормы - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, при небольших значениях параметра &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; получим суммарную оценку &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;.&lt;br /&gt;
Выполнение данного ограничения можно достичь следующими способами:&lt;br /&gt;
&lt;br /&gt;
1) Увеличение скорости сходимости решения СЛАУ при использовании предобуславливания&lt;br /&gt;
&lt;br /&gt;
2) Используя модификацию данного алгоритма - GMRES(m)&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
В качестве модельной задачи рассмотрим один из примеров&amp;lt;ref&amp;gt;http://www.mcs.anl.gov/petsc/petsc-3.5/src/snes/examples/tutorials/ex30.c.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
, поставляемых вместе с модулем SNES пакета PETSc.&lt;br /&gt;
&lt;br /&gt;
Тестирование алгоритма проводилось на суперкомпьютере &amp;quot;Ломоносов&amp;quot;[http://parallel.ru/cluster Суперкомпьютерного комплекса Московского университета].&lt;br /&gt;
&lt;br /&gt;
Кроме того, использовались следующие параметры:&lt;br /&gt;
&lt;br /&gt;
1) Pестарт алгоритма GMRES через 300 итераций&lt;br /&gt;
&lt;br /&gt;
2) Максимальное число итераций для нахождения решения СЛАУ - 1500&lt;br /&gt;
&lt;br /&gt;
3) Максимальное число итераций метода Ньютона на данном этапе решения - 20&lt;br /&gt;
&lt;br /&gt;
Набор начальных параметров:&lt;br /&gt;
&lt;br /&gt;
*    Число процессоров [1 2 4 8 16 32 48 64 80 96 112 128];&lt;br /&gt;
*    Порядок матрицы [82 122 162 202 242].&lt;br /&gt;
&lt;br /&gt;
[[Файл:NewtonFlops.jpg|thumb|center|700px|Рисунок 1. Изменение производительности в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonAcc.jpg|thumb|center|700px|Рисунок 2. Изменение ускорения в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonEff.jpg|thumb|center|700px|Рисунок 3. Изменение эффективности в зависимости от числа процессоров и размера матрицы]]&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;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=18009</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=18009"/>
		<updated>2016-11-17T19:51:29Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Ресурс параллелизма алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment}}&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;\frac{r_0}{\|r_0\|}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\|\omega_m\|&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k^2*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt;&lt;br /&gt;
Предположим, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда сложность расчета вектор-функции будет &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;, матрицы якобиана - &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
Пусть нам будет дана матрица порядка &#039;&#039;n&#039;&#039;. Будем предполагать, что доступно p процессоров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как и ранее будем предполагать, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&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&amp;lt;/math&amp;gt; операций умножения матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   &amp;lt;math&amp;gt;k^2&amp;lt;/math&amp;gt; операций расчета нормы, умножения вектора на число, сложения векторов - &amp;lt;math&amp;gt;O(\frac{k^2n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   QR-факторизация матрицы - &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
На решении задачи минимизации:&lt;br /&gt;
   Обратный ход метода Гаусса - &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Умножение матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
На оставшиеся операции одной итерации метода Ньютона:&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление вектор-функции F в точке - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление матрицы якобиана J в точке - &amp;lt;math&amp;gt;O(\frac{n^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Расчет нормы - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, при небольших значениях параметра &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; получим суммарную оценку &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;.&lt;br /&gt;
Выполнение данного ограничения можно достичь следующими способами:&lt;br /&gt;
&lt;br /&gt;
1) Увеличение скорости сходимости решения СЛАУ при использовании предобуславливания&lt;br /&gt;
&lt;br /&gt;
2) Используя модификацию данного алгоритма - GMRES(m)&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
В качестве модельной задачи рассмотрим один из примеров&amp;lt;ref&amp;gt;http://www.mcs.anl.gov/petsc/petsc-3.5/src/snes/examples/tutorials/ex30.c.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
, поставляемых вместе с модулем SNES пакета PETSc.&lt;br /&gt;
&lt;br /&gt;
Тестирование алгоритма проводилось на суперкомпьютере &amp;quot;Ломоносов&amp;quot;[http://parallel.ru/cluster Суперкомпьютерного комплекса Московского университета].&lt;br /&gt;
&lt;br /&gt;
Кроме того, использовались следующие параметры:&lt;br /&gt;
&lt;br /&gt;
1) Pестарт алгоритма GMRES через 300 итераций&lt;br /&gt;
&lt;br /&gt;
2) Максимальное число итераций для нахождения решения СЛАУ - 1500&lt;br /&gt;
&lt;br /&gt;
3) Максимальное число итераций метода Ньютона на данном этапе решения - 20&lt;br /&gt;
&lt;br /&gt;
Набор начальных параметров:&lt;br /&gt;
&lt;br /&gt;
*    Число процессоров [1 2 4 8 16 32 48 64 80 96 112 128];&lt;br /&gt;
*    Порядок матрицы [82 122 162 202 242].&lt;br /&gt;
&lt;br /&gt;
[[Файл:NewtonFlops.jpg|thumb|center|700px|Рисунок 1. Изменение производительности в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonAcc.jpg|thumb|center|700px|Рисунок 2. Изменение ускорения в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonEff.jpg|thumb|center|700px|Рисунок 3. Изменение эффективности в зависимости от числа процессоров и размера матрицы]]&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;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=18008</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=18008"/>
		<updated>2016-11-17T19:50:33Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Масштабируемость алгоритма и его реализации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment}}&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;\frac{r_0}{\|r_0\|}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\|\omega_m\|&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k^2*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt;&lt;br /&gt;
Предположим, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда сложность расчета вектор-функции будет &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;, матрицы якобиана - &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
Пусть нам будет дана матрица порядка &#039;&#039;n&#039;&#039;. Будем предполагать, что доступно p процессоров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как и ранее будем предполагать, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&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&amp;lt;/math&amp;gt; операций умножения матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   &amp;lt;math&amp;gt;k^2&amp;lt;/math&amp;gt; операций расчета нормы, умножения вектора на число, сложения векторов - &amp;lt;math&amp;gt;O(\frac{k^2n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   QR-факторизация матрицы - &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
На решении задачи минимизации:&lt;br /&gt;
   Обратный ход метода гаусса - &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Умножение матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
На оставшиеся операции одной итерации метода Ньютона:&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление вектор-функции F в точке - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление матрицы якобиана J в точке - &amp;lt;math&amp;gt;O(\frac{n^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Расчет нормы - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, при небольших значениях параметра &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; получим суммарную оценку &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;.&lt;br /&gt;
Выполнение данного ограничения можно достичь следующими способами:&lt;br /&gt;
&lt;br /&gt;
1) Увеличение скорости сходимости решения СЛАУ при использовании предобуславливания&lt;br /&gt;
&lt;br /&gt;
2) Используя модификацию данного алгоритма - GMRES(m)&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
В качестве модельной задачи рассмотрим один из примеров&amp;lt;ref&amp;gt;http://www.mcs.anl.gov/petsc/petsc-3.5/src/snes/examples/tutorials/ex30.c.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
, поставляемых вместе с модулем SNES пакета PETSc.&lt;br /&gt;
&lt;br /&gt;
Тестирование алгоритма проводилось на суперкомпьютере &amp;quot;Ломоносов&amp;quot;[http://parallel.ru/cluster Суперкомпьютерного комплекса Московского университета].&lt;br /&gt;
&lt;br /&gt;
Кроме того, использовались следующие параметры:&lt;br /&gt;
&lt;br /&gt;
1) Pестарт алгоритма GMRES через 300 итераций&lt;br /&gt;
&lt;br /&gt;
2) Максимальное число итераций для нахождения решения СЛАУ - 1500&lt;br /&gt;
&lt;br /&gt;
3) Максимальное число итераций метода Ньютона на данном этапе решения - 20&lt;br /&gt;
&lt;br /&gt;
Набор начальных параметров:&lt;br /&gt;
&lt;br /&gt;
*    Число процессоров [1 2 4 8 16 32 48 64 80 96 112 128];&lt;br /&gt;
*    Порядок матрицы [82 122 162 202 242].&lt;br /&gt;
&lt;br /&gt;
[[Файл:NewtonFlops.jpg|thumb|center|700px|Рисунок 1. Изменение производительности в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonAcc.jpg|thumb|center|700px|Рисунок 2. Изменение ускорения в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonEff.jpg|thumb|center|700px|Рисунок 3. Изменение эффективности в зависимости от числа процессоров и размера матрицы]]&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;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=18007</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=18007"/>
		<updated>2016-11-17T19:47:15Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Масштабируемость алгоритма и его реализации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment}}&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;\frac{r_0}{\|r_0\|}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\|\omega_m\|&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k^2*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt;&lt;br /&gt;
Предположим, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда сложность расчета вектор-функции будет &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;, матрицы якобиана - &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
Пусть нам будет дана матрица порядка &#039;&#039;n&#039;&#039;. Будем предполагать, что доступно p процессоров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как и ранее будем предполагать, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&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&amp;lt;/math&amp;gt; операций умножения матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   &amp;lt;math&amp;gt;k^2&amp;lt;/math&amp;gt; операций расчета нормы, умножения вектора на число, сложения векторов - &amp;lt;math&amp;gt;O(\frac{k^2n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   QR-факторизация матрицы - &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
На решении задачи минимизации:&lt;br /&gt;
   Обратный ход метода гаусса - &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Умножение матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
На оставшиеся операции одной итерации метода Ньютона:&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление вектор-функции F в точке - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление матрицы якобиана J в точке - &amp;lt;math&amp;gt;O(\frac{n^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Расчет нормы - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, при небольших значениях параметра &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; получим суммарную оценку &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;.&lt;br /&gt;
Выполнение данного ограничения можно достичь следующими способами:&lt;br /&gt;
&lt;br /&gt;
1) Увеличение скорости сходимости решения СЛАУ при использовании предобуславливания&lt;br /&gt;
&lt;br /&gt;
2) Используя модификацию данного алгоритма - GMRES(m)&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
В качестве модельной задачи рассмотрим один из примеров&amp;lt;ref&amp;gt;http://www.mcs.anl.gov/petsc/petsc-3.5/src/snes/examples/tutorials/ex30.c.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
, поставляемых вместе с модулем SNES пакета PETSc.&lt;br /&gt;
&lt;br /&gt;
Тестирование алгоритма проводилось на суперкомпьютере &amp;quot;Ломоносов&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Кроме того, использовались следующие параметры:&lt;br /&gt;
&lt;br /&gt;
1) Pестарт алгоритма GMRES через 300 итераций&lt;br /&gt;
&lt;br /&gt;
2) Максимальное число итераций для нахождения решения СЛАУ - 1500&lt;br /&gt;
&lt;br /&gt;
3) Максимальное число итераций метода Ньютона на данном этапе решения - 20&lt;br /&gt;
&lt;br /&gt;
Набор начальных параметров:&lt;br /&gt;
&lt;br /&gt;
*    Число процессоров [1 2 4 8 16 32 48 64 80 96 112 128];&lt;br /&gt;
*    Порядок матрицы [82 122 162 202 242].&lt;br /&gt;
&lt;br /&gt;
[[Файл:NewtonFlops.jpg|thumb|center|700px|Рисунок 1. Изменение производительности в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonAcc.jpg|thumb|center|700px|Рисунок 2. Изменение ускорения в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonEff.jpg|thumb|center|700px|Рисунок 3. Изменение эффективности в зависимости от числа процессоров и размера матрицы]]&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;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=18006</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=18006"/>
		<updated>2016-11-17T19:45:09Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Ресурс параллелизма алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment}}&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;\frac{r_0}{\|r_0\|}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\|\omega_m\|&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k^2*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt;&lt;br /&gt;
Предположим, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда сложность расчета вектор-функции будет &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;, матрицы якобиана - &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
Пусть нам будет дана матрица порядка &#039;&#039;n&#039;&#039;. Будем предполагать, что доступно p процессоров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как и ранее будем предполагать, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&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&amp;lt;/math&amp;gt; операций умножения матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   &amp;lt;math&amp;gt;k^2&amp;lt;/math&amp;gt; операций расчета нормы, умножения вектора на число, сложения векторов - &amp;lt;math&amp;gt;O(\frac{k^2n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   QR-факторизация матрицы - &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
На решении задачи минимизации:&lt;br /&gt;
   Обратный ход метода гаусса - &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Умножение матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
На оставшиеся операции одной итерации метода Ньютона:&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление вектор-функции F в точке - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление матрицы якобиана J в точке - &amp;lt;math&amp;gt;O(\frac{n^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Расчет нормы - &amp;lt;math&amp;gt;O(\frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, при небольших значениях параметра &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; получим суммарную оценку &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;.&lt;br /&gt;
Выполнение данного ограничения можно достичь следующими способами:&lt;br /&gt;
&lt;br /&gt;
1) Увеличение скорости сходимости решения СЛАУ при использовании предобуславливания&lt;br /&gt;
&lt;br /&gt;
2) Используя модификацию данного алгоритма - GMRES(m)&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
В качестве модельной задачи рассмотрим один из примеров&amp;lt;ref&amp;gt;http://www.mcs.anl.gov/petsc/petsc-3.5/src/snes/examples/tutorials/ex30.c.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
, поставляемых вместе с модулем SNES пакета PETSc.&lt;br /&gt;
&lt;br /&gt;
Тестирование алгоритма проводилось на суперкомпьютере &amp;quot;Ломоносов&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Кроме того, использовались следующие параметры:&lt;br /&gt;
&lt;br /&gt;
1) Pестарт алгоритма GMRES через 300 итераций&lt;br /&gt;
&lt;br /&gt;
2) Максимальное число итераций для нахожения решения СЛАУ - 1500&lt;br /&gt;
&lt;br /&gt;
3) Максимальное число итераций метода Ньютона на данном этапе решения - 20&lt;br /&gt;
&lt;br /&gt;
Набор начальных параметров:&lt;br /&gt;
&lt;br /&gt;
*    Число процессоров [1 2 4 8 16 32 48 64 80 96 112 128];&lt;br /&gt;
*    Порядок матрицы [82 122 162 202 242].&lt;br /&gt;
&lt;br /&gt;
[[Файл:NewtonFlops.jpg|thumb|center|700px|Рисунок 1. Изменение производительности в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonAcc.jpg|thumb|center|700px|Рисунок 2. Изменение ускорения в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonEff.jpg|thumb|center|700px|Рисунок 3. Изменение эффективности в зависимости от числа процессоров и размера матрицы]]&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;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=18005</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=18005"/>
		<updated>2016-11-17T19:44:24Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Ресурс параллелизма алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment}}&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;\frac{r_0}{\|r_0\|}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\|\omega_m\|&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k^2*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt;&lt;br /&gt;
Предположим, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда сложность расчета вектор-функции будет &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;, матрицы якобиана - &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
Пусть нам будет дана матрица порядка &#039;&#039;n&#039;&#039;. Будем предполагать, что доступно p процессоров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как и ранее будем предполагать, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&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&amp;lt;/math&amp;gt; операций умножения матрицы на вектор - &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   &amp;lt;math&amp;gt;k^2&amp;lt;/math&amp;gt; операций расчета нормы, умножения вектора на число, сложения векторов - &amp;lt;math&amp;gt;O(frac{k^2n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   QR-факторизация матрицы - &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
На решении задачи минимизации:&lt;br /&gt;
   Обратный ход метода гаусса - &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Умножение матрицы на вектор - &amp;lt;math&amp;gt;O(frac{kn}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
На оставшиеся операции одной итерации метода Ньютона:&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление вектор-функции F в точке - &amp;lt;math&amp;gt;O(frac{n}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление матрицы якобиана J в точке - &amp;lt;math&amp;gt;O(frac{n^2}{p})&amp;lt;/math&amp;gt;&lt;br /&gt;
   Расчет нормы - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, при небольших значениях параметра &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; получим суммарную оценку &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;.&lt;br /&gt;
Выполнение данного ограничения можно достичь следующими способами:&lt;br /&gt;
&lt;br /&gt;
1) Увеличение скорости сходимости решения СЛАУ при использовании предобуславливания&lt;br /&gt;
&lt;br /&gt;
2) Используя модификацию данного алгоритма - GMRES(m)&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
В качестве модельной задачи рассмотрим один из примеров&amp;lt;ref&amp;gt;http://www.mcs.anl.gov/petsc/petsc-3.5/src/snes/examples/tutorials/ex30.c.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
, поставляемых вместе с модулем SNES пакета PETSc.&lt;br /&gt;
&lt;br /&gt;
Тестирование алгоритма проводилось на суперкомпьютере &amp;quot;Ломоносов&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Кроме того, использовались следующие параметры:&lt;br /&gt;
&lt;br /&gt;
1) Pестарт алгоритма GMRES через 300 итераций&lt;br /&gt;
&lt;br /&gt;
2) Максимальное число итераций для нахожения решения СЛАУ - 1500&lt;br /&gt;
&lt;br /&gt;
3) Максимальное число итераций метода Ньютона на данном этапе решения - 20&lt;br /&gt;
&lt;br /&gt;
Набор начальных параметров:&lt;br /&gt;
&lt;br /&gt;
*    Число процессоров [1 2 4 8 16 32 48 64 80 96 112 128];&lt;br /&gt;
*    Порядок матрицы [82 122 162 202 242].&lt;br /&gt;
&lt;br /&gt;
[[Файл:NewtonFlops.jpg|thumb|center|700px|Рисунок 1. Изменение производительности в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonAcc.jpg|thumb|center|700px|Рисунок 2. Изменение ускорения в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonEff.jpg|thumb|center|700px|Рисунок 3. Изменение эффективности в зависимости от числа процессоров и размера матрицы]]&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;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=18004</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=18004"/>
		<updated>2016-11-17T19:41:02Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Вычислительное ядро алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment}}&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;\frac{r_0}{\|r_0\|}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\|\omega_m\|&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k^2*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt;&lt;br /&gt;
Предположим, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда сложность расчета вектор-функции будет &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;, матрицы якобиана - &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
Пусть нам будет дана матрица порядка &#039;&#039;n&#039;&#039;. Будем предполагать, что доступно p процессоров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как и ранее будем предполагать, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&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&amp;lt;/math&amp;gt; операций умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   &amp;lt;math&amp;gt;k^2&amp;lt;/math&amp;gt; операций расчета нормы, умножения вектора на число, сложения векторов - &amp;lt;math&amp;gt;O(k^2*n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   QR-факторизация матрицы - &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
На решении задачи минимизации:&lt;br /&gt;
   Обратный ход метода гаусса - &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Умножение матрицы на вектор - &amp;lt;math&amp;gt;O(k*n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
На оставшиеся операции одной итерации метода Ньютона:&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление вектор-функции F в точке - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление матрицы якобиана J в точке - &amp;lt;math&amp;gt;O(n^2/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Расчет нормы - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, при небольших значениях параметра &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; получим суммарную оценку &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;.&lt;br /&gt;
Выполнение данного ограничения можно достичь следующими способами:&lt;br /&gt;
&lt;br /&gt;
1) Увеличение скорости сходимости решения СЛАУ при использовании предобуславливания&lt;br /&gt;
&lt;br /&gt;
2) Используя модификацию данного алгоритма - GMRES(m)&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
В качестве модельной задачи рассмотрим один из примеров&amp;lt;ref&amp;gt;http://www.mcs.anl.gov/petsc/petsc-3.5/src/snes/examples/tutorials/ex30.c.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
, поставляемых вместе с модулем SNES пакета PETSc.&lt;br /&gt;
&lt;br /&gt;
Тестирование алгоритма проводилось на суперкомпьютере &amp;quot;Ломоносов&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Кроме того, использовались следующие параметры:&lt;br /&gt;
&lt;br /&gt;
1) Pестарт алгоритма GMRES через 300 итераций&lt;br /&gt;
&lt;br /&gt;
2) Максимальное число итераций для нахожения решения СЛАУ - 1500&lt;br /&gt;
&lt;br /&gt;
3) Максимальное число итераций метода Ньютона на данном этапе решения - 20&lt;br /&gt;
&lt;br /&gt;
Набор начальных параметров:&lt;br /&gt;
&lt;br /&gt;
*    Число процессоров [1 2 4 8 16 32 48 64 80 96 112 128];&lt;br /&gt;
*    Порядок матрицы [82 122 162 202 242].&lt;br /&gt;
&lt;br /&gt;
[[Файл:NewtonFlops.jpg|thumb|center|700px|Рисунок 1. Изменение производительности в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonAcc.jpg|thumb|center|700px|Рисунок 2. Изменение ускорения в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonEff.jpg|thumb|center|700px|Рисунок 3. Изменение эффективности в зависимости от числа процессоров и размера матрицы]]&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;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=18003</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=18003"/>
		<updated>2016-11-17T19:40:28Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Вычислительное ядро алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment}}&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;\frac{r_0}{\|r_0\|}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\begin{Vmatrix}\omega_m\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k^2*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt;&lt;br /&gt;
Предположим, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда сложность расчета вектор-функции будет &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;, матрицы якобиана - &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
Пусть нам будет дана матрица порядка &#039;&#039;n&#039;&#039;. Будем предполагать, что доступно p процессоров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как и ранее будем предполагать, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&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&amp;lt;/math&amp;gt; операций умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   &amp;lt;math&amp;gt;k^2&amp;lt;/math&amp;gt; операций расчета нормы, умножения вектора на число, сложения векторов - &amp;lt;math&amp;gt;O(k^2*n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   QR-факторизация матрицы - &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
На решении задачи минимизации:&lt;br /&gt;
   Обратный ход метода гаусса - &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Умножение матрицы на вектор - &amp;lt;math&amp;gt;O(k*n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
На оставшиеся операции одной итерации метода Ньютона:&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление вектор-функции F в точке - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление матрицы якобиана J в точке - &amp;lt;math&amp;gt;O(n^2/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Расчет нормы - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, при небольших значениях параметра &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; получим суммарную оценку &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;.&lt;br /&gt;
Выполнение данного ограничения можно достичь следующими способами:&lt;br /&gt;
&lt;br /&gt;
1) Увеличение скорости сходимости решения СЛАУ при использовании предобуславливания&lt;br /&gt;
&lt;br /&gt;
2) Используя модификацию данного алгоритма - GMRES(m)&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
В качестве модельной задачи рассмотрим один из примеров&amp;lt;ref&amp;gt;http://www.mcs.anl.gov/petsc/petsc-3.5/src/snes/examples/tutorials/ex30.c.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
, поставляемых вместе с модулем SNES пакета PETSc.&lt;br /&gt;
&lt;br /&gt;
Тестирование алгоритма проводилось на суперкомпьютере &amp;quot;Ломоносов&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Кроме того, использовались следующие параметры:&lt;br /&gt;
&lt;br /&gt;
1) Pестарт алгоритма GMRES через 300 итераций&lt;br /&gt;
&lt;br /&gt;
2) Максимальное число итераций для нахожения решения СЛАУ - 1500&lt;br /&gt;
&lt;br /&gt;
3) Максимальное число итераций метода Ньютона на данном этапе решения - 20&lt;br /&gt;
&lt;br /&gt;
Набор начальных параметров:&lt;br /&gt;
&lt;br /&gt;
*    Число процессоров [1 2 4 8 16 32 48 64 80 96 112 128];&lt;br /&gt;
*    Порядок матрицы [82 122 162 202 242].&lt;br /&gt;
&lt;br /&gt;
[[Файл:NewtonFlops.jpg|thumb|center|700px|Рисунок 1. Изменение производительности в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonAcc.jpg|thumb|center|700px|Рисунок 2. Изменение ускорения в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonEff.jpg|thumb|center|700px|Рисунок 3. Изменение эффективности в зависимости от числа процессоров и размера матрицы]]&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;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=18002</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=18002"/>
		<updated>2016-11-17T19:36:18Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment}}&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;r_0/\begin{Vmatrix}r_0\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\begin{Vmatrix}\omega_m\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k^2*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt;&lt;br /&gt;
Предположим, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда сложность расчета вектор-функции будет &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;, матрицы якобиана - &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
Пусть нам будет дана матрица порядка &#039;&#039;n&#039;&#039;. Будем предполагать, что доступно p процессоров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как и ранее будем предполагать, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&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&amp;lt;/math&amp;gt; операций умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   &amp;lt;math&amp;gt;k^2&amp;lt;/math&amp;gt; операций расчета нормы, умножения вектора на число, сложения векторов - &amp;lt;math&amp;gt;O(k^2*n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   QR-факторизация матрицы - &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
На решении задачи минимизации:&lt;br /&gt;
   Обратный ход метода гаусса - &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Умножение матрицы на вектор - &amp;lt;math&amp;gt;O(k*n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
На оставшиеся операции одной итерации метода Ньютона:&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление вектор-функции F в точке - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление матрицы якобиана J в точке - &amp;lt;math&amp;gt;O(n^2/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Расчет нормы - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, при небольших значениях параметра &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; получим суммарную оценку &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;.&lt;br /&gt;
Выполнение данного ограничения можно достичь следующими способами:&lt;br /&gt;
&lt;br /&gt;
1) Увеличение скорости сходимости решения СЛАУ при использовании предобуславливания&lt;br /&gt;
&lt;br /&gt;
2) Используя модификацию данного алгоритма - GMRES(m)&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
В качестве модельной задачи рассмотрим один из примеров&amp;lt;ref&amp;gt;http://www.mcs.anl.gov/petsc/petsc-3.5/src/snes/examples/tutorials/ex30.c.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
, поставляемых вместе с модулем SNES пакета PETSc.&lt;br /&gt;
&lt;br /&gt;
Тестирование алгоритма проводилось на суперкомпьютере &amp;quot;Ломоносов&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Кроме того, использовались следующие параметры:&lt;br /&gt;
&lt;br /&gt;
1) Pестарт алгоритма GMRES через 300 итераций&lt;br /&gt;
&lt;br /&gt;
2) Максимальное число итераций для нахожения решения СЛАУ - 1500&lt;br /&gt;
&lt;br /&gt;
3) Максимальное число итераций метода Ньютона на данном этапе решения - 20&lt;br /&gt;
&lt;br /&gt;
Набор начальных параметров:&lt;br /&gt;
&lt;br /&gt;
*    Число процессоров [1 2 4 8 16 32 48 64 80 96 112 128];&lt;br /&gt;
*    Порядок матрицы [82 122 162 202 242].&lt;br /&gt;
&lt;br /&gt;
[[Файл:NewtonFlops.jpg|thumb|center|700px|Рисунок 1. Изменение производительности в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonAcc.jpg|thumb|center|700px|Рисунок 2. Изменение ускорения в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonEff.jpg|thumb|center|700px|Рисунок 3. Изменение эффективности в зависимости от числа процессоров и размера матрицы]]&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;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17999</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17999"/>
		<updated>2016-11-17T19:27:49Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Ресурс параллелизма алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment}}&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Метод Ньютона&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;r_0/\begin{Vmatrix}r_0\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\begin{Vmatrix}\omega_m\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k^2*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt;&lt;br /&gt;
Предположим, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда сложность расчета вектор-функции будет &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;, матрицы якобиана - &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
Пусть нам будет дана матрица порядка &#039;&#039;n&#039;&#039;. Будем предполагать, что доступно p процессоров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как и ранее будем предполагать, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&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&amp;lt;/math&amp;gt; операций умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   &amp;lt;math&amp;gt;k^2&amp;lt;/math&amp;gt; операций расчета нормы, умножения вектора на число, сложения векторов - &amp;lt;math&amp;gt;O(k^2*n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   QR-факторизация матрицы - &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
На решении задачи минимизации:&lt;br /&gt;
   Обратный ход метода гаусса - &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Умножение матрицы на вектор - &amp;lt;math&amp;gt;O(k*n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
На оставшиеся операции одной итерации метода Ньютона:&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление вектор-функции F в точке - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление матрицы якобиана J в точке - &amp;lt;math&amp;gt;O(n^2/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Расчет нормы - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, при небольших значениях параметра &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; получим суммарную оценку &amp;lt;math&amp;gt;O(\frac{kn^2}{p})&amp;lt;/math&amp;gt;.&lt;br /&gt;
Выполнение данного ограничения можно достичь следующими способами:&lt;br /&gt;
&lt;br /&gt;
1) Увеличение скорости сходимости решения СЛАУ при использовании предобуславливания&lt;br /&gt;
&lt;br /&gt;
2) Используя модификацию данного алгоритма - GMRES(m)&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
В качестве модельной задачи рассмотрим один из примеров&amp;lt;ref&amp;gt;http://www.mcs.anl.gov/petsc/petsc-3.5/src/snes/examples/tutorials/ex30.c.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
, поставляемых вместе с модулем SNES пакета PETSc.&lt;br /&gt;
&lt;br /&gt;
Тестирование алгоритма проводилось на суперкомпьютере &amp;quot;Ломоносов&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Кроме того, использовались следующие параметры:&lt;br /&gt;
&lt;br /&gt;
1) Pестарт алгоритма GMRES через 300 итераций&lt;br /&gt;
&lt;br /&gt;
2) Максимальное число итераций для нахожения решения СЛАУ - 1500&lt;br /&gt;
&lt;br /&gt;
3) Максимальное число итераций метода Ньютона на данном этапе решения - 20&lt;br /&gt;
&lt;br /&gt;
Набор начальных параметров:&lt;br /&gt;
&lt;br /&gt;
*    Число процессоров [1 2 4 8 16 32 48 64 80 96 112 128];&lt;br /&gt;
*    Порядок матрицы [82 122 162 202 242].&lt;br /&gt;
&lt;br /&gt;
[[Файл:NewtonFlops.jpg|thumb|center|700px|Рисунок 1. Изменение производительности в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonAcc.jpg|thumb|center|700px|Рисунок 2. Изменение ускорения в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonEff.jpg|thumb|center|700px|Рисунок 3. Изменение эффективности в зависимости от числа процессоров и размера матрицы]]&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;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17998</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17998"/>
		<updated>2016-11-17T19:26:13Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Ресурс параллелизма алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment}}&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Метод Ньютона&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;r_0/\begin{Vmatrix}r_0\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\begin{Vmatrix}\omega_m\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k^2*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt;&lt;br /&gt;
Предположим, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда сложность расчета вектор-функции будет &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;, матрицы якобиана - &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
Пусть нам будет дана матрица порядка &#039;&#039;n&#039;&#039;. Будем предполагать, что доступно p процессоров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как и ранее будем предполагать, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&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&amp;lt;/math&amp;gt; операций умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   &amp;lt;math&amp;gt;k^2&amp;lt;/math&amp;gt; операций расчета нормы, умножения вектора на число, сложения векторов - &amp;lt;math&amp;gt;O(k^2*n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   QR-факторизация матрицы - &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
На решении задачи минимизации:&lt;br /&gt;
   Обратный ход метода гаусса - &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Умножение матрицы на вектор - &amp;lt;math&amp;gt;O(k*n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
На оставшиеся операции одной итерации метода Ньютона:&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление вектор-функции F в точке - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление матрицы якобиана J в точке - &amp;lt;math&amp;gt;O(n^2/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Расчет нормы - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, при небольших значениях параметра &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; получим суммарную оценку &amp;lt;math&amp;gt;O(k*n^2/p)&amp;lt;/math&amp;gt;.&lt;br /&gt;
Выполнение данного ограничения можно достичь следующими способами:&lt;br /&gt;
&lt;br /&gt;
1) Увеличение скорости сходимости решения СЛАУ при использовании предобуславливания&lt;br /&gt;
&lt;br /&gt;
2) Используя модификацию данного алгоритма - GMRES(m)&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
В качестве модельной задачи рассмотрим один из примеров&amp;lt;ref&amp;gt;http://www.mcs.anl.gov/petsc/petsc-3.5/src/snes/examples/tutorials/ex30.c.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
, поставляемых вместе с модулем SNES пакета PETSc.&lt;br /&gt;
&lt;br /&gt;
Тестирование алгоритма проводилось на суперкомпьютере &amp;quot;Ломоносов&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Кроме того, использовались следующие параметры:&lt;br /&gt;
&lt;br /&gt;
1) Pестарт алгоритма GMRES через 300 итераций&lt;br /&gt;
&lt;br /&gt;
2) Максимальное число итераций для нахожения решения СЛАУ - 1500&lt;br /&gt;
&lt;br /&gt;
3) Максимальное число итераций метода Ньютона на данном этапе решения - 20&lt;br /&gt;
&lt;br /&gt;
Набор начальных параметров:&lt;br /&gt;
&lt;br /&gt;
*    Число процессоров [1 2 4 8 16 32 48 64 80 96 112 128];&lt;br /&gt;
*    Порядок матрицы [82 122 162 202 242].&lt;br /&gt;
&lt;br /&gt;
[[Файл:NewtonFlops.jpg|thumb|center|700px|Рисунок 1. Изменение производительности в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonAcc.jpg|thumb|center|700px|Рисунок 2. Изменение ускорения в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonEff.jpg|thumb|center|700px|Рисунок 3. Изменение эффективности в зависимости от числа процессоров и размера матрицы]]&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;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17997</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17997"/>
		<updated>2016-11-17T19:25:07Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment}}&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Метод Ньютона&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;r_0/\begin{Vmatrix}r_0\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\begin{Vmatrix}\omega_m\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k^2*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt;&lt;br /&gt;
Предположим, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда сложность расчета вектор-функции будет &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;, матрицы якобиана - &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
Пусть нам будет дана матрица порядка &#039;&#039;n&#039;&#039;. Будем предполагать, что доступно p процессоров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как и ранее будем предполагать, что сложность расчета одного элемента вектор-функции F и матрицы якобиана J будет &amp;lt;math&amp;gt;O(1)&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&amp;lt;/math&amp;gt; операций умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   &amp;lt;math&amp;gt;k^2&amp;lt;/math&amp;gt; операций расчета нормы, умножения вектора на число, сложения векторов - &amp;lt;math&amp;gt;O(k^2*n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   QR-факторизация матрицы - &amp;lt;math&amp;gt;O(k^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
На решении задачи минимизации:&lt;br /&gt;
   Обратный ход метода гаусса - &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Умножение матрицы на вектор - &amp;lt;math&amp;gt;O(k*n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
На оставшиеся операции одной итерации метода Ньютона:&lt;br /&gt;
   Сложение векторов - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление вектор-функции F в точке - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Вычисление матрицы якобиана J в точке - &amp;lt;math&amp;gt;O(n^2/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
   Расчет нормы - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, при небольших значениях параметра &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; получим суммарную оценку &amp;lt;math&amp;gt;O(k*n^2/p)&amp;lt;/math&amp;gt;.&lt;br /&gt;
Выполнение данного ограничения можно достичь следующими способами:&lt;br /&gt;
&lt;br /&gt;
1) Увеличение скорости сходимости решения СЛАУ при использовании предобуславливания&lt;br /&gt;
&lt;br /&gt;
2) Используя модификацию данного алгоритма - GMRES(m)&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
В качестве модельной задачи рассмотрим один из примеров&amp;lt;ref&amp;gt;http://www.mcs.anl.gov/petsc/petsc-3.5/src/snes/examples/tutorials/ex30.c.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
, поставляемых вместе с модулем SNES пакета PETSc.&lt;br /&gt;
&lt;br /&gt;
Тестирование алгоритма проводилось на суперкомпьютере &amp;quot;Ломоносов&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Кроме того, использовались следующие параметры:&lt;br /&gt;
&lt;br /&gt;
1) Pестарт алгоритма GMRES через 300 итераций&lt;br /&gt;
&lt;br /&gt;
2) Максимальное число итераций для нахожения решения СЛАУ - 1500&lt;br /&gt;
&lt;br /&gt;
3) Максимальное число итераций метода Ньютона на данном этапе решения - 20&lt;br /&gt;
&lt;br /&gt;
Набор начальных параметров:&lt;br /&gt;
&lt;br /&gt;
*    Число процессоров [1 2 4 8 16 32 48 64 80 96 112 128];&lt;br /&gt;
*    Порядок матрицы [82 122 162 202 242].&lt;br /&gt;
&lt;br /&gt;
[[Файл:NewtonFlops.jpg|thumb|center|700px|Рисунок 1. Изменение производительности в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonAcc.jpg|thumb|center|700px|Рисунок 2. Изменение ускорения в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
[[Файл:NewtonEff.jpg|thumb|center|700px|Рисунок 3. Изменение эффективности в зависимости от числа процессоров и размера матрицы]]&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;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17493</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17493"/>
		<updated>2016-11-15T21:33:35Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment}}&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Метод Ньютона&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;r_0/\begin{Vmatrix}r_0\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\begin{Vmatrix}\omega_m\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt; &lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
Пусть нам будет дана матрица порядка &#039;&#039;n&#039;&#039;. При использовании P процессоров мы получим:&amp;lt;br&amp;gt;&lt;br /&gt;
Умножение матрицы на вектор - &amp;lt;math&amp;gt;O(n^2/P)&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Скалярное произведение, сложение векторов, умножение вектора на число - &amp;lt;math&amp;gt;O(n/p)&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
[[Файл:newton_Flops.png]]&lt;br /&gt;
[[Файл:newton_Time.png]]&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17315</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17315"/>
		<updated>2016-11-15T16:54:39Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Метод Ньютона&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;r_0/\begin{Vmatrix}r_0\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\begin{Vmatrix}\omega_m\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt; &lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17313</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17313"/>
		<updated>2016-11-15T16:47:39Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Метод Ньютона&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;r_0/\begin{Vmatrix}r_0\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\begin{Vmatrix}\omega_m\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt; &lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Grafnewton.PNG|thumb|600px|center| Рис. 1. Информационная история]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17201</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17201"/>
		<updated>2016-11-15T07:24:02Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment}}&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равнозначный.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Метод Ньютона&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;r_0/\begin{Vmatrix}r_0\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\begin{Vmatrix}\omega_m\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt; &lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Fullsch.PNG|thumb|600px|center| Рис. 1. Общая схема]]&lt;br /&gt;
[[Файл:Iteration8383.PNG|thumb|600px|center| Рис. 2. Итерация]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17131</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17131"/>
		<updated>2016-11-14T21:03:30Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment}}&lt;br /&gt;
Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равномерный.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Метод Ньютона&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;r_0/\begin{Vmatrix}r_0\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\begin{Vmatrix}\omega_m\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt; &lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Fullsch.PNG|thumb|600px|center| Рис. 1. Общая схема]]&lt;br /&gt;
[[Файл:Iteration8383.PNG|thumb|600px|center| Рис. 2. Итерация]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17127</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17127"/>
		<updated>2016-11-14T20:55:02Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равномерный.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Метод Ньютона&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;r_0/\begin{Vmatrix}r_0\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\begin{Vmatrix}\omega_m\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt; &lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Fullsch.PNG|thumb|600px|center| Рис. 1. Общая схема]]&lt;br /&gt;
[[Файл:Iteration8383.PNG|thumb|600px|center| Рис. 2. Итерация]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17126</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17126"/>
		<updated>2016-11-14T20:44:43Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равномерный.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Метод Ньютона&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;r_0/\begin{Vmatrix}r_0\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\begin{Vmatrix}\omega_m\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt; &lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Newton157.png|thumb|600px|center| Рис. 1. Общая схема]]&lt;br /&gt;
[[Файл:Iteration8383.PNG|thumb|600px|center| Рис. 2. Итерация]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17124</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17124"/>
		<updated>2016-11-14T20:26:46Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]. Вклад во все разделы равномерный.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Метод Ньютона&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;r_0/\begin{Vmatrix}r_0\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\begin{Vmatrix}\omega_m\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt; &lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Newton157.png|thumb|600px|center| Рис. 1. Общая схема]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17123</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17123"/>
		<updated>2016-11-14T20:26:08Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[Участник:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Метод Ньютона&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;r_0/\begin{Vmatrix}r_0\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\begin{Vmatrix}\omega_m\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt; &lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Newton157.png|thumb|600px|center| Рис. 1. Общая схема]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17122</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17122"/>
		<updated>2016-11-14T20:21:51Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Свойства алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[U:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Метод Ньютона&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;r_0/\begin{Vmatrix}r_0\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\begin{Vmatrix}\omega_m\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt; &lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Newton157.png|thumb|600px|center| Рис. 1. Общая схема]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17121</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=17121"/>
		<updated>2016-11-14T20:11:39Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Математическое описание алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[U:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Метод Ньютона&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная сложность на каждой итерации заключается в решении системы уравнений. Один из самых эффективных методов их решения базируется на идеях Крылова, а именно проекционных итерационных методах. &lt;br /&gt;
Они основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;r_0/\begin{Vmatrix}r_0\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\begin{Vmatrix}\omega_m\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt; &lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Newton157.png|thumb|600px|center| Рис. 1. Общая схема]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=16669</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=16669"/>
		<updated>2016-11-13T14:50:02Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Программная реализация алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[U:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Метод Ньютона&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проекционные итерационные методы основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;r_0/\begin{Vmatrix}r_0\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\begin{Vmatrix}\omega_m\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt; &lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Newton157.png|thumb|600px|center| Рис. 1. Общая схема]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=16667</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=16667"/>
		<updated>2016-11-13T14:44:57Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Схема реализации последовательного алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[U:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Метод Ньютона&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проекционные итерационные методы основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;r_0/\begin{Vmatrix}r_0\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\begin{Vmatrix}\omega_m\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
 Выбор начального приближения x_k&lt;br /&gt;
 Вычисление вектора F(x_k)&lt;br /&gt;
 WHILE (условие остановки не выполнено)&lt;br /&gt;
   Вычисление якобиана J(x_k) = F&#039;(x_k)&lt;br /&gt;
   Решение линейной системы уравнений алгоритмом GMRES J(x_k)s_k = -F(x_k)&lt;br /&gt;
   x_k = x_k + s_k&lt;br /&gt;
   Вычисление вектора F(x_k)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt; &lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Newton157.png|thumb|600px|center| Рис. 1. Общая схема]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=16663</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=16663"/>
		<updated>2016-11-13T13:44:27Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Макроструктура алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[U:Александр Чернышев|Александр Чернышев]], [[U:N Zakharov|Никита Захаров]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Метод Ньютона&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проекционные итерационные методы основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Решение задачи минимизации&amp;lt;br&amp;gt;&lt;br /&gt;
Наша цель состоит в нахождении вектора &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt;, минимизирующего задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \|, \, &amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; матрица размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
В результате применения QR-декомпозиции к матрице &amp;lt;math&amp;gt;\tilde{H}_n&amp;lt;/math&amp;gt; находим ортогональную матрицу &amp;lt;math&amp;gt;\Omega_n&amp;lt;/math&amp;gt; размера (n+1) на (n+1)&lt;br /&gt;
и верхнюю треугольную матрицу &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; размера (n+1) на n.&lt;br /&gt;
&amp;lt;br&amp;gt;При этом в матрице &amp;lt;math&amp;gt;\tilde{R}_n&amp;lt;/math&amp;gt; последняя строка будет нулевой, то есть ее можно представить в следующем виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt; \tilde{R}_n = \begin{bmatrix} R_n \\ 0 \end{bmatrix}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Перепишем нашу исходную задачу &amp;lt;math&amp;gt; \| \tilde{H}_n y_n - \beta e_1 \| = \| \Omega_n (\tilde{H}_n y_n - \beta e_1) \| = \| \tilde{R}_n y_n - \beta \Omega_n e_1 \|. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Положим &amp;lt;math&amp;gt;\beta\Omega_ne_1=\tilde{g}_n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;где &amp;lt;math&amp;gt; \tilde{g}_n = \begin{bmatrix} g_n \\ \gamma_n \end{bmatrix} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Вектор &amp;lt;math&amp;gt;y_n&amp;lt;/math&amp;gt; находится из следующего соотношения &amp;lt;math&amp;gt; y_n = R_n^{-1} g_n. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;r_0/\begin{Vmatrix}r_0\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\begin{Vmatrix}\omega_m\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Не будем подробно останавливаться на описании решения задачи оптимизации.&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, важно отметить, что расчет матриц &amp;lt;math&amp;gt;\Omega_m, R_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt; можно упростить, используя формулы перехода от m к m+1&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
.&amp;lt;br&amp;gt;&lt;br /&gt;
Модифицируя алгоритм Арнольди соответствующим образом, мы можем ощутимо снизить вычислительные затраты, необходимые нахождения QR-разложения матрицы &amp;lt;math&amp;gt;H_m&amp;lt;/math&amp;gt; и вектора &amp;lt;math&amp;gt;g_m&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате, основной интерес для нас представляет решение СЛАУ &amp;lt;math&amp;gt;R_my_m=g_m&amp;lt;/math&amp;gt;. Так как матрица &amp;lt;math&amp;gt;R_m&amp;lt;/math&amp;gt; является верхнетреугольной, то вычисление вектора &amp;lt;math&amp;gt;y_m&amp;lt;/math&amp;gt; совпадает с обратным ходом метода Гаусса.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
* Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
* Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
: Выбор начального приближения &amp;lt;math&amp;gt;x_k&amp;lt;/math&amp;gt;&lt;br /&gt;
: Вычисление вектора &amp;lt;math&amp;gt;F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
: WHILE (условие остановки не выполнено)&lt;br /&gt;
:: Вычисление якобиана &amp;lt;math&amp;gt;J(x_k) = F&#039;(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
:: Решение линейной системы уравнений алгоритмом GMRES &amp;lt;math&amp;gt;J(x_k)s_k = -F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
:: &amp;lt;math&amp;gt;x_k = x_k + s_k&amp;lt;/math&amp;gt;&lt;br /&gt;
:: Вычисление вектора &amp;lt;math&amp;gt;F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&amp;lt;br&amp;gt;&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &amp;lt;br&amp;gt;&lt;br /&gt;
Будем считать, что наша исходная матрица была порядка n.&lt;br /&gt;
Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt; и матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; размера &amp;lt;math&amp;gt;n*k&amp;lt;/math&amp;gt;. QR-факторизация матрицы &amp;lt;math&amp;gt;H_k&amp;lt;/math&amp;gt; будет стоить нам порядка &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
При решении задачи минимизации нам необходимо:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Решить СЛАУ с верхнетреугольной матрицей порядка &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; для нахождения &amp;lt;math&amp;gt;y_k&amp;lt;/math&amp;gt; - сложность &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Умножить матрицу &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; на найденный вектор - сложность &amp;lt;math&amp;gt;O(k * n)&amp;lt;/math&amp;gt; арифметических операций.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Сложить 2 вектора длины n - &amp;lt;math&amp;gt;O(n).&amp;lt;/math&amp;gt; &lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций.&amp;lt;br&amp;gt;&lt;br /&gt;
Отметим, что данная оценка справедлива при небольших &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; относительно &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Newton157.png|thumb|600px|center| Рис. 1. Общая схема]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
Основным ресурсом параллелизма в представленном алгоритме являются: умножение матрицы на вектор, скалярное произведение и элементарные операции над векторами.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=12436</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=12436"/>
		<updated>2016-10-16T09:12:17Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: Александр Чернышев, Никита Захаров&lt;br /&gt;
&lt;br /&gt;
{{Assignment}}&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Метод Ньютона&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проекционные итерационные методы основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&amp;lt;br&amp;gt;&lt;br /&gt;
В результате мы получаем матрицу &amp;lt;math&amp;gt;H^{{m+1}\times{m}}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;r_0/\begin{Vmatrix}r_0\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\begin{Vmatrix}\omega_m\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
: Выбор начального приближения &amp;lt;math&amp;gt;x_k&amp;lt;/math&amp;gt;&lt;br /&gt;
: Вычисление вектора &amp;lt;math&amp;gt;F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
: WHILE (условие остановки не выполнено)&lt;br /&gt;
:: Вычисление якобиана &amp;lt;math&amp;gt;J(x_k) = F&#039;(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
:: Решение линейной системы уравнений алгоритмом GMRES &amp;lt;math&amp;gt;J(x_k)s_k = -F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
:: &amp;lt;math&amp;gt;x_k = x_k + s_k&amp;lt;/math&amp;gt;&lt;br /&gt;
:: Вычисление вектора &amp;lt;math&amp;gt;F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &lt;br /&gt;
Вычислительная сложность GMRES алгоритма зависит от сложности метода, используемого для решения задачи минимизации. Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt;. QR-факторизация данной матрицы будет стоить нам порядка &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций. Однако, при условии, что мы будем обновлять QR-факторизацию на каждом шаге, что возможно(ссылка на википедию на тот метод), то сложность решения задачи минимизации составит даже &amp;lt;math&amp;gt;O(k)&amp;lt;/math&amp;gt;. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; &lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n) &amp;lt;/math&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Newton157.png|thumb|600px|center| Рис. 1. Общая схема]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Из существующих реализаций важно отметить пакет PETSc и его компонент SNES, позволяющий решать системы нелинейных уравнений методом Ньютона&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.mcs.anl.gov/petsc/&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=12150</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=12150"/>
		<updated>2016-10-15T21:25:09Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Информационный граф */&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(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проекционные итерационные методы основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Описание алгоритма Арнольди&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_0&amp;lt;/math&amp;gt; - произвольный входной вектор &lt;br /&gt;
&amp;lt;math&amp;gt;v_1&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;r_0/\begin{Vmatrix}r_0\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;m = 1,2,...,k &amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;\omega_m&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Av_k&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Для&#039;&#039;&#039; &amp;lt;math&amp;gt;j = 1,2, ..,m &amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;h_{jm}=(\omega_m, v_j)&amp;lt;/math&amp;gt;&lt;br /&gt;
          &amp;lt;math&amp;gt;\omega_m=\omega_m-h_{jm}v_j&amp;lt;/math&amp;gt;&lt;br /&gt;
      &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;math&amp;gt;h_{m+1,m}=\begin{Vmatrix}\omega_m\end{Vmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
      &amp;lt;math&amp;gt;v_{m+1}=\omega_m/h_{m+1,m}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &#039;&#039;&#039;Конец&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
В данном алгоритме можно выделить 2 базовых макрооперации:&lt;br /&gt;
&lt;br /&gt;
Умножение матрицы на вектор&lt;br /&gt;
&lt;br /&gt;
Скалярное произведение векторов&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
: Выбор начального приближения &amp;lt;math&amp;gt;x_k&amp;lt;/math&amp;gt;&lt;br /&gt;
: Вычисление вектора &amp;lt;math&amp;gt;F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
: WHILE (условие остановки не выполнено)&lt;br /&gt;
:: Вычисление якобиана &amp;lt;math&amp;gt;J(x_k) = F&#039;(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
:: Решение линейной системы уравнений алгоритмом GMRES &amp;lt;math&amp;gt;J(x_k)s_k = -F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
:: &amp;lt;math&amp;gt;x_k = x_k + s_k&amp;lt;/math&amp;gt;&lt;br /&gt;
:: Вычисление вектора &amp;lt;math&amp;gt;F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &lt;br /&gt;
Вычислительная сложность GMRES алгоритма зависит от сложности метода, используемого для решения задачи минимизации. Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt;. QR-факторизация данной матрицы будет стоить нам порядка &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций. Однако, при условии, что мы будем обновлять QR-факторизацию на каждом шаге, что возможно(ссылка на википедию на тот метод), то сложность решения задачи минимизации составит даже &amp;lt;math&amp;gt;O(k)&amp;lt;/math&amp;gt;. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; &lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n) &amp;lt;/math&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Newton157.png|thumb|600px|center| Рис. 1. Общая схема]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n^2 + n&amp;lt;/math&amp;gt; функций от &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; переменных&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вещественных чисел&amp;lt;br&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;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:Lineprinter&amp;diff=12106</id>
		<title>Обсуждение участника:Lineprinter</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:Lineprinter&amp;diff=12106"/>
		<updated>2016-10-15T21:08:25Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Перенос ==&lt;br /&gt;
Статья: [[Участник:Бобцов Борис/Вычисление определенного интеграла с использованием адаптивно сгущающейся сетки]]&lt;br /&gt;
Выполняет: [[Участник:Бобцов Борис| Бобцов Борис]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Кластеризация сетями Кохонена]]&lt;br /&gt;
Выполняют: [[Участник:Kravtsovkirill| Кравцов Кирилл]] и [[Участник:Emaksimov| Максимов Егор]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Нахождение собственных чисел квадратной матрицы методом QR разложения (2)]]&lt;br /&gt;
Выполняют: Баев Олег и Шевелев Александр&lt;br /&gt;
&lt;br /&gt;
Статья: [[Стабилизированный метод биспоряженных градиентов (BiCGSTAB)]]&lt;br /&gt;
Выполняют: Гаврилов Алексей и Новиков Александр&lt;br /&gt;
&lt;br /&gt;
Статья: [[Участники: Бобошко А., Юмакаева А./Решение начальной задачи Коши для системы ОДУ методом Рунге-Кутта 4-го порядка]];&lt;br /&gt;
Выполняют: Бобошко Алексей и Юмакаева Алина&lt;br /&gt;
&lt;br /&gt;
Статья: [[Алгоритм кластеризации, основанный на сетях Кохоннена]];&lt;br /&gt;
Выполняют:  Логвиненко Александра и Адиев Тохтар&lt;br /&gt;
&lt;br /&gt;
Статья: [[Ортогонализация Грама-Шмидта]];&lt;br /&gt;
Выполняют: [[Участник:KibAndrey| Кибанов Андрей]] и Аджиева Татьяна&lt;br /&gt;
&lt;br /&gt;
Статья: [[Самоорганизующиеся карты Кохонена]];&lt;br /&gt;
Выполняет: [[Участник:Anton goy| Гой Антон]]&lt;br /&gt;
&lt;br /&gt;
Статья:[[ЕМ-алгоритм_(Тематическое_моделирование)]];&lt;br /&gt;
Выполняют: Мурат Апишев и Андрей Заночкин&lt;br /&gt;
&lt;br /&gt;
Статья:[[Алгоритм_Ланцоша_с_полной_переортогонализацией]];&lt;br /&gt;
Выполняет:[[Участник:Sfedotov| Федотов С.А.]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Алгоритм_k-средних]]&lt;br /&gt;
Выполняют: [[Участник:Error2407|Богомазов Евгений]], [[Участник:Илья_Егоров|Егоров Илья]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Алгоритм k-means]]&lt;br /&gt;
Выполняют: [[Участник:Бротиковская Данута|Данута Бротиковская]] и [[Участник:DennZo1993|Денис Зобнин]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Partitioning Around Medoids (Алгоритм)]]&lt;br /&gt;
Выполняют: [[Участник:Denemmy| Галеев Данил]] и [[Участник:Ivan.Z| Запутляев Иван]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Нечеткий_алгоритм_С_средних]]&lt;br /&gt;
Выполняют: [[Участник:Demon smd|Д.А.Гуськов]], [[Участник:marina abramenkova|М.А.Абраменкова]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Решение_задачи_Коши_для_системы_ОДУ_методом_Рунге-Кутты_4_порядка]];&lt;br /&gt;
Выполняют: [[Участник:Алимов_Дамир_Алиевич|Алимов Дамир]] и [[Участник:Anlesnichiy|Антон Лесничий]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Строгий_алгоритм_С_средних_(Hard_C-Means,_HCM)]];&lt;br /&gt;
Выполняют: [[Участник:Светлана_Лукьяненко|Лукьяненко Светлана]] и [[Участник:Юрий_Комаров|Комаров Юрий]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Алгоритм кластеризации, основанный на минимальном остовном дереве]];&lt;br /&gt;
Выполняет: [[Участник:Astandrik | Стандрик Антон Сергеевич]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Умножение разреженной матрицы на вектор]];&lt;br /&gt;
Выполняет: [[Участник:Lexaloris | Новоселов Алексей]], Выполняет: [[Участник:kochet|П.А. Кочетков]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Нахождение_собственных_чисел_квадратной_матрицы_методом_QR_разложения_(3)|Нахождение собственных чисел квадратной матрицы методом QR разложения (3)]];&lt;br /&gt;
Выполняют: [[Участник:Смирнова_Александра|Смирнова А.С.]], [[Участник:Александра_Киямова|Киямова А.]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Метод_Якоби_вычисления_сингулярных_чисел_и_векторов]];&lt;br /&gt;
Выполняют: [[Участница:Почернина_Елена| Почернина Елена]] и [[Участница:Светлана|Костюкова Светлана]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Метод_Ньютона_для_решения_систем_нелинейных_уравнений(2)]];&lt;br /&gt;
Выполняют: [[Участник:Oleggium|Гирняк О.Р.]], [[Участник:Dimx19|Васильков Д.А.]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Алгоритм_кластеризации_с_использованием_представлений]];&lt;br /&gt;
Выполняют: [[Участник:Cookie|Шатков С.А.]], [[Участница:JuliaA|Антохина Ю.А.]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Быстрое_преобразование_Фурье_(FFT)|Быстрое преобразование Фурье (FFT)]];&lt;br /&gt;
Выполняют: [[Участник:Victoria_Stepanischeva|Степанищева Виктория]] и [[Участник:Igor_Munkin|Мунькин Игорь]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Быстрое_дискретное_преобразование_Фурье|Быстрое_дискретное_преобразование_Фурье]];&lt;br /&gt;
Выполняют: [[Участник:ivanov.kir.m | К.М.Иванов]], [[Участник:Pumpkin | А.C.Сапин]]&lt;br /&gt;
&lt;br /&gt;
Статья:[[Алгоритм_k_средних]]&lt;br /&gt;
Выполняют: [[Участник:Parkhomenko|Пархоменко Павел]], [[Участник:ivan.mashonskiy|Машонский Иван]]&lt;br /&gt;
&lt;br /&gt;
Статья:[[EM-алгоритм_кластеризации]]&lt;br /&gt;
Выполняет: [[Участник:Noite|Зинченко Дмитрий]]&lt;br /&gt;
&lt;br /&gt;
Статья:[[Алгоритм_k_means]]&lt;br /&gt;
Выполняют: [[Участник:IanaV| Валуйская Яна]], [[Участник:GlotovES| Глотов Евгений]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Метод Якоби вычисления собственных значений симметричной матрицы ЗП |Метод Якоби вычисления собственных значений симметричной матрицы ЗП]];&lt;br /&gt;
Выполняют: [[Участник:Зиновьев Владимир|Зиновьев В.С.]], [[Участник:Пронин Андрей|Пронин А.М.]]&lt;br /&gt;
&lt;br /&gt;
Статья:[[Алгоритм_кластеризации,_основанный_на_минимальном_покрывающем_дереве]]&lt;br /&gt;
Выполняет: [[Участник:Kanast74|Дмитриева Анастасия]]&lt;br /&gt;
&lt;br /&gt;
Статья:[[Нахождение_собственных_чисел_квадратной_матрицы_методом_QR_разложения_(4)]]&lt;br /&gt;
Выполняют: [[Участник:F-morozov|Морозов Ф. В.]], [[Участник:Nataliya|Пащенко Н. Ф.]]&lt;br /&gt;
&lt;br /&gt;
Статья:[[Хранение_ненулевых_элементов_разреженных_матриц._Умножение_разреженной_матрицы_на_вектор]];&lt;br /&gt;
Выполняют: [[Участник:Trrufina|Третьякова Р.М.]] и [[Участник:Екатерина_Буторина|Буторина Е.В.]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Алгоритм_кластеризации_с_использованием_представлений2]];&lt;br /&gt;
Выполняет: [[Участник:Лукьянова Анна|Лукьянова А.Я.]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Метод Якоби вычисления собственных значений симметричной матрицы]];&lt;br /&gt;
Выполняют: [[Участник: Galkina|Галкина А.С.]], [[Участник: Игорь|Плахов И.А.]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Метод рекурсивной координатной бисекции]];&lt;br /&gt;
Выполняют: [[Участник: Obirvalger|Гордеев Михаил]], [[Участник: KolmakovEA|Колмаков Евгений]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Итерационный метод решения системы линейных алгебраических уравнений GMRES (обобщенный метод минимальных невязок)]];&lt;br /&gt;
Выполняют: [[Участник: Эльвира Ахиярова|Ахиярова Эльвира]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Хранение ненулевых элементов разреженной матрицы. Умножение разреженной матрицы на вектор]];&lt;br /&gt;
Выполняют: [[Участник: Janyell|Сычева Евгения]], [[Участник: Ahahalin|Хахалин Анатолий]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Построение матрицы Адамара произвольного размера]];&lt;br /&gt;
Выполняют: [[Участник: Бугаков Юрий|Бугаков Юрий]], Кужамалиев Ернур&lt;br /&gt;
&lt;br /&gt;
Статья: [[Вычисление определенного интеграла с использованием адаптивно сгущающейся сетки (1)]]&lt;br /&gt;
Выполняют: [[Участница:Sannikovats| Санникова Татьяна Сергеевна]], [[Участник:Plukshin| Лукшин Петр Андреевич]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Алгоритм кластеризации, основанный на построении каркаса]];&lt;br /&gt;
Выполняют: [[Участник:SenderovichNikita| Сендерович Никита]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Алгоритм кластеризации, основанный на максимизации ожидания]];&lt;br /&gt;
Выполняют: Готман Мария, Лукашкина Юлия&lt;br /&gt;
&lt;br /&gt;
Статья: [[Partitioning_Around_Medoids_(PAM)]]&lt;br /&gt;
Выполняют: [[Участник:Avasilenko|А.Э.Василенко]], [[Участник:Anastasia|А.В.Тузикова]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Нечеткий алгоритм С-средних (Fuzzy C-means)]]&lt;br /&gt;
Выполняют: [[Участник:Nikmedoed|Н.А. Муромцев]], [[Участник:illusive_mike|М.С. Дворецкий]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Нечеткий алгоритм C средних]]&lt;br /&gt;
Выполняют: [[Участник:Gkhazeeva|Гелана Хазеева]], [[Участник:Yushin|Павел Юшин]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Плотностный алгоритм кластеризации DBSCAN]]&lt;br /&gt;
Выполняют: [[Участник:Elena777mc|Малахова Е.С.]], [[Участник:Жаннат_Сагиолданова|Сагиолданова Ж.]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Кластеризация Partitioning Around Medoids (PAM)]]&lt;br /&gt;
Выполняют:[[ Участник:Тодуа Антон| Тодуа Антон]], [[Участник:Гусева Юлия| Гусева Юлия]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Участник:Бугаков Юрий (613 группа), Кужамалиев Ернур (601 группа)/Построение матрицы Адамара произвольной размерности]]&lt;br /&gt;
Выполняют:[[ Участник:Бугаков Юрий| Бугаков Юрий]], [[Участник:Кужамалиев Ернур| Кужамалиев Ернур]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Участник:Nikita/Построение_матрицы_Адамара|Построение матрицы Адамара]]&lt;br /&gt;
Выполняют: [[Участник:Nikita|Иванов Никита]], [[Участник:Tsyganov Nikita|Цыганов Никита]]&lt;br /&gt;
&lt;br /&gt;
Статья: [[Метод Ньютона для решения систем нелинейных уравнений]]&lt;br /&gt;
Выполняют: [[Участник:Александр Чернышев|Александр Чернышев]], [[Участник:Захаров Никита|Захаров Никита]]&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=11974</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=11974"/>
		<updated>2016-10-15T20:50:37Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Информационный граф */&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(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проекционные итерационные методы основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
: Выбор начального приближения &amp;lt;math&amp;gt;x_k&amp;lt;/math&amp;gt;&lt;br /&gt;
: Вычисление вектора &amp;lt;math&amp;gt;F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
: WHILE (условие остановки не выполнено)&lt;br /&gt;
:: Вычисление якобиана &amp;lt;math&amp;gt;J(x_k) = F&#039;(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
:: Решение линейной системы уравнений &amp;lt;math&amp;gt;J(x_k)s_k = -F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
:: &amp;lt;math&amp;gt;x_k = x_k + s_k&amp;lt;/math&amp;gt;&lt;br /&gt;
:: Вычисление вектора &amp;lt;math&amp;gt;F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &lt;br /&gt;
Вычислительная сложность GMRES алгоритма зависит от сложности метода, используемого для решения задачи минимизации. Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt;. QR-факторизация данной матрицы будет стоить нам порядка &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций. Однако, при условии, что мы будем обновлять QR-факторизацию на каждом шаге, что возможно(ссылка на википедию на тот метод), то сложность решения задачи минимизации составит даже &amp;lt;math&amp;gt;O(k)&amp;lt;/math&amp;gt;. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; &lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n) &amp;lt;/math&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Newton157.png|thumb|600px|center| Рис. 1. Общая схема]]&lt;br /&gt;
[[Файл:Newton159.png|thumb|600px|center| Рис. 2. Итерация]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Объём входных данных&#039;&#039;&#039;: &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Объём выходных данных&#039;&#039;&#039;: &amp;lt;br&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;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=11642</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=11642"/>
		<updated>2016-10-15T20:05:17Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Последовательная сложность алгоритма */&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(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проекционные итерационные методы основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
: Выбор начального приближения &amp;lt;math&amp;gt;x_k&amp;lt;/math&amp;gt;&lt;br /&gt;
: Вычисление вектора &amp;lt;math&amp;gt;F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
: WHILE (условие остановки не выполнено)&lt;br /&gt;
:: Вычисление якобиана &amp;lt;math&amp;gt;J(x_k) = F&#039;(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
:: Решение линейной системы уравнений &amp;lt;math&amp;gt;J(x_k)s_k = -F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
:: &amp;lt;math&amp;gt;x_k = x_k + s_k&amp;lt;/math&amp;gt;&lt;br /&gt;
:: Вычисление вектора &amp;lt;math&amp;gt;F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &lt;br /&gt;
Вычислительная сложность GMRES алгоритма зависит от сложности метода, используемого для решения задачи минимизации. Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt;. QR-факторизация данной матрицы будет стоить нам порядка &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций. Однако, при условии, что мы будем обновлять QR-факторизацию на каждом шаге, что возможно(ссылка на википедию на тот метод), то сложность решения задачи минимизации составит даже &amp;lt;math&amp;gt;O(k)&amp;lt;/math&amp;gt;. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k*n)&amp;lt;/math&amp;gt; арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; &lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n) &amp;lt;/math&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Newton157.png|thumb|600px|center| Рис. 1. Общая схема]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Объём входных данных&#039;&#039;&#039;: &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Объём выходных данных&#039;&#039;&#039;: &amp;lt;br&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;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=11622</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=11622"/>
		<updated>2016-10-15T20:03:34Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Последовательная сложность алгоритма */&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(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проекционные итерационные методы основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
: Выбор начального приближения &amp;lt;math&amp;gt;x_k&amp;lt;/math&amp;gt;&lt;br /&gt;
: Вычисление вектора &amp;lt;math&amp;gt;F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
: WHILE (условие остановки не выполнено)&lt;br /&gt;
:: Вычисление якобиана &amp;lt;math&amp;gt;J(x_k) = F&#039;(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
:: Решение линейной системы уравнений &amp;lt;math&amp;gt;J(x_k)s_k = -F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
:: &amp;lt;math&amp;gt;x_k = x_k + s_k&amp;lt;/math&amp;gt;&lt;br /&gt;
:: Вычисление вектора &amp;lt;math&amp;gt;F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Будем оценивать сложность одной итерации метода Ньютона.&lt;br /&gt;
Для начала оценим сложность решения СЛАУ &lt;br /&gt;
Вычислительная сложность GMRES алгоритма зависит от сложности метода, используемого для решения задачи минимизации. Предположим, что мы нашли решение СЛАУ за &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; итераций. В результате выполнения алгоритма Арнольди мы получаем матрицу размера &amp;lt;math&amp;gt;(k+1)*k&amp;lt;/math&amp;gt;. QR-факторизация данной матрицы будет стоить нам порядка &amp;lt;math&amp;gt;O(k^2)&amp;lt;/math&amp;gt; арифметических операций. Однако, при условии, что мы будем обновлять QR-факторизацию на каждом шаге, что возможно(ссылка на википедию на тот метод), то сложность решения задачи минимизации составит даже &amp;lt;math&amp;gt;O(k)&amp;lt;/math&amp;gt;. Сложность алгоритма Арнольди при этом составляет &amp;lt;math&amp;gt;O(k*n)&amp;lt;/math&amp;gt;O(k*n) арифметических операций плюс сложность &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; раз умножения матрицы на вектор - &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; &lt;br /&gt;
Сложность оставшихся операций из алгоритма Ньютона (сложение векторов + подсчет нормы) составляет &amp;lt;math&amp;gt;O(2*n) &amp;lt;/math&amp;gt;&lt;br /&gt;
В результате мы получаем, что на одну итерацию метода Ньютона нужно &amp;lt;math&amp;gt;O(k*n^2)&amp;lt;/math&amp;gt; операций&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Newton157.png|thumb|600px|center| Рис. 1. Общая схема]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Объём входных данных&#039;&#039;&#039;: &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Объём выходных данных&#039;&#039;&#039;: &amp;lt;br&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;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=11582</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=11582"/>
		<updated>2016-10-15T19:55:15Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Информационный граф */&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(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проекционные итерационные методы основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
: Выбор начального приближения &amp;lt;math&amp;gt;x_k&amp;lt;/math&amp;gt;&lt;br /&gt;
: Вычисление вектора &amp;lt;math&amp;gt;F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
: WHILE (условие остановки не выполнено)&lt;br /&gt;
:: Вычисление якобиана &amp;lt;math&amp;gt;J(x_k) = F&#039;(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
:: Решение линейной системы уравнений &amp;lt;math&amp;gt;J(x_k)s_k = -F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
:: &amp;lt;math&amp;gt;x_k = x_k + s_k&amp;lt;/math&amp;gt;&lt;br /&gt;
:: Вычисление вектора &amp;lt;math&amp;gt;F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
На каждом шаге необходимо выполнить:&lt;br /&gt;
:* Вычисление Якобиана : &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
:* Решение СЛАУ методом Гаусса : &amp;lt;math&amp;gt;O(n^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
:* Вычисление нового приближения&lt;br /&gt;
:* Вычисление нового значения функции : &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Если считать, что количество итераций равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, то общая сложность алгоритма равна &amp;lt;math&amp;gt;O(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[Файл:Newton157.png|thumb|600px|center| Рис. 1. Общая схема]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Вообще говоря, метод Ньютона является последовательным методом, но на определенных шагах, таких как решение СЛАУ, приближенное вычисление Якобиана, можно применить идеи параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Объём входных данных&#039;&#039;&#039;: &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Объём выходных данных&#039;&#039;&#039;: &amp;lt;br&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;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:%D0%A1%D1%85%D0%B5%D0%BC%D0%B0_%D0%BD%D1%8C%D1%8E%D1%82%D0%BE%D0%BD1.png&amp;diff=11553</id>
		<title>Файл:Схема ньютон1.png</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:%D0%A1%D1%85%D0%B5%D0%BC%D0%B0_%D0%BD%D1%8C%D1%8E%D1%82%D0%BE%D0%BD1.png&amp;diff=11553"/>
		<updated>2016-10-15T19:50:03Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: схема1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;схема1&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=11427</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=11427"/>
		<updated>2016-10-15T19:29:02Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Ресурс параллелизма алгоритма */&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(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проекционные итерационные методы основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
: Выбор начального приближения &amp;lt;math&amp;gt;x_k&amp;lt;/math&amp;gt;&lt;br /&gt;
: Вычисление вектора &amp;lt;math&amp;gt;F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
: WHILE (условие остановки не выполнено)&lt;br /&gt;
:: Вычисление якобиана &amp;lt;math&amp;gt;J(x_k) = F&#039;(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
:: Решение линейной системы уравнений &amp;lt;math&amp;gt;J(x_k)s_k = -F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
:: &amp;lt;math&amp;gt;x_k = x_k + s_k&amp;lt;/math&amp;gt;&lt;br /&gt;
:: Вычисление вектора &amp;lt;math&amp;gt;F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
На каждом шаге необходимо выполнить:&lt;br /&gt;
:* Вычисление Якобиана : &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
:* Решение СЛАУ методом Гаусса : &amp;lt;math&amp;gt;O(n^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
:* Вычисление нового приближения&lt;br /&gt;
:* Вычисление нового значения функции : &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Если считать, что количество итераций равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, то общая сложность алгоритма равна &amp;lt;math&amp;gt;O(kn^3)&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;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Объём входных данных&#039;&#039;&#039;: &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Объём выходных данных&#039;&#039;&#039;: &amp;lt;br&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;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=11388</id>
		<title>Участник:N Zakharov/Метод Ньютона для решения систем нелинейных уравнений</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:N_Zakharov/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=11388"/>
		<updated>2016-10-15T19:22:15Z</updated>

		<summary type="html">&lt;p&gt;Александр Чернышев: /* Математическое описание алгоритма */&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(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;000&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;2n+1&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона, алгоритм Ньютона&#039;&#039;&#039;  — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить ноль первой производной либо градиента в случае многомерного пространства.&lt;br /&gt;
&lt;br /&gt;
==== Историческая справка ====&lt;br /&gt;
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат. «De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 году Барроу, и в работе «Метод флюксий и бесконечные ряды» (лат. «De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат. «Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt;, а последовательность полиномов и в результате получал приближённое решение &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений  &amp;lt;math&amp;gt;x_{n}&amp;lt;/math&amp;gt; вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.&lt;br /&gt;
&lt;br /&gt;
В 1879 году Артур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ. «The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
В этой статье мы сразу сформулируем задачу для многомерного случая и не будем останавливаться на  методе Ньютона для одномерных задач &amp;lt;ref&amp;gt;Тыртышников Е. Е. Методы численного анализа — М., Академия, 2007. - 320 c.&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;Бахвалов Н. С.,  Жидков Н. П., Кобельков. Г. М. — 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть необходимо найти решение системы: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}f_1(x_1, ..., x_n) = 0&lt;br /&gt;
\\ ...&lt;br /&gt;
\\ f_n(x_1, ..., x_n) = 0,&lt;br /&gt;
&lt;br /&gt;
\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;f = (f_1, ..., f_n) : \mathbb{R}^n \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt; - непрерывно дифференцируемое отображение в окрестности решения.&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При начальном приближении &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и сделанных предположениях &amp;lt;math&amp;gt;(k+1)&amp;lt;/math&amp;gt;-я итерация метода будет выглядеть следующим образом:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
x_{k+1} = x_k - [f&#039;(x_k)]^{-1}f(x_k)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проекционные итерационные методы основываются на тех же принципах, что и методы, которые используются для задач поиска собственных значений. На самом деле, многие методы Крылова напрямую вытекают из алгоритмов Арнольди&amp;lt;ref&amp;gt;Daniel F. Gill, NEWTON-KRYLOV METHODS FOR THE SOLUTION OF THE k-EIGENVALUE PROBLEM IN MULTIGROUP NEUTRONICS CALCULATIONS, 2009 &amp;lt;/ref&amp;gt;. Приближенное решение можно найти по формуле &amp;lt;math&amp;gt;\tilde{x} = x_0 + V_my&amp;lt;/math&amp;gt;, а после подставления условий Петрова-Гарелкина оно принимает вид &amp;lt;math&amp;gt;\tilde{x} = x_0 + V (W^TAV)^{-1}W^Tr_0&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;r_0 = b - Ax_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;V = \{v_1, v_2, ..., v_m\}&amp;lt;/math&amp;gt; - матрица, чьи столбцы являются ортонормированным базисом пространства, а матрица &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; находится из соотношения &amp;lt;math&amp;gt;W^HV = I&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V^T_mAV_m = H_m&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(y) = \left \| b-Ax \right \| = \left \| b-A(x_0+V_my) \right \| = \left \| r_0 -AV_my \right \|&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt; https://en.wikipedia.org/wiki/Generalized_minimal_residual_method#Solving_the_least_squares_problem&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
: Выбор начального приближения &amp;lt;math&amp;gt;x_k&amp;lt;/math&amp;gt;&lt;br /&gt;
: Вычисление вектора &amp;lt;math&amp;gt;F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
: WHILE (условие остановки не выполнено)&lt;br /&gt;
:: Вычисление якобиана &amp;lt;math&amp;gt;J(x_k) = F&#039;(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
:: Решение линейной системы уравнений &amp;lt;math&amp;gt;J(x_k)s_k = -F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
:: &amp;lt;math&amp;gt;x_k = x_k + s_k&amp;lt;/math&amp;gt;&lt;br /&gt;
:: Вычисление вектора &amp;lt;math&amp;gt;F(x_k)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
На каждом шаге необходимо выполнить:&lt;br /&gt;
:* Вычисление Якобиана : &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
:* Решение СЛАУ методом Гаусса : &amp;lt;math&amp;gt;O(n^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
:* Вычисление нового приближения&lt;br /&gt;
:* Вычисление нового значения функции : &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Если считать, что количество итераций равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, то общая сложность алгоритма равна &amp;lt;math&amp;gt;O(kn^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Объём входных данных&#039;&#039;&#039;: &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Объём выходных данных&#039;&#039;&#039;: &amp;lt;br&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;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Александр Чернышев</name></author>
	</entry>
</feed>