<?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=MukhayevD</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=MukhayevD"/>
	<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/MukhayevD"/>
	<updated>2026-10-23T20:03:19Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:MukhayevD/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0&amp;diff=19663</id>
		<title>Участник:MukhayevD/Метод Ньютона</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:MukhayevD/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0&amp;diff=19663"/>
		<updated>2016-11-30T16:13:54Z</updated>

		<summary type="html">&lt;p&gt;MukhayevD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{assignment}}&lt;br /&gt;
Автор: [[Участник:MukhayevD|Мухаев Д.Н.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона&#039;&#039;&#039;, &#039;&#039;&#039;алгоритм Ньютона&#039;&#039;&#039; (также известный как &#039;&#039;&#039;метод касательных&#039;&#039;&#039;) — это итерационный численный метод нахождения корня заданной функции(в связи с трудностями программирования производной для произвольной функции рассматриваются только функции в виде полинома). Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Пусть &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt; - некоторое приближение к корню уравнения &amp;lt;math&amp;gt; f(x) = 0, f \in C^1 &amp;lt;/math&amp;gt;, то следующее приближение определяется как корень касательной к функции &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;, проведенной в точке &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Уравнение касательной к функции &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt; имеет вид:&lt;br /&gt;
&amp;lt;math&amp;gt; f^&#039;(x_n) = (y - f(x_n))/(x - x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
В уравнении касательной положим &amp;lt;math&amp;gt; y = 0 &amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; x = x_{n+1} &amp;lt;/math&amp;gt;.&lt;br /&gt;
Тогда алгоритм последовательных вычислений в методе Ньютона состоит в следующем:&lt;br /&gt;
&amp;lt;math&amp;gt; x_{n+1} = x_n - f(x_n)/f^&#039;(x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
Сходимость метода касательных квадратичная, порядок сходимости равен 2.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Основная вычислительная нагрузка алгоритма заключается в нахождении &amp;lt;math&amp;gt; \varphi(x_n) = f(x_n)/f^&#039;(x_n) &amp;lt;/math&amp;gt;, которая в последствии используется для нахождения &amp;lt;math&amp;gt; x_{n+1} = x_n - \varphi(x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Как и было описано в описании ядра алгоритма, основную часть метода составляет вычисление значения функции &amp;lt;math&amp;gt; f(x_n) &amp;lt;/math&amp;gt; и ее производной &amp;lt;math&amp;gt; f^&#039;(x_n) &amp;lt;/math&amp;gt; в точке x_n.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f(x_n) = \sum_{i=0}^{n}f_ix_n^i &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^&#039;(x_n) = \sum_{i=0}^{n-1}f^&#039;_ix_n^i &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;
  1. Выбираем начальное приближение &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt;&lt;br /&gt;
  2. Находим значение функции &amp;lt;math&amp;gt; f(x_n) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt;x_n&amp;lt;/math&amp;gt;.&lt;br /&gt;
  3. Находим значение производной функции &amp;lt;math&amp;gt; f^&#039;(x_n) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt;x_n&amp;lt;/math&amp;gt;.&lt;br /&gt;
  4. Получаем следующий шаг итерации &amp;lt;math&amp;gt; x_{n+1} &amp;lt;/math&amp;gt;&amp;lt;math&amp;gt; x_{n+1} = x_n - f(x_n)/f^&#039;(x+n) &amp;lt;/math&amp;gt;&lt;br /&gt;
  5. Находим погрешность &amp;lt;math&amp;gt; e = |x_{n+1} - x_n| &amp;lt;/math&amp;gt;&lt;br /&gt;
  6. Если погрешность не превышает некоторого заранее заданного числа - останавливаемся.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; e &amp;lt; \varepsilon  &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Для вычисления корня методом Ньютона при последовательном выполнении требуется:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; сложение + &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; умножений + &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; умножений (возведение в степень)&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; сложение + &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; умножений + &amp;lt;math&amp;gt; n-2 &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;
* &amp;lt;math&amp;gt; 2n-1 &amp;lt;/math&amp;gt; сложение (вычитание)&lt;br /&gt;
* &amp;lt;math&amp;gt; 4n-3 &amp;lt;/math&amp;gt; умножений (делений)&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
На рисунке ниже изображена структура информационного графа алгоритма. Блок IN представляет собой выбор начального приближения, блок IT - итерацию алгоритма, блок OUT - концу работы алгоритма.&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP1.PNG|center|frame|Рисунок 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
Как видно, алгоритм строго последовательный.&lt;br /&gt;
Ниже подробнее рассмотрено как можно разделить нагрузку связанную с вычислениями &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; между процессорами. Каждое слагаемое полинома считается отдельно.&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP2.PNG|center|frame|Рисунок 2. Итерация]]&lt;br /&gt;
&lt;br /&gt;
Аналогично для &amp;lt;math&amp;gt; f^&#039;(x) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Несмотря на то, что сам по себе алгоритм является строго последовательным, его можно ускорить за счет распараллеливания нахождения функции и ее производной на текущей итерации, так как это было описано в предыдущем пункте.&lt;br /&gt;
&lt;br /&gt;
Пусть имеем &amp;lt;math&amp;gt; p &amp;lt;/math&amp;gt; процессоров, в таком случае каждому процессору нужно будет произвести &amp;lt;math&amp;gt; (4n-3)/p &amp;lt;/math&amp;gt; умножений.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
&lt;br /&gt;
   1. Функция в виде полинома.&lt;br /&gt;
   2. Область, в которой ищется корень &amp;lt;math&amp;gt; (a;b) &amp;lt;/math&amp;gt;.&lt;br /&gt;
   3. Начальное приближение &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt;.&lt;br /&gt;
   4. Точность, с которой требуется найти решение.&lt;br /&gt;
&lt;br /&gt;
На выход алгоритмом выдается число - предположительный корень найденный с заданной точностью.&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
===2.4 Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
Так как сам по себе метод является последовательным то, следовательно о его масштабируемости не может быть и речи.&lt;br /&gt;
&lt;br /&gt;
Поверка масштабируемости реализации метода проводилась на следующих тестах:&lt;br /&gt;
&lt;br /&gt;
* 1) &amp;lt;math&amp;gt; (x-1)g(x) &amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt; g(x) &amp;lt;/math&amp;gt; - произвольный полином степени &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP4.png|center|frame|Рисунок 1.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 2) &amp;lt;math&amp;gt; 1 + 2x + 2x^2 + ... + 2x^{n-1} + x^n &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP3.png|center|frame|Рисунок 2.]]&lt;br /&gt;
&lt;br /&gt;
Как видно из рисунков вне зависимости от размерности задачи не удалось добиться времени больше &amp;lt;math&amp;gt; 0.1 &amp;lt;/math&amp;gt; секунды, в виду этого можно предположить, что время зависит от физического расположения процессоров, но тем не менее есть общая тенденция, что время работы возрастает вместе с размерностью и количеством процессоров.&lt;br /&gt;
&lt;br /&gt;
=== 2.7 Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
1. Последовательные реализации&lt;br /&gt;
&lt;br /&gt;
**ALIAS C++. Язык реализации - C++. Распространяется бесплатно, исходные коды и примеры использования можно скачать на сайте&amp;lt;ref name=&amp;quot;ALIAS&amp;quot;&amp;gt;https://www-sop.inria.fr/coprin/logiciels/ALIAS/ALIAS-C++/ALIAS-C++.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
**Numerical Recipes. Язык реализации - C++. Исходный код можно найти в секции 9.7 книги Numerical recipes(third edition)&amp;lt;ref name=&amp;quot;RECIPES&amp;quot;&amp;gt;http://numerical.recipes&amp;lt;/ref&amp;gt;. Бесплатно доступны&amp;lt;ref name=&amp;quot;RECIPES_old&amp;quot;&amp;gt;http://numerical.recipes/oldverswitcher.html&amp;lt;/ref&amp;gt; предыдущие издания для языков C, Fortran77, Fortran90.&lt;br /&gt;
**Sundials. Язык реализации - C, также есть интерфейс для использования в Fortran-программах. Распространяется&amp;lt;ref name=&amp;quot;SUNDIALS_seq&amp;quot;&amp;gt;http://computation.llnl.gov/projects/sundials/kinsol&amp;lt;/ref&amp;gt; по лицензии BSD. &lt;br /&gt;
&lt;br /&gt;
2. Параллельные реализации &lt;br /&gt;
**Построение параллельной реализации метода Ньютона для решения задач линейного программирования описано в работе В.А. Гаранжа, А.И. Голикова, Ю.Г. Евтушенко, М.Х. Нгуена &amp;quot;Параллельная реализации метода Ньютона для решения больших задач линейного программирования&amp;quot; &amp;lt;ref name=&amp;quot;CCAS&amp;quot;&amp;gt;http://www.ccas.ru/personal/evtush/p/paper1.pdf&amp;lt;/ref&amp;gt;.&lt;br /&gt;
**Построение параллельной реализации метода Ньютона для решения задач оптимизации, описываются в работе V. A. Garanzha, A. I. Golikov, Yu. G. Evtushenko, and M. Kh. Nguen &amp;quot;Parallel Implementation of Newton’s Method for Solving Large-Scale Linear Programs&amp;quot; &amp;lt;ref name=&amp;quot;IMPL_OPT&amp;quot;&amp;gt;http://www.ccas.ru/personal/evtush/p/CMMP1303.pdf&amp;lt;/ref&amp;gt;.&lt;br /&gt;
**Построение параллельной реализации метода Ньютона, а также результаты некоторых экспериментов, описываются в работе Renato N. Elias Alvaro L. G. A. Coutinho Marcos A. D. Martins Rubens M. Sydenstricker  &amp;quot;PARALLEL INEXACT NEWTON-TYPE METHODS FOR THE SUPG/PSPG SOLUTION OF STEADY INCOMPRESSIBLE 3D NAVIER-STOKES EQUATIONS IN PC CLUSTERS&amp;quot; &amp;lt;ref name=&amp;quot;SUPG&amp;quot;&amp;gt;http://www.nacad.ufrj.br/~rnelias/papers/CIL14-020.pdf&amp;lt;/ref&amp;gt;.&lt;br /&gt;
**Описание использования и результатов экспериментов с параллельной реализацией метода Ньютона в задаче фильтрации вязкой сжимаемой многофазной многокомпонентной смеси в пористой среде описано в работе К.Ю.Богачева &amp;quot;Эффективное решение задачи фильтрации вязкой сжимаемой многофазной многокомпонентной смеси на параллельных ЭВМ&amp;quot;&amp;lt;ref name=&amp;quot;BOGACHEV&amp;quot;&amp;gt;http://academy.hpc-russia.ru/files/reservoirdynamics_bogachev.pdf&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>MukhayevD</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:MukhayevD/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0&amp;diff=19161</id>
		<title>Участник:MukhayevD/Метод Ньютона</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:MukhayevD/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0&amp;diff=19161"/>
		<updated>2016-11-25T16:38:13Z</updated>

		<summary type="html">&lt;p&gt;MukhayevD: /* Существующие реализации алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Автор: [[Участник:MukhayevD|Мухаев Д.Н.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона&#039;&#039;&#039;, &#039;&#039;&#039;алгоритм Ньютона&#039;&#039;&#039; (также известный как &#039;&#039;&#039;метод касательных&#039;&#039;&#039;) — это итерационный численный метод нахождения корня заданной функции(в связи с трудностями программирования производной для произвольной функции рассматриваются только функции в виде полинома). Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Пусть &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt; - некоторое приближение к корню уравнения &amp;lt;math&amp;gt; f(x) = 0, f \in C^1 &amp;lt;/math&amp;gt;, то следующее приближение определяется как корень касательной к функции &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;, проведенной в точке &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Уравнение касательной к функции &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt; имеет вид:&lt;br /&gt;
&amp;lt;math&amp;gt; f^&#039;(x_n) = (y - f(x_n))/(x - x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
В уравнении касательной положим &amp;lt;math&amp;gt; y = 0 &amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; x = x_{n+1} &amp;lt;/math&amp;gt;.&lt;br /&gt;
Тогда алгоритм последовательных вычислений в методе Ньютона состоит в следующем:&lt;br /&gt;
&amp;lt;math&amp;gt; x_{n+1} = x_n - f(x_n)/f^&#039;(x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
Сходимость метода касательных квадратичная, порядок сходимости равен 2.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Основная вычислительная нагрузка алгоритма заключается в нахождении &amp;lt;math&amp;gt; \varphi(x_n) = f(x_n)/f^&#039;(x_n) &amp;lt;/math&amp;gt;, которая в последствии используется для нахождения &amp;lt;math&amp;gt; x_{n+1} = x_n - \varphi(x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Как и было описано в описании ядра алгоритма, основную часть метода составляет вычисление значения функции &amp;lt;math&amp;gt; f(x_n) &amp;lt;/math&amp;gt; и ее производной &amp;lt;math&amp;gt; f^&#039;(x_n) &amp;lt;/math&amp;gt; в точке x_n.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f(x_n) = \sum_{i=0}^{n}f_ix_n^i &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^&#039;(x_n) = \sum_{i=0}^{n-1}f^&#039;_ix_n^i &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;
  1. Выбираем начальное приближение &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt;&lt;br /&gt;
  2. Находим значение функции &amp;lt;math&amp;gt; f(x_n) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt;x_n&amp;lt;/math&amp;gt;.&lt;br /&gt;
  3. Находим значение производной функции &amp;lt;math&amp;gt; f^&#039;(x_n) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt;x_n&amp;lt;/math&amp;gt;.&lt;br /&gt;
  4. Получаем следующий шаг итерации &amp;lt;math&amp;gt; x_{n+1} &amp;lt;/math&amp;gt;&amp;lt;math&amp;gt; x_{n+1} = x_n - f(x_n)/f^&#039;(x+n) &amp;lt;/math&amp;gt;&lt;br /&gt;
  5. Находим погрешность &amp;lt;math&amp;gt; e = |x_{n+1} - x_n| &amp;lt;/math&amp;gt;&lt;br /&gt;
  6. Если погрешность не превышает некоторого заранее заданного числа - останавливаемся.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; e &amp;lt; \varepsilon  &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Для вычисления корня методом Ньютона при последовательном выполнении требуется:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; сложение + &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; умножений + &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; умножений (возведение в степень)&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; сложение + &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; умножений + &amp;lt;math&amp;gt; n-2 &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;
* &amp;lt;math&amp;gt; 2n-1 &amp;lt;/math&amp;gt; сложение (вычитание)&lt;br /&gt;
* &amp;lt;math&amp;gt; 4n-3 &amp;lt;/math&amp;gt; умножений (делений)&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
На рисунке ниже изображена структура информационного графа алгоритма. Блок IN представляет собой выбор начального приближения, блок IT - итерацию алгоритма, блок OUT - концу работы алгоритма.&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP1.PNG|center|frame|Рисунок 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
Как видно, алгоритм строго последовательный.&lt;br /&gt;
Ниже подробнее рассмотрено как можно разделить нагрузку связанную с вычислениями &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; между процессорами. Каждое слагаемое полинома считается отдельно.&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP2.PNG|center|frame|Рисунок 2. Итерация]]&lt;br /&gt;
&lt;br /&gt;
Аналогично для &amp;lt;math&amp;gt; f^&#039;(x) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Несмотря на то, что сам по себе алгоритм является строго последовательным, его можно ускорить за счет распараллеливания нахождения функции и ее производной на текущей итерации, так как это было описано в предыдущем пункте.&lt;br /&gt;
&lt;br /&gt;
Пусть имеем &amp;lt;math&amp;gt; p &amp;lt;/math&amp;gt; процессоров, в таком случае каждому процессору нужно будет произвести &amp;lt;math&amp;gt; (4n-3)/p &amp;lt;/math&amp;gt; умножений.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
&lt;br /&gt;
   1. Функция в виде полинома.&lt;br /&gt;
   2. Область, в которой ищется корень &amp;lt;math&amp;gt; (a;b) &amp;lt;/math&amp;gt;.&lt;br /&gt;
   3. Начальное приближение &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt;.&lt;br /&gt;
   4. Точность, с которой требуется найти решение.&lt;br /&gt;
&lt;br /&gt;
На выход алгоритмом выдается число - предположительный корень найденный с заданной точностью.&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
===2.4 Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
Так как сам по себе метод является последовательным то, следовательно о его масштабируемости не может быть и речи.&lt;br /&gt;
&lt;br /&gt;
Поверка масштабируемости реализации метода проводилась на следующих тестах:&lt;br /&gt;
&lt;br /&gt;
* 1) &amp;lt;math&amp;gt; (x-1)g(x) &amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt; g(x) &amp;lt;/math&amp;gt; - произвольный полином степени &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP4.png|center|frame|Рисунок 1.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 2) &amp;lt;math&amp;gt; 1 + 2x + 2x^2 + ... + 2x^{n-1} + x^n &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP3.png|center|frame|Рисунок 2.]]&lt;br /&gt;
&lt;br /&gt;
Как видно из рисунков вне зависимости от размерности задачи не удалось добиться времени больше &amp;lt;math&amp;gt; 0.1 &amp;lt;/math&amp;gt; секунды, в виду этого можно предположить, что время зависит от физического расположения процессоров, но тем не менее есть общая тенденция, что время работы возрастает вместе с размерностью и количеством процессоров.&lt;br /&gt;
&lt;br /&gt;
=== 2.7 Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
1. Последовательные реализации&lt;br /&gt;
&lt;br /&gt;
**ALIAS C++. Язык реализации - C++. Распространяется бесплатно, исходные коды и примеры использования можно скачать на сайте&amp;lt;ref name=&amp;quot;ALIAS&amp;quot;&amp;gt;https://www-sop.inria.fr/coprin/logiciels/ALIAS/ALIAS-C++/ALIAS-C++.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
**Numerical Recipes. Язык реализации - C++. Исходный код можно найти в секции 9.7 книги Numerical recipes(third edition)&amp;lt;ref name=&amp;quot;RECIPES&amp;quot;&amp;gt;http://numerical.recipes&amp;lt;/ref&amp;gt;. Бесплатно доступны&amp;lt;ref name=&amp;quot;RECIPES_old&amp;quot;&amp;gt;http://numerical.recipes/oldverswitcher.html&amp;lt;/ref&amp;gt; предыдущие издания для языков C, Fortran77, Fortran90.&lt;br /&gt;
**Sundials. Язык реализации - C, также есть интерфейс для использования в Fortran-программах. Распространяется&amp;lt;ref name=&amp;quot;SUNDIALS_seq&amp;quot;&amp;gt;http://computation.llnl.gov/projects/sundials/kinsol&amp;lt;/ref&amp;gt; по лицензии BSD. &lt;br /&gt;
&lt;br /&gt;
2. Параллельные реализации &lt;br /&gt;
**Построение параллельной реализации метода Ньютона для решения задач линейного программирования описано в работе В.А. Гаранжа, А.И. Голикова, Ю.Г. Евтушенко, М.Х. Нгуена &amp;quot;Параллельная реализации метода Ньютона для решения больших задач линейного программирования&amp;quot; &amp;lt;ref name=&amp;quot;CCAS&amp;quot;&amp;gt;http://www.ccas.ru/personal/evtush/p/paper1.pdf&amp;lt;/ref&amp;gt;.&lt;br /&gt;
**Построение параллельной реализации метода Ньютона для решения задач оптимизации, описываются в работе V. A. Garanzha, A. I. Golikov, Yu. G. Evtushenko, and M. Kh. Nguen &amp;quot;Parallel Implementation of Newton’s Method for Solving Large-Scale Linear Programs&amp;quot; &amp;lt;ref name=&amp;quot;IMPL_OPT&amp;quot;&amp;gt;http://www.ccas.ru/personal/evtush/p/CMMP1303.pdf&amp;lt;/ref&amp;gt;.&lt;br /&gt;
**Построение параллельной реализации метода Ньютона, а также результаты некоторых экспериментов, описываются в работе Renato N. Elias Alvaro L. G. A. Coutinho Marcos A. D. Martins Rubens M. Sydenstricker  &amp;quot;PARALLEL INEXACT NEWTON-TYPE METHODS FOR THE SUPG/PSPG SOLUTION OF STEADY INCOMPRESSIBLE 3D NAVIER-STOKES EQUATIONS IN PC CLUSTERS&amp;quot; &amp;lt;ref name=&amp;quot;SUPG&amp;quot;&amp;gt;http://www.nacad.ufrj.br/~rnelias/papers/CIL14-020.pdf&amp;lt;/ref&amp;gt;.&lt;br /&gt;
**Описание использования и результатов экспериментов с параллельной реализацией метода Ньютона в задаче фильтрации вязкой сжимаемой многофазной многокомпонентной смеси в пористой среде описано в работе К.Ю.Богачева &amp;quot;Эффективное решение задачи фильтрации вязкой сжимаемой многофазной многокомпонентной смеси на параллельных ЭВМ&amp;quot;&amp;lt;ref name=&amp;quot;BOGACHEV&amp;quot;&amp;gt;http://academy.hpc-russia.ru/files/reservoirdynamics_bogachev.pdf&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>MukhayevD</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:MukhayevD/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0&amp;diff=19160</id>
		<title>Участник:MukhayevD/Метод Ньютона</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:MukhayevD/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0&amp;diff=19160"/>
		<updated>2016-11-25T16:37:54Z</updated>

		<summary type="html">&lt;p&gt;MukhayevD: /* Масштабируемость алгоритма и его реализации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Автор: [[Участник:MukhayevD|Мухаев Д.Н.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона&#039;&#039;&#039;, &#039;&#039;&#039;алгоритм Ньютона&#039;&#039;&#039; (также известный как &#039;&#039;&#039;метод касательных&#039;&#039;&#039;) — это итерационный численный метод нахождения корня заданной функции(в связи с трудностями программирования производной для произвольной функции рассматриваются только функции в виде полинома). Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Пусть &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt; - некоторое приближение к корню уравнения &amp;lt;math&amp;gt; f(x) = 0, f \in C^1 &amp;lt;/math&amp;gt;, то следующее приближение определяется как корень касательной к функции &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;, проведенной в точке &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Уравнение касательной к функции &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt; имеет вид:&lt;br /&gt;
&amp;lt;math&amp;gt; f^&#039;(x_n) = (y - f(x_n))/(x - x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
В уравнении касательной положим &amp;lt;math&amp;gt; y = 0 &amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; x = x_{n+1} &amp;lt;/math&amp;gt;.&lt;br /&gt;
Тогда алгоритм последовательных вычислений в методе Ньютона состоит в следующем:&lt;br /&gt;
&amp;lt;math&amp;gt; x_{n+1} = x_n - f(x_n)/f^&#039;(x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
Сходимость метода касательных квадратичная, порядок сходимости равен 2.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Основная вычислительная нагрузка алгоритма заключается в нахождении &amp;lt;math&amp;gt; \varphi(x_n) = f(x_n)/f^&#039;(x_n) &amp;lt;/math&amp;gt;, которая в последствии используется для нахождения &amp;lt;math&amp;gt; x_{n+1} = x_n - \varphi(x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Как и было описано в описании ядра алгоритма, основную часть метода составляет вычисление значения функции &amp;lt;math&amp;gt; f(x_n) &amp;lt;/math&amp;gt; и ее производной &amp;lt;math&amp;gt; f^&#039;(x_n) &amp;lt;/math&amp;gt; в точке x_n.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f(x_n) = \sum_{i=0}^{n}f_ix_n^i &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^&#039;(x_n) = \sum_{i=0}^{n-1}f^&#039;_ix_n^i &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;
  1. Выбираем начальное приближение &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt;&lt;br /&gt;
  2. Находим значение функции &amp;lt;math&amp;gt; f(x_n) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt;x_n&amp;lt;/math&amp;gt;.&lt;br /&gt;
  3. Находим значение производной функции &amp;lt;math&amp;gt; f^&#039;(x_n) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt;x_n&amp;lt;/math&amp;gt;.&lt;br /&gt;
  4. Получаем следующий шаг итерации &amp;lt;math&amp;gt; x_{n+1} &amp;lt;/math&amp;gt;&amp;lt;math&amp;gt; x_{n+1} = x_n - f(x_n)/f^&#039;(x+n) &amp;lt;/math&amp;gt;&lt;br /&gt;
  5. Находим погрешность &amp;lt;math&amp;gt; e = |x_{n+1} - x_n| &amp;lt;/math&amp;gt;&lt;br /&gt;
  6. Если погрешность не превышает некоторого заранее заданного числа - останавливаемся.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; e &amp;lt; \varepsilon  &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Для вычисления корня методом Ньютона при последовательном выполнении требуется:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; сложение + &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; умножений + &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; умножений (возведение в степень)&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; сложение + &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; умножений + &amp;lt;math&amp;gt; n-2 &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;
* &amp;lt;math&amp;gt; 2n-1 &amp;lt;/math&amp;gt; сложение (вычитание)&lt;br /&gt;
* &amp;lt;math&amp;gt; 4n-3 &amp;lt;/math&amp;gt; умножений (делений)&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
На рисунке ниже изображена структура информационного графа алгоритма. Блок IN представляет собой выбор начального приближения, блок IT - итерацию алгоритма, блок OUT - концу работы алгоритма.&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP1.PNG|center|frame|Рисунок 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
Как видно, алгоритм строго последовательный.&lt;br /&gt;
Ниже подробнее рассмотрено как можно разделить нагрузку связанную с вычислениями &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; между процессорами. Каждое слагаемое полинома считается отдельно.&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP2.PNG|center|frame|Рисунок 2. Итерация]]&lt;br /&gt;
&lt;br /&gt;
Аналогично для &amp;lt;math&amp;gt; f^&#039;(x) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Несмотря на то, что сам по себе алгоритм является строго последовательным, его можно ускорить за счет распараллеливания нахождения функции и ее производной на текущей итерации, так как это было описано в предыдущем пункте.&lt;br /&gt;
&lt;br /&gt;
Пусть имеем &amp;lt;math&amp;gt; p &amp;lt;/math&amp;gt; процессоров, в таком случае каждому процессору нужно будет произвести &amp;lt;math&amp;gt; (4n-3)/p &amp;lt;/math&amp;gt; умножений.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
&lt;br /&gt;
   1. Функция в виде полинома.&lt;br /&gt;
   2. Область, в которой ищется корень &amp;lt;math&amp;gt; (a;b) &amp;lt;/math&amp;gt;.&lt;br /&gt;
   3. Начальное приближение &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt;.&lt;br /&gt;
   4. Точность, с которой требуется найти решение.&lt;br /&gt;
&lt;br /&gt;
На выход алгоритмом выдается число - предположительный корень найденный с заданной точностью.&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
===2.4 Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
Так как сам по себе метод является последовательным то, следовательно о его масштабируемости не может быть и речи.&lt;br /&gt;
&lt;br /&gt;
Поверка масштабируемости реализации метода проводилась на следующих тестах:&lt;br /&gt;
&lt;br /&gt;
* 1) &amp;lt;math&amp;gt; (x-1)g(x) &amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt; g(x) &amp;lt;/math&amp;gt; - произвольный полином степени &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP4.png|center|frame|Рисунок 1.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 2) &amp;lt;math&amp;gt; 1 + 2x + 2x^2 + ... + 2x^{n-1} + x^n &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP3.png|center|frame|Рисунок 2.]]&lt;br /&gt;
&lt;br /&gt;
Как видно из рисунков вне зависимости от размерности задачи не удалось добиться времени больше &amp;lt;math&amp;gt; 0.1 &amp;lt;/math&amp;gt; секунды, в виду этого можно предположить, что время зависит от физического расположения процессоров, но тем не менее есть общая тенденция, что время работы возрастает вместе с размерностью и количеством процессоров.&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
1. Последовательные реализации&lt;br /&gt;
&lt;br /&gt;
**ALIAS C++. Язык реализации - C++. Распространяется бесплатно, исходные коды и примеры использования можно скачать на сайте&amp;lt;ref name=&amp;quot;ALIAS&amp;quot;&amp;gt;https://www-sop.inria.fr/coprin/logiciels/ALIAS/ALIAS-C++/ALIAS-C++.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
**Numerical Recipes. Язык реализации - C++. Исходный код можно найти в секции 9.7 книги Numerical recipes(third edition)&amp;lt;ref name=&amp;quot;RECIPES&amp;quot;&amp;gt;http://numerical.recipes&amp;lt;/ref&amp;gt;. Бесплатно доступны&amp;lt;ref name=&amp;quot;RECIPES_old&amp;quot;&amp;gt;http://numerical.recipes/oldverswitcher.html&amp;lt;/ref&amp;gt; предыдущие издания для языков C, Fortran77, Fortran90.&lt;br /&gt;
**Sundials. Язык реализации - C, также есть интерфейс для использования в Fortran-программах. Распространяется&amp;lt;ref name=&amp;quot;SUNDIALS_seq&amp;quot;&amp;gt;http://computation.llnl.gov/projects/sundials/kinsol&amp;lt;/ref&amp;gt; по лицензии BSD. &lt;br /&gt;
&lt;br /&gt;
2. Параллельные реализации &lt;br /&gt;
**Построение параллельной реализации метода Ньютона для решения задач линейного программирования описано в работе В.А. Гаранжа, А.И. Голикова, Ю.Г. Евтушенко, М.Х. Нгуена &amp;quot;Параллельная реализации метода Ньютона для решения больших задач линейного программирования&amp;quot; &amp;lt;ref name=&amp;quot;CCAS&amp;quot;&amp;gt;http://www.ccas.ru/personal/evtush/p/paper1.pdf&amp;lt;/ref&amp;gt;.&lt;br /&gt;
**Построение параллельной реализации метода Ньютона для решения задач оптимизации, описываются в работе V. A. Garanzha, A. I. Golikov, Yu. G. Evtushenko, and M. Kh. Nguen &amp;quot;Parallel Implementation of Newton’s Method for Solving Large-Scale Linear Programs&amp;quot; &amp;lt;ref name=&amp;quot;IMPL_OPT&amp;quot;&amp;gt;http://www.ccas.ru/personal/evtush/p/CMMP1303.pdf&amp;lt;/ref&amp;gt;.&lt;br /&gt;
**Построение параллельной реализации метода Ньютона, а также результаты некоторых экспериментов, описываются в работе Renato N. Elias Alvaro L. G. A. Coutinho Marcos A. D. Martins Rubens M. Sydenstricker  &amp;quot;PARALLEL INEXACT NEWTON-TYPE METHODS FOR THE SUPG/PSPG SOLUTION OF STEADY INCOMPRESSIBLE 3D NAVIER-STOKES EQUATIONS IN PC CLUSTERS&amp;quot; &amp;lt;ref name=&amp;quot;SUPG&amp;quot;&amp;gt;http://www.nacad.ufrj.br/~rnelias/papers/CIL14-020.pdf&amp;lt;/ref&amp;gt;.&lt;br /&gt;
**Описание использования и результатов экспериментов с параллельной реализацией метода Ньютона в задаче фильтрации вязкой сжимаемой многофазной многокомпонентной смеси в пористой среде описано в работе К.Ю.Богачева &amp;quot;Эффективное решение задачи фильтрации вязкой сжимаемой многофазной многокомпонентной смеси на параллельных ЭВМ&amp;quot;&amp;lt;ref name=&amp;quot;BOGACHEV&amp;quot;&amp;gt;http://academy.hpc-russia.ru/files/reservoirdynamics_bogachev.pdf&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>MukhayevD</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:MukhayevD/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0&amp;diff=19159</id>
		<title>Участник:MukhayevD/Метод Ньютона</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:MukhayevD/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0&amp;diff=19159"/>
		<updated>2016-11-25T16:35:58Z</updated>

		<summary type="html">&lt;p&gt;MukhayevD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Автор: [[Участник:MukhayevD|Мухаев Д.Н.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона&#039;&#039;&#039;, &#039;&#039;&#039;алгоритм Ньютона&#039;&#039;&#039; (также известный как &#039;&#039;&#039;метод касательных&#039;&#039;&#039;) — это итерационный численный метод нахождения корня заданной функции(в связи с трудностями программирования производной для произвольной функции рассматриваются только функции в виде полинома). Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Пусть &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt; - некоторое приближение к корню уравнения &amp;lt;math&amp;gt; f(x) = 0, f \in C^1 &amp;lt;/math&amp;gt;, то следующее приближение определяется как корень касательной к функции &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;, проведенной в точке &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Уравнение касательной к функции &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt; имеет вид:&lt;br /&gt;
&amp;lt;math&amp;gt; f^&#039;(x_n) = (y - f(x_n))/(x - x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
В уравнении касательной положим &amp;lt;math&amp;gt; y = 0 &amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; x = x_{n+1} &amp;lt;/math&amp;gt;.&lt;br /&gt;
Тогда алгоритм последовательных вычислений в методе Ньютона состоит в следующем:&lt;br /&gt;
&amp;lt;math&amp;gt; x_{n+1} = x_n - f(x_n)/f^&#039;(x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
Сходимость метода касательных квадратичная, порядок сходимости равен 2.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Основная вычислительная нагрузка алгоритма заключается в нахождении &amp;lt;math&amp;gt; \varphi(x_n) = f(x_n)/f^&#039;(x_n) &amp;lt;/math&amp;gt;, которая в последствии используется для нахождения &amp;lt;math&amp;gt; x_{n+1} = x_n - \varphi(x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Как и было описано в описании ядра алгоритма, основную часть метода составляет вычисление значения функции &amp;lt;math&amp;gt; f(x_n) &amp;lt;/math&amp;gt; и ее производной &amp;lt;math&amp;gt; f^&#039;(x_n) &amp;lt;/math&amp;gt; в точке x_n.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f(x_n) = \sum_{i=0}^{n}f_ix_n^i &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^&#039;(x_n) = \sum_{i=0}^{n-1}f^&#039;_ix_n^i &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;
  1. Выбираем начальное приближение &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt;&lt;br /&gt;
  2. Находим значение функции &amp;lt;math&amp;gt; f(x_n) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt;x_n&amp;lt;/math&amp;gt;.&lt;br /&gt;
  3. Находим значение производной функции &amp;lt;math&amp;gt; f^&#039;(x_n) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt;x_n&amp;lt;/math&amp;gt;.&lt;br /&gt;
  4. Получаем следующий шаг итерации &amp;lt;math&amp;gt; x_{n+1} &amp;lt;/math&amp;gt;&amp;lt;math&amp;gt; x_{n+1} = x_n - f(x_n)/f^&#039;(x+n) &amp;lt;/math&amp;gt;&lt;br /&gt;
  5. Находим погрешность &amp;lt;math&amp;gt; e = |x_{n+1} - x_n| &amp;lt;/math&amp;gt;&lt;br /&gt;
  6. Если погрешность не превышает некоторого заранее заданного числа - останавливаемся.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; e &amp;lt; \varepsilon  &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Для вычисления корня методом Ньютона при последовательном выполнении требуется:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; сложение + &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; умножений + &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; умножений (возведение в степень)&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; сложение + &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; умножений + &amp;lt;math&amp;gt; n-2 &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;
* &amp;lt;math&amp;gt; 2n-1 &amp;lt;/math&amp;gt; сложение (вычитание)&lt;br /&gt;
* &amp;lt;math&amp;gt; 4n-3 &amp;lt;/math&amp;gt; умножений (делений)&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
На рисунке ниже изображена структура информационного графа алгоритма. Блок IN представляет собой выбор начального приближения, блок IT - итерацию алгоритма, блок OUT - концу работы алгоритма.&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP1.PNG|center|frame|Рисунок 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
Как видно, алгоритм строго последовательный.&lt;br /&gt;
Ниже подробнее рассмотрено как можно разделить нагрузку связанную с вычислениями &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; между процессорами. Каждое слагаемое полинома считается отдельно.&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP2.PNG|center|frame|Рисунок 2. Итерация]]&lt;br /&gt;
&lt;br /&gt;
Аналогично для &amp;lt;math&amp;gt; f^&#039;(x) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Несмотря на то, что сам по себе алгоритм является строго последовательным, его можно ускорить за счет распараллеливания нахождения функции и ее производной на текущей итерации, так как это было описано в предыдущем пункте.&lt;br /&gt;
&lt;br /&gt;
Пусть имеем &amp;lt;math&amp;gt; p &amp;lt;/math&amp;gt; процессоров, в таком случае каждому процессору нужно будет произвести &amp;lt;math&amp;gt; (4n-3)/p &amp;lt;/math&amp;gt; умножений.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
&lt;br /&gt;
   1. Функция в виде полинома.&lt;br /&gt;
   2. Область, в которой ищется корень &amp;lt;math&amp;gt; (a;b) &amp;lt;/math&amp;gt;.&lt;br /&gt;
   3. Начальное приближение &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;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;
Так как сам по себе метод является последовательным то, следовательно о его масштабируемости не может быть и речи.&lt;br /&gt;
&lt;br /&gt;
Поверка масштабируемости реализации метода проводилась на следующих тестах:&lt;br /&gt;
&lt;br /&gt;
* 1) &amp;lt;math&amp;gt; (x-1)g(x) &amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt; g(x) &amp;lt;/math&amp;gt; - произвольный полином степени &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP4.png|center|frame|Рисунок 1.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 2) &amp;lt;math&amp;gt; 1 + 2x + 2x^2 + ... + 2x^{n-1} + x^n &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP3.png|center|frame|Рисунок 2.]]&lt;br /&gt;
&lt;br /&gt;
Как видно из рисунков вне зависимости от размерности задачи не удалось добиться времени больше &amp;lt;math&amp;gt; 0.1 &amp;lt;/math&amp;gt; секунды, в виду этого можно предположить, что время зависит от физического расположения процессоров, но тем не менее есть общая тенденция, что время работы возрастает вместе с размерностью и количеством процессоров.&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
1. Последовательные реализации&lt;br /&gt;
&lt;br /&gt;
**ALIAS C++. Язык реализации - C++. Распространяется бесплатно, исходные коды и примеры использования можно скачать на сайте&amp;lt;ref name=&amp;quot;ALIAS&amp;quot;&amp;gt;https://www-sop.inria.fr/coprin/logiciels/ALIAS/ALIAS-C++/ALIAS-C++.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
**Numerical Recipes. Язык реализации - C++. Исходный код можно найти в секции 9.7 книги Numerical recipes(third edition)&amp;lt;ref name=&amp;quot;RECIPES&amp;quot;&amp;gt;http://numerical.recipes&amp;lt;/ref&amp;gt;. Бесплатно доступны&amp;lt;ref name=&amp;quot;RECIPES_old&amp;quot;&amp;gt;http://numerical.recipes/oldverswitcher.html&amp;lt;/ref&amp;gt; предыдущие издания для языков C, Fortran77, Fortran90.&lt;br /&gt;
**Sundials. Язык реализации - C, также есть интерфейс для использования в Fortran-программах. Распространяется&amp;lt;ref name=&amp;quot;SUNDIALS_seq&amp;quot;&amp;gt;http://computation.llnl.gov/projects/sundials/kinsol&amp;lt;/ref&amp;gt; по лицензии BSD. &lt;br /&gt;
&lt;br /&gt;
2. Параллельные реализации &lt;br /&gt;
**Построение параллельной реализации метода Ньютона для решения задач линейного программирования описано в работе В.А. Гаранжа, А.И. Голикова, Ю.Г. Евтушенко, М.Х. Нгуена &amp;quot;Параллельная реализации метода Ньютона для решения больших задач линейного программирования&amp;quot; &amp;lt;ref name=&amp;quot;CCAS&amp;quot;&amp;gt;http://www.ccas.ru/personal/evtush/p/paper1.pdf&amp;lt;/ref&amp;gt;.&lt;br /&gt;
**Построение параллельной реализации метода Ньютона для решения задач оптимизации, описываются в работе V. A. Garanzha, A. I. Golikov, Yu. G. Evtushenko, and M. Kh. Nguen &amp;quot;Parallel Implementation of Newton’s Method for Solving Large-Scale Linear Programs&amp;quot; &amp;lt;ref name=&amp;quot;IMPL_OPT&amp;quot;&amp;gt;http://www.ccas.ru/personal/evtush/p/CMMP1303.pdf&amp;lt;/ref&amp;gt;.&lt;br /&gt;
**Построение параллельной реализации метода Ньютона, а также результаты некоторых экспериментов, описываются в работе Renato N. Elias Alvaro L. G. A. Coutinho Marcos A. D. Martins Rubens M. Sydenstricker  &amp;quot;PARALLEL INEXACT NEWTON-TYPE METHODS FOR THE SUPG/PSPG SOLUTION OF STEADY INCOMPRESSIBLE 3D NAVIER-STOKES EQUATIONS IN PC CLUSTERS&amp;quot; &amp;lt;ref name=&amp;quot;SUPG&amp;quot;&amp;gt;http://www.nacad.ufrj.br/~rnelias/papers/CIL14-020.pdf&amp;lt;/ref&amp;gt;.&lt;br /&gt;
**Описание использования и результатов экспериментов с параллельной реализацией метода Ньютона в задаче фильтрации вязкой сжимаемой многофазной многокомпонентной смеси в пористой среде описано в работе К.Ю.Богачева &amp;quot;Эффективное решение задачи фильтрации вязкой сжимаемой многофазной многокомпонентной смеси на параллельных ЭВМ&amp;quot;&amp;lt;ref name=&amp;quot;BOGACHEV&amp;quot;&amp;gt;http://academy.hpc-russia.ru/files/reservoirdynamics_bogachev.pdf&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>MukhayevD</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:MukhayevD/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0&amp;diff=19158</id>
		<title>Участник:MukhayevD/Метод Ньютона</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:MukhayevD/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0&amp;diff=19158"/>
		<updated>2016-11-25T16:29:00Z</updated>

		<summary type="html">&lt;p&gt;MukhayevD: /* Существующие реализации алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = &lt;br /&gt;
| serial_complexity = &lt;br /&gt;
| input_data        = &lt;br /&gt;
| output_data       = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона&#039;&#039;&#039;, &#039;&#039;&#039;алгоритм Ньютона&#039;&#039;&#039; (также известный как &#039;&#039;&#039;метод касательных&#039;&#039;&#039;) — это итерационный численный метод нахождения корня заданной функции(в связи с трудностями программирования производной для произвольной функции рассматриваются только функции в виде полинома). Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Пусть &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt; - некоторое приближение к корню уравнения &amp;lt;math&amp;gt; f(x) = 0, f \in C^1 &amp;lt;/math&amp;gt;, то следующее приближение определяется как корень касательной к функции &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;, проведенной в точке &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Уравнение касательной к функции &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt; имеет вид:&lt;br /&gt;
&amp;lt;math&amp;gt; f^&#039;(x_n) = (y - f(x_n))/(x - x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
В уравнении касательной положим &amp;lt;math&amp;gt; y = 0 &amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; x = x_{n+1} &amp;lt;/math&amp;gt;.&lt;br /&gt;
Тогда алгоритм последовательных вычислений в методе Ньютона состоит в следующем:&lt;br /&gt;
&amp;lt;math&amp;gt; x_{n+1} = x_n - f(x_n)/f^&#039;(x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
Сходимость метода касательных квадратичная, порядок сходимости равен 2.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Основная вычислительная нагрузка алгоритма заключается в нахождении &amp;lt;math&amp;gt; \varphi(x_n) = f(x_n)/f^&#039;(x_n) &amp;lt;/math&amp;gt;, которая в последствии используется для нахождения &amp;lt;math&amp;gt; x_{n+1} = x_n - \varphi(x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Как и было описано в описании ядра алгоритма, основную часть метода составляет вычисление значения функции &amp;lt;math&amp;gt; f(x_n) &amp;lt;/math&amp;gt; и ее производной &amp;lt;math&amp;gt; f^&#039;(x_n) &amp;lt;/math&amp;gt; в точке x_n.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f(x_n) = \sum_{i=0}^{n}f_ix_n^i &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^&#039;(x_n) = \sum_{i=0}^{n-1}f^&#039;_ix_n^i &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;
  1. Выбираем начальное приближение &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt;&lt;br /&gt;
  2. Находим значение функции &amp;lt;math&amp;gt; f(x_n) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt;x_n&amp;lt;/math&amp;gt;.&lt;br /&gt;
  3. Находим значение производной функции &amp;lt;math&amp;gt; f^&#039;(x_n) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt;x_n&amp;lt;/math&amp;gt;.&lt;br /&gt;
  4. Получаем следующий шаг итерации &amp;lt;math&amp;gt; x_{n+1} &amp;lt;/math&amp;gt;&amp;lt;math&amp;gt; x_{n+1} = x_n - f(x_n)/f^&#039;(x+n) &amp;lt;/math&amp;gt;&lt;br /&gt;
  5. Находим погрешность &amp;lt;math&amp;gt; e = |x_{n+1} - x_n| &amp;lt;/math&amp;gt;&lt;br /&gt;
  6. Если погрешность не превышает некоторого заранее заданного числа - останавливаемся.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; e &amp;lt; \varepsilon  &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Для вычисления корня методом Ньютона при последовательном выполнении требуется:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; сложение + &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; умножений + &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; умножений (возведение в степень)&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; сложение + &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; умножений + &amp;lt;math&amp;gt; n-2 &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;
* &amp;lt;math&amp;gt; 2n-1 &amp;lt;/math&amp;gt; сложение (вычитание)&lt;br /&gt;
* &amp;lt;math&amp;gt; 4n-3 &amp;lt;/math&amp;gt; умножений (делений)&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
На рисунке ниже изображена структура информационного графа алгоритма. Блок IN представляет собой выбор начального приближения, блок IT - итерацию алгоритма, блок OUT - концу работы алгоритма.&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP1.PNG|center|frame|Рисунок 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
Как видно, алгоритм строго последовательный.&lt;br /&gt;
Ниже подробнее рассмотрено как можно разделить нагрузку связанную с вычислениями &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; между процессорами. Каждое слагаемое полинома считается отдельно.&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP2.PNG|center|frame|Рисунок 2. Итерация]]&lt;br /&gt;
&lt;br /&gt;
Аналогично для &amp;lt;math&amp;gt; f^&#039;(x) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Несмотря на то, что сам по себе алгоритм является строго последовательным, его можно ускорить за счет распараллеливания нахождения функции и ее производной на текущей итерации, так как это было описано в предыдущем пункте.&lt;br /&gt;
&lt;br /&gt;
Пусть имеем &amp;lt;math&amp;gt; p &amp;lt;/math&amp;gt; процессоров, в таком случае каждому процессору нужно будет произвести &amp;lt;math&amp;gt; (4n-3)/p &amp;lt;/math&amp;gt; умножений.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
&lt;br /&gt;
   1. Функция в виде полинома.&lt;br /&gt;
   2. Область, в которой ищется корень &amp;lt;math&amp;gt; (a;b) &amp;lt;/math&amp;gt;.&lt;br /&gt;
   3. Начальное приближение &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;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;
Так как сам по себе метод является последовательным то, следовательно о его масштабируемости не может быть и речи.&lt;br /&gt;
&lt;br /&gt;
Поверка масштабируемости реализации метода проводилась на следующих тестах:&lt;br /&gt;
&lt;br /&gt;
* 1) &amp;lt;math&amp;gt; (x-1)g(x) &amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt; g(x) &amp;lt;/math&amp;gt; - произвольный полином степени &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP4.png|center|frame|Рисунок 1.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 2) &amp;lt;math&amp;gt; 1 + 2x + 2x^2 + ... + 2x^{n-1} + x^n &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP3.png|center|frame|Рисунок 2.]]&lt;br /&gt;
&lt;br /&gt;
Как видно из рисунков вне зависимости от размерности задачи не удалось добиться времени больше &amp;lt;math&amp;gt; 0.1 &amp;lt;/math&amp;gt; секунды, в виду этого можно предположить, что время зависит от физического расположения процессоров, но тем не менее есть общая тенденция, что время работы возрастает вместе с размерностью и количеством процессоров.&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
1. Последовательные реализации&lt;br /&gt;
&lt;br /&gt;
**ALIAS C++. Язык реализации - C++. Распространяется бесплатно, исходные коды и примеры использования можно скачать на сайте&amp;lt;ref name=&amp;quot;ALIAS&amp;quot;&amp;gt;https://www-sop.inria.fr/coprin/logiciels/ALIAS/ALIAS-C++/ALIAS-C++.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
**Numerical Recipes. Язык реализации - C++. Исходный код можно найти в секции 9.7 книги Numerical recipes(third edition)&amp;lt;ref name=&amp;quot;RECIPES&amp;quot;&amp;gt;http://numerical.recipes&amp;lt;/ref&amp;gt;. Бесплатно доступны&amp;lt;ref name=&amp;quot;RECIPES_old&amp;quot;&amp;gt;http://numerical.recipes/oldverswitcher.html&amp;lt;/ref&amp;gt; предыдущие издания для языков C, Fortran77, Fortran90.&lt;br /&gt;
**Sundials. Язык реализации - C, также есть интерфейс для использования в Fortran-программах. Распространяется&amp;lt;ref name=&amp;quot;SUNDIALS_seq&amp;quot;&amp;gt;http://computation.llnl.gov/projects/sundials/kinsol&amp;lt;/ref&amp;gt; по лицензии BSD. &lt;br /&gt;
&lt;br /&gt;
2. Параллельные реализации &lt;br /&gt;
**Построение параллельной реализации метода Ньютона для решения задач линейного программирования описано в работе В.А. Гаранжа, А.И. Голикова, Ю.Г. Евтушенко, М.Х. Нгуена &amp;quot;Параллельная реализации метода Ньютона для решения больших задач линейного программирования&amp;quot; &amp;lt;ref name=&amp;quot;CCAS&amp;quot;&amp;gt;http://www.ccas.ru/personal/evtush/p/paper1.pdf&amp;lt;/ref&amp;gt;.&lt;br /&gt;
**Построение параллельной реализации метода Ньютона для решения задач оптимизации, описываются в работе V. A. Garanzha, A. I. Golikov, Yu. G. Evtushenko, and M. Kh. Nguen &amp;quot;Parallel Implementation of Newton’s Method for Solving Large-Scale Linear Programs&amp;quot; &amp;lt;ref name=&amp;quot;IMPL_OPT&amp;quot;&amp;gt;http://www.ccas.ru/personal/evtush/p/CMMP1303.pdf&amp;lt;/ref&amp;gt;.&lt;br /&gt;
**Построение параллельной реализации метода Ньютона, а также результаты некоторых экспериментов, описываются в работе Renato N. Elias Alvaro L. G. A. Coutinho Marcos A. D. Martins Rubens M. Sydenstricker  &amp;quot;PARALLEL INEXACT NEWTON-TYPE METHODS FOR THE SUPG/PSPG SOLUTION OF STEADY INCOMPRESSIBLE 3D NAVIER-STOKES EQUATIONS IN PC CLUSTERS&amp;quot; &amp;lt;ref name=&amp;quot;SUPG&amp;quot;&amp;gt;http://www.nacad.ufrj.br/~rnelias/papers/CIL14-020.pdf&amp;lt;/ref&amp;gt;.&lt;br /&gt;
**Описание использования и результатов экспериментов с параллельной реализацией метода Ньютона в задаче фильтрации вязкой сжимаемой многофазной многокомпонентной смеси в пористой среде описано в работе К.Ю.Богачева &amp;quot;Эффективное решение задачи фильтрации вязкой сжимаемой многофазной многокомпонентной смеси на параллельных ЭВМ&amp;quot;&amp;lt;ref name=&amp;quot;BOGACHEV&amp;quot;&amp;gt;http://academy.hpc-russia.ru/files/reservoirdynamics_bogachev.pdf&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>MukhayevD</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:MukhayevD/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0&amp;diff=19157</id>
		<title>Участник:MukhayevD/Метод Ньютона</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:MukhayevD/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0&amp;diff=19157"/>
		<updated>2016-11-25T16:16:46Z</updated>

		<summary type="html">&lt;p&gt;MukhayevD: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = &lt;br /&gt;
| serial_complexity = &lt;br /&gt;
| input_data        = &lt;br /&gt;
| output_data       = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона&#039;&#039;&#039;, &#039;&#039;&#039;алгоритм Ньютона&#039;&#039;&#039; (также известный как &#039;&#039;&#039;метод касательных&#039;&#039;&#039;) — это итерационный численный метод нахождения корня заданной функции(в связи с трудностями программирования производной для произвольной функции рассматриваются только функции в виде полинома). Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Пусть &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt; - некоторое приближение к корню уравнения &amp;lt;math&amp;gt; f(x) = 0, f \in C^1 &amp;lt;/math&amp;gt;, то следующее приближение определяется как корень касательной к функции &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;, проведенной в точке &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Уравнение касательной к функции &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt; имеет вид:&lt;br /&gt;
&amp;lt;math&amp;gt; f^&#039;(x_n) = (y - f(x_n))/(x - x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
В уравнении касательной положим &amp;lt;math&amp;gt; y = 0 &amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; x = x_{n+1} &amp;lt;/math&amp;gt;.&lt;br /&gt;
Тогда алгоритм последовательных вычислений в методе Ньютона состоит в следующем:&lt;br /&gt;
&amp;lt;math&amp;gt; x_{n+1} = x_n - f(x_n)/f^&#039;(x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
Сходимость метода касательных квадратичная, порядок сходимости равен 2.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Основная вычислительная нагрузка алгоритма заключается в нахождении &amp;lt;math&amp;gt; \varphi(x_n) = f(x_n)/f^&#039;(x_n) &amp;lt;/math&amp;gt;, которая в последствии используется для нахождения &amp;lt;math&amp;gt; x_{n+1} = x_n - \varphi(x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Как и было описано в описании ядра алгоритма, основную часть метода составляет вычисление значения функции &amp;lt;math&amp;gt; f(x_n) &amp;lt;/math&amp;gt; и ее производной &amp;lt;math&amp;gt; f^&#039;(x_n) &amp;lt;/math&amp;gt; в точке x_n.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f(x_n) = \sum_{i=0}^{n}f_ix_n^i &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^&#039;(x_n) = \sum_{i=0}^{n-1}f^&#039;_ix_n^i &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;
  1. Выбираем начальное приближение &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt;&lt;br /&gt;
  2. Находим значение функции &amp;lt;math&amp;gt; f(x_n) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt;x_n&amp;lt;/math&amp;gt;.&lt;br /&gt;
  3. Находим значение производной функции &amp;lt;math&amp;gt; f^&#039;(x_n) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt;x_n&amp;lt;/math&amp;gt;.&lt;br /&gt;
  4. Получаем следующий шаг итерации &amp;lt;math&amp;gt; x_{n+1} &amp;lt;/math&amp;gt;&amp;lt;math&amp;gt; x_{n+1} = x_n - f(x_n)/f^&#039;(x+n) &amp;lt;/math&amp;gt;&lt;br /&gt;
  5. Находим погрешность &amp;lt;math&amp;gt; e = |x_{n+1} - x_n| &amp;lt;/math&amp;gt;&lt;br /&gt;
  6. Если погрешность не превышает некоторого заранее заданного числа - останавливаемся.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; e &amp;lt; \varepsilon  &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Для вычисления корня методом Ньютона при последовательном выполнении требуется:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; сложение + &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; умножений + &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; умножений (возведение в степень)&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; сложение + &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; умножений + &amp;lt;math&amp;gt; n-2 &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;
* &amp;lt;math&amp;gt; 2n-1 &amp;lt;/math&amp;gt; сложение (вычитание)&lt;br /&gt;
* &amp;lt;math&amp;gt; 4n-3 &amp;lt;/math&amp;gt; умножений (делений)&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
На рисунке ниже изображена структура информационного графа алгоритма. Блок IN представляет собой выбор начального приближения, блок IT - итерацию алгоритма, блок OUT - концу работы алгоритма.&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP1.PNG|center|frame|Рисунок 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
Как видно, алгоритм строго последовательный.&lt;br /&gt;
Ниже подробнее рассмотрено как можно разделить нагрузку связанную с вычислениями &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; между процессорами. Каждое слагаемое полинома считается отдельно.&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP2.PNG|center|frame|Рисунок 2. Итерация]]&lt;br /&gt;
&lt;br /&gt;
Аналогично для &amp;lt;math&amp;gt; f^&#039;(x) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Несмотря на то, что сам по себе алгоритм является строго последовательным, его можно ускорить за счет распараллеливания нахождения функции и ее производной на текущей итерации, так как это было описано в предыдущем пункте.&lt;br /&gt;
&lt;br /&gt;
Пусть имеем &amp;lt;math&amp;gt; p &amp;lt;/math&amp;gt; процессоров, в таком случае каждому процессору нужно будет произвести &amp;lt;math&amp;gt; (4n-3)/p &amp;lt;/math&amp;gt; умножений.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
&lt;br /&gt;
   1. Функция в виде полинома.&lt;br /&gt;
   2. Область, в которой ищется корень &amp;lt;math&amp;gt; (a;b) &amp;lt;/math&amp;gt;.&lt;br /&gt;
   3. Начальное приближение &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;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;
Так как сам по себе метод является последовательным то, следовательно о его масштабируемости не может быть и речи.&lt;br /&gt;
&lt;br /&gt;
Поверка масштабируемости реализации метода проводилась на следующих тестах:&lt;br /&gt;
&lt;br /&gt;
* 1) &amp;lt;math&amp;gt; (x-1)g(x) &amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt; g(x) &amp;lt;/math&amp;gt; - произвольный полином степени &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP4.png|center|frame|Рисунок 1.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 2) &amp;lt;math&amp;gt; 1 + 2x + 2x^2 + ... + 2x^{n-1} + x^n &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP3.png|center|frame|Рисунок 2.]]&lt;br /&gt;
&lt;br /&gt;
Как видно из рисунков вне зависимости от размерности задачи не удалось добиться времени больше &amp;lt;math&amp;gt; 0.1 &amp;lt;/math&amp;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>MukhayevD</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:MukhayevD/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0&amp;diff=19156</id>
		<title>Участник:MukhayevD/Метод Ньютона</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:MukhayevD/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0&amp;diff=19156"/>
		<updated>2016-11-25T16:10:10Z</updated>

		<summary type="html">&lt;p&gt;MukhayevD: /* Масштабируемость алгоритма и его реализации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = &lt;br /&gt;
| serial_complexity = &lt;br /&gt;
| input_data        = &lt;br /&gt;
| output_data       = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона&#039;&#039;&#039;, &#039;&#039;&#039;алгоритм Ньютона&#039;&#039;&#039; (также известный как &#039;&#039;&#039;метод касательных&#039;&#039;&#039;) — это итерационный численный метод нахождения корня заданной функции(в связи с трудностями программирования производной для произвольной функции рассматриваются только функции в виде полинома). Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Пусть &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt; - некоторое приближение к корню уравнения &amp;lt;math&amp;gt; f(x) = 0, f \in C^1 &amp;lt;/math&amp;gt;, то следующее приближение определяется как корень касательной к функции &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;, проведенной в точке &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Уравнение касательной к функции &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt; имеет вид:&lt;br /&gt;
&amp;lt;math&amp;gt; f^&#039;(x_n) = (y - f(x_n))/(x - x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
В уравнении касательной положим &amp;lt;math&amp;gt; y = 0 &amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; x = x_{n+1} &amp;lt;/math&amp;gt;.&lt;br /&gt;
Тогда алгоритм последовательных вычислений в методе Ньютона состоит в следующем:&lt;br /&gt;
&amp;lt;math&amp;gt; x_{n+1} = x_n - f(x_n)/f^&#039;(x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
Сходимость метода касательных квадратичная, порядок сходимости равен 2.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Основная вычислительная нагрузка алгоритма заключается в нахождении &amp;lt;math&amp;gt; \varphi(x_n) = f(x_n)/f^&#039;(x_n) &amp;lt;/math&amp;gt;, которая в последствии используется для нахождения &amp;lt;math&amp;gt; x_{n+1} = x_n - \varphi(x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Как и было описано в описании ядра алгоритма, основную часть метода составляет вычисление значения функции &amp;lt;math&amp;gt; f(x_n) &amp;lt;/math&amp;gt; и ее производной &amp;lt;math&amp;gt; f^&#039;(x_n) &amp;lt;/math&amp;gt; в точке x_n.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f(x_n) = \sum_{i=0}^{n}f_ix_n^i &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^&#039;(x_n) = \sum_{i=0}^{n-1}f^&#039;_ix_n^i &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;
  1. Выбираем начальное приближение &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt;&lt;br /&gt;
  2. Находим значение функции &amp;lt;math&amp;gt; f(x_n) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt;x_n&amp;lt;/math&amp;gt;.&lt;br /&gt;
  3. Находим значение производной функции &amp;lt;math&amp;gt; f^&#039;(x_n) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt;x_n&amp;lt;/math&amp;gt;.&lt;br /&gt;
  4. Получаем следующий шаг итерации &amp;lt;math&amp;gt; x_{n+1} &amp;lt;/math&amp;gt;&amp;lt;math&amp;gt; x_{n+1} = x_n - f(x_n)/f^&#039;(x+n) &amp;lt;/math&amp;gt;&lt;br /&gt;
  5. Находим погрешность &amp;lt;math&amp;gt; e = |x_{n+1} - x_n| &amp;lt;/math&amp;gt;&lt;br /&gt;
  6. Если погрешность не превышает некоторого заранее заданного числа - останавливаемся.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; e &amp;lt; \varepsilon  &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Для вычисления корня методом Ньютона при последовательном выполнении требуется:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; сложение + &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; умножений + &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; умножений (возведение в степень)&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; сложение + &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; умножений + &amp;lt;math&amp;gt; n-2 &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;
* &amp;lt;math&amp;gt; 2n-1 &amp;lt;/math&amp;gt; сложение (вычитание)&lt;br /&gt;
* &amp;lt;math&amp;gt; 4n-3 &amp;lt;/math&amp;gt; умножений (делений)&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
На рисунке ниже изображена структура информационного графа алгоритма. Блок IN представляет собой выбор начального приближения, блок IT - итерацию алгоритма, блок OUT - концу работы алгоритма.&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP1.png|center|frame|Рисунок 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
Как видно, алгоритм строго последовательный.&lt;br /&gt;
Ниже подробнее рассмотрено как можно разделить нагрузку связанную с вычислениями &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; между процессорами. Каждое слагаемое полинома считается отдельно.&lt;br /&gt;
[[Файл:MNP2.png|center|frame|Рисунок 2. Итерация]]&lt;br /&gt;
Аналогично для &amp;lt;math&amp;gt; f^&#039;(x) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Несмотря на то, что сам по себе алгоритм является строго последовательным, его можно ускорить за счет распараллеливания нахождения функции и ее производной на текущей итерации, так как это было описано в предыдущем пункте.&lt;br /&gt;
&lt;br /&gt;
Пусть имеем &amp;lt;math&amp;gt; p &amp;lt;/math&amp;gt; процессоров, в таком случае каждому процессору нужно будет произвести &amp;lt;math&amp;gt; (4n-3)/p &amp;lt;/math&amp;gt; умножений.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
&lt;br /&gt;
   1. Функция в виде полинома.&lt;br /&gt;
   2. Область, в которой ищется корень &amp;lt;math&amp;gt; (a;b) &amp;lt;/math&amp;gt;.&lt;br /&gt;
   3. Начальное приближение &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;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;
Так как сам по себе метод является последовательным то, следовательно о его масштабируемости не может быть и речи.&lt;br /&gt;
&lt;br /&gt;
Поверка масштабируемости реализации метода проводилась на следующих тестах:&lt;br /&gt;
&lt;br /&gt;
* 1) &amp;lt;math&amp;gt; (x-1)g(x) &amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt; g(x) &amp;lt;/math&amp;gt; - произвольный полином степени &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP4.png|center|frame|Рисунок 1.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 2) &amp;lt;math&amp;gt; 1 + 2x + 2x^2 + ... + 2x^{n-1} + x^n &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP3.png|center|frame|Рисунок 2.]]&lt;br /&gt;
&lt;br /&gt;
Как видно из рисунков вне зависимости от размерности задачи не удалось добиться времени больше &amp;lt;math&amp;gt; 0.1 &amp;lt;/math&amp;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>MukhayevD</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:MukhayevD&amp;diff=19058</id>
		<title>Участник:MukhayevD</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:MukhayevD&amp;diff=19058"/>
		<updated>2016-11-23T21:03:36Z</updated>

		<summary type="html">&lt;p&gt;MukhayevD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Студент 4 курса бакалавриата ВМК МГУ, группа 414.&lt;br /&gt;
&lt;br /&gt;
[[https://algowiki-project.org/ru/Участник:MukhayevD/Метод_Ньютона]]&lt;/div&gt;</summary>
		<author><name>MukhayevD</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:MukhayevD/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0&amp;diff=19056</id>
		<title>Участник:MukhayevD/Метод Ньютона</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:MukhayevD/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0&amp;diff=19056"/>
		<updated>2016-11-23T21:03:16Z</updated>

		<summary type="html">&lt;p&gt;MukhayevD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = &lt;br /&gt;
| serial_complexity = &lt;br /&gt;
| input_data        = &lt;br /&gt;
| output_data       = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона&#039;&#039;&#039;, &#039;&#039;&#039;алгоритм Ньютона&#039;&#039;&#039; (также известный как &#039;&#039;&#039;метод касательных&#039;&#039;&#039;) — это итерационный численный метод нахождения корня заданной функции(в связи с трудностями программирования производной для произвольной функции рассматриваются только функции в виде полинома). Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Пусть &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt; - некоторое приближение к корню уравнения &amp;lt;math&amp;gt; f(x) = 0, f \in C^1 &amp;lt;/math&amp;gt;, то следующее приближение определяется как корень касательной к функции &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;, проведенной в точке &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Уравнение касательной к функции &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt; имеет вид:&lt;br /&gt;
&amp;lt;math&amp;gt; f^&#039;(x_n) = (y - f(x_n))/(x - x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
В уравнении касательной положим &amp;lt;math&amp;gt; y = 0 &amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; x = x_{n+1} &amp;lt;/math&amp;gt;.&lt;br /&gt;
Тогда алгоритм последовательных вычислений в методе Ньютона состоит в следующем:&lt;br /&gt;
&amp;lt;math&amp;gt; x_{n+1} = x_n - f(x_n)/f^&#039;(x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
Сходимость метода касательных квадратичная, порядок сходимости равен 2.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Основная вычислительная нагрузка алгоритма заключается в нахождении &amp;lt;math&amp;gt; \varphi(x_n) = f(x_n)/f^&#039;(x_n) &amp;lt;/math&amp;gt;, которая в последствии используется для нахождения &amp;lt;math&amp;gt; x_{n+1} = x_n - \varphi(x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Как и было описано в описании ядра алгоритма, основную часть метода составляет вычисление значения функции &amp;lt;math&amp;gt; f(x_n) &amp;lt;/math&amp;gt; и ее производной &amp;lt;math&amp;gt; f^&#039;(x_n) &amp;lt;/math&amp;gt; в точке x_n.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f(x_n) = \sum_{i=0}^{n}f_ix_n^i &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^&#039;(x_n) = \sum_{i=0}^{n-1}f^&#039;_ix_n^i &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;
  1. Выбираем начальное приближение &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt;&lt;br /&gt;
  2. Находим значение функции &amp;lt;math&amp;gt; f(x_n) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt;x_n&amp;lt;/math&amp;gt;.&lt;br /&gt;
  3. Находим значение производной функции &amp;lt;math&amp;gt; f^&#039;(x_n) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt;x_n&amp;lt;/math&amp;gt;.&lt;br /&gt;
  4. Получаем следующий шаг итерации &amp;lt;math&amp;gt; x_{n+1} &amp;lt;/math&amp;gt;&amp;lt;math&amp;gt; x_{n+1} = x_n - f(x_n)/f^&#039;(x+n) &amp;lt;/math&amp;gt;&lt;br /&gt;
  5. Находим погрешность &amp;lt;math&amp;gt; e = |x_{n+1} - x_n| &amp;lt;/math&amp;gt;&lt;br /&gt;
  6. Если погрешность не превышает некоторого заранее заданного числа - останавливаемся.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; e &amp;lt; \varepsilon  &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Для вычисления корня методом Ньютона при последовательном выполнении требуется:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; сложение + &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; умножений + &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; умножений (возведение в степень)&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; сложение + &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; умножений + &amp;lt;math&amp;gt; n-2 &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;
* &amp;lt;math&amp;gt; 2n-1 &amp;lt;/math&amp;gt; сложение (вычитание)&lt;br /&gt;
* &amp;lt;math&amp;gt; 4n-3 &amp;lt;/math&amp;gt; умножений (делений)&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
На рисунке ниже изображена структура информационного графа алгоритма. Блок IN представляет собой выбор начального приближения, блок IT - итерацию алгоритма, блок OUT - концу работы алгоритма.&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP1.png|center|frame|Рисунок 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
Как видно, алгоритм строго последовательный.&lt;br /&gt;
Ниже подробнее рассмотрено как можно разделить нагрузку связанную с вычислениями &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; между процессорами. Каждое слагаемое полинома считается отдельно.&lt;br /&gt;
[[Файл:MNP2.png|center|frame|Рисунок 2. Итерация]]&lt;br /&gt;
Аналогично для &amp;lt;math&amp;gt; f^&#039;(x) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Несмотря на то, что сам по себе алгоритм является строго последовательным, его можно ускорить за счет распараллеливания нахождения функции и ее производной на текущей итерации, так как это было описано в предыдущем пункте.&lt;br /&gt;
&lt;br /&gt;
Пусть имеем &amp;lt;math&amp;gt; p &amp;lt;/math&amp;gt; процессоров, в таком случае каждому процессору нужно будет произвести &amp;lt;math&amp;gt; (4n-3)/p &amp;lt;/math&amp;gt; умножений.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
&lt;br /&gt;
   1. Функция в виде полинома.&lt;br /&gt;
   2. Область, в которой ищется корень &amp;lt;math&amp;gt; (a;b) &amp;lt;/math&amp;gt;.&lt;br /&gt;
   3. Начальное приближение &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;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;
&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>MukhayevD</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:MukhayevD/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0&amp;diff=19054</id>
		<title>Участник:MukhayevD/Метод Ньютона</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:MukhayevD/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0&amp;diff=19054"/>
		<updated>2016-11-23T20:43:16Z</updated>

		<summary type="html">&lt;p&gt;MukhayevD: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = &lt;br /&gt;
| serial_complexity = &lt;br /&gt;
| input_data        = &lt;br /&gt;
| output_data       = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона&#039;&#039;&#039;, &#039;&#039;&#039;алгоритм Ньютона&#039;&#039;&#039; (также известный как &#039;&#039;&#039;метод касательных&#039;&#039;&#039;) — это итерационный численный метод нахождения корня заданной функции(в связи с трудностями программирования производной для произвольной функции рассматриваются только функции в виде полинома). Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Пусть &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt; - некоторое приближение к корню уравнения &amp;lt;math&amp;gt; f(x) = 0, f \in C^1 &amp;lt;/math&amp;gt;, то следующее приближение определяется как корень касательной к функции &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;, проведенной в точке &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Уравнение касательной к функции &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt; имеет вид:&lt;br /&gt;
&amp;lt;math&amp;gt; f^&#039;(x_n) = (y - f(x_n))/(x - x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
В уравнении касательной положим &amp;lt;math&amp;gt; y = 0 &amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; x = x_{n+1} &amp;lt;/math&amp;gt;.&lt;br /&gt;
Тогда алгоритм последовательных вычислений в методе Ньютона состоит в следующем:&lt;br /&gt;
&amp;lt;math&amp;gt; x_{n+1} = x_n - f(x_n)/f^&#039;(x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
Сходимость метода касательных квадратичная, порядок сходимости равен 2.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Основная вычислительная нагрузка алгоритма заключается в нахождении &amp;lt;math&amp;gt; \varphi(x_n) = f(x_n)/f^&#039;(x_n) &amp;lt;/math&amp;gt;, которая в последствии используется для нахождения &amp;lt;math&amp;gt; x_{n+1} = x_n - \varphi(x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Как и было описано в описании ядра алгоритма, основную часть метода составляет вычисление значения функции &amp;lt;math&amp;gt; f(x_n) &amp;lt;/math&amp;gt; и ее производной &amp;lt;math&amp;gt; f^&#039;(x_n) &amp;lt;/math&amp;gt; в точке x_n.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f(x_n) = \sum_{i=0}^{n}f_ix_n^i &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^&#039;(x_n) = \sum_{i=0}^{n-1}f^&#039;_ix_n^i &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;
1. Выбираем начальное приближение &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Находим значение функции &amp;lt;math&amp;gt; f(x_n) &amp;lt;/math&amp;gt; в точке x_n.&lt;br /&gt;
&lt;br /&gt;
3. Находим значение производной функции &amp;lt;math&amp;gt; f^&#039;(x_n) &amp;lt;/math&amp;gt; в точке x_n.&lt;br /&gt;
&lt;br /&gt;
4. Получаем следующий шаг итерации &amp;lt;math&amp;gt; x_{n+1} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; x_{n+1} = x_n - f(x_n)/f^&#039;(x+n) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Находим погрешность &amp;lt;math&amp;gt; e = |x_{n+1} - x_n| &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Если погрешность не превышает некоторого заранее заданного числа - останавливаемся.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; e &amp;lt; \varepsilon  &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Для вычисления корня методом Ньютона при последовательном выполнении требуется:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; сложение + &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; умножений + &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; умножений (возведение в степень)&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; сложение + &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; умножений + &amp;lt;math&amp;gt; n-2 &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;
* &amp;lt;math&amp;gt; 2n-1 &amp;lt;/math&amp;gt; сложение (вычитание)&lt;br /&gt;
* &amp;lt;math&amp;gt; 4n-3 &amp;lt;/math&amp;gt; умножений (делений)&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
На рисунке ниже изображена структура информационного графа алгоритма. Блок IN представляет собой выбор начального приближения, блок IT - итерацию алгоритма, блок OUT - концу работы алгоритма.&lt;br /&gt;
&lt;br /&gt;
[[Файл:MNP1.png|center|frame|Рисунок 1. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
Как видно, алгоритм строго последовательный.&lt;br /&gt;
Ниже подробнее рассмотрено как можно разделить нагрузку связанную с вычислениями &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; между процессорами. Каждое слагаемое полинома считается отдельно.&lt;br /&gt;
[[Файл:MNP2.png|center|frame|Рисунок 2. Итерация]]&lt;br /&gt;
Аналогично для &amp;lt;math&amp;gt; f^&#039;(x) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&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;
&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>MukhayevD</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:MukhayevD/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0&amp;diff=19053</id>
		<title>Участник:MukhayevD/Метод Ньютона</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:MukhayevD/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0&amp;diff=19053"/>
		<updated>2016-11-23T20:40:01Z</updated>

		<summary type="html">&lt;p&gt;MukhayevD: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = &lt;br /&gt;
| serial_complexity = &lt;br /&gt;
| input_data        = &lt;br /&gt;
| output_data       = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона&#039;&#039;&#039;, &#039;&#039;&#039;алгоритм Ньютона&#039;&#039;&#039; (также известный как &#039;&#039;&#039;метод касательных&#039;&#039;&#039;) — это итерационный численный метод нахождения корня заданной функции(в связи с трудностями программирования производной для произвольной функции рассматриваются только функции в виде полинома). Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Пусть &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt; - некоторое приближение к корню уравнения &amp;lt;math&amp;gt; f(x) = 0, f \in C^1 &amp;lt;/math&amp;gt;, то следующее приближение определяется как корень касательной к функции &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;, проведенной в точке &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Уравнение касательной к функции &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt; имеет вид:&lt;br /&gt;
&amp;lt;math&amp;gt; f^&#039;(x_n) = (y - f(x_n))/(x - x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
В уравнении касательной положим &amp;lt;math&amp;gt; y = 0 &amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; x = x_{n+1} &amp;lt;/math&amp;gt;.&lt;br /&gt;
Тогда алгоритм последовательных вычислений в методе Ньютона состоит в следующем:&lt;br /&gt;
&amp;lt;math&amp;gt; x_{n+1} = x_n - f(x_n)/f^&#039;(x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
Сходимость метода касательных квадратичная, порядок сходимости равен 2.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Основная вычислительная нагрузка алгоритма заключается в нахождении &amp;lt;math&amp;gt; \varphi(x_n) = f(x_n)/f^&#039;(x_n) &amp;lt;/math&amp;gt;, которая в последствии используется для нахождения &amp;lt;math&amp;gt; x_{n+1} = x_n - \varphi(x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Как и было описано в описании ядра алгоритма, основную часть метода составляет вычисление значения функции &amp;lt;math&amp;gt; f(x_n) &amp;lt;/math&amp;gt; и ее производной &amp;lt;math&amp;gt; f^&#039;(x_n) &amp;lt;/math&amp;gt; в точке x_n.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f(x_n) = \sum_{i=0}^{n}f_ix_n^i &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^&#039;(x_n) = \sum_{i=0}^{n-1}f^&#039;_ix_n^i &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;
1. Выбираем начальное приближение &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Находим значение функции &amp;lt;math&amp;gt; f(x_n) &amp;lt;/math&amp;gt; в точке x_n.&lt;br /&gt;
&lt;br /&gt;
3. Находим значение производной функции &amp;lt;math&amp;gt; f^&#039;(x_n) &amp;lt;/math&amp;gt; в точке x_n.&lt;br /&gt;
&lt;br /&gt;
4. Получаем следующий шаг итерации &amp;lt;math&amp;gt; x_{n+1} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; x_{n+1} = x_n - f(x_n)/f^&#039;(x+n) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Находим погрешность &amp;lt;math&amp;gt; e = |x_{n+1} - x_n| &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Если погрешность не превышает некоторого заранее заданного числа - останавливаемся.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; e &amp;lt; \varepsilon  &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Для вычисления корня методом Ньютона при последовательном выполнении требуется:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; сложение + &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; умножений + &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; умножений (возведение в степень)&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; сложение + &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; умножений + &amp;lt;math&amp;gt; n-2 &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;
* &amp;lt;math&amp;gt; 2n-1 &amp;lt;/math&amp;gt; сложение (вычитание)&lt;br /&gt;
* &amp;lt;math&amp;gt; 4n-3 &amp;lt;/math&amp;gt; умножений (делений)&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
На рисунке ниже изображена структура информационного графа алгоритма. Блок IN представляет собой выбор начального приближения, блок IT - итерацию алгоритма, блок OUT - концу работы алгоритма.&lt;br /&gt;
[[Файл:MNP1.png|center|frame|Рисунок 1. Информационный граф]]&lt;br /&gt;
Как видно, алгоритм строго последовательный.&lt;br /&gt;
Ниже подробнее рассмотрено как можно разделить нагрузку связанную с вычислениями &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; между процессорами. Каждое слагаемое полинома считается отдельно.&lt;br /&gt;
[[Файл:MNP2.png|center|frame|Рисунок 2. Итерация]]&lt;br /&gt;
Аналогично для &amp;lt;math&amp;gt; f^&#039;(x) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&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;
&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>MukhayevD</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:MukhayevD/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0&amp;diff=19047</id>
		<title>Участник:MukhayevD/Метод Ньютона</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:MukhayevD/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0&amp;diff=19047"/>
		<updated>2016-11-23T16:40:24Z</updated>

		<summary type="html">&lt;p&gt;MukhayevD: Новая страница: «{{algorithm | name              =  | serial_complexity =  | input_data        =  | output_data       =  }}  == Свойства и структура алгори…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = &lt;br /&gt;
| serial_complexity = &lt;br /&gt;
| input_data        = &lt;br /&gt;
| output_data       = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Метод Ньютона&#039;&#039;&#039;, &#039;&#039;&#039;алгоритм Ньютона&#039;&#039;&#039; (также известный как &#039;&#039;&#039;метод касательных&#039;&#039;&#039;) — это итерационный численный метод нахождения корня заданной функции(в связи с трудностями программирования производной для произвольной функции рассматриваются только функции в виде полинома). Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Модификацией метода является метод хорд и касательных.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Пусть &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt; - некоторое приближение к корню уравнения &amp;lt;math&amp;gt; f(x) = 0, f \in C^1 &amp;lt;/math&amp;gt;, то следующее приближение определяется как корень касательной к функции &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;, проведенной в точке &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Уравнение касательной к функции &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt; x_n &amp;lt;/math&amp;gt; имеет вид:&lt;br /&gt;
&amp;lt;math&amp;gt; f^&#039;(x_n) = (y - f(x_n))/(x - x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
В уравнении касательной положим &amp;lt;math&amp;gt; y = 0 &amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; x = x_{n+1} &amp;lt;/math&amp;gt;.&lt;br /&gt;
Тогда алгоритм последовательных вычислений в методе Ньютона состоит в следующем:&lt;br /&gt;
&amp;lt;math&amp;gt; x_{n+1} = x_n - f(x_n)/f^&#039;(x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
Сходимость метода касательных квадратичная, порядок сходимости равен 2.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Основная вычислительная нагрузка алгоритма заключается в нахождении &amp;lt;math&amp;gt; \varphi(x_n) = f(x_n)/f^&#039;(x_n) &amp;lt;/math&amp;gt;, которая в последствии используется для нахождения &amp;lt;math&amp;gt; x_{n+1} = x_n - \varphi(x_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Как и было описано в описании ядра алгоритма, основную часть метода составляет вычисление значения функции &amp;lt;math&amp;gt; f(x_n) &amp;lt;/math&amp;gt; и ее производной &amp;lt;math&amp;gt; f^&#039;(x_n) &amp;lt;/math&amp;gt; в точке x_n.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f(x_n) = \sum_{i=0}^{n}f_ix_n^i &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^&#039;(x_n) = \sum_{i=0}^{n-1}f^&#039;_ix_n^i &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;
1. Выбираем начальное приближение &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Находим значение функции &amp;lt;math&amp;gt; f(x_n) &amp;lt;/math&amp;gt; в точке x_n.&lt;br /&gt;
&lt;br /&gt;
3. Находим значение производной функции &amp;lt;math&amp;gt; f^&#039;(x_n) &amp;lt;/math&amp;gt; в точке x_n.&lt;br /&gt;
&lt;br /&gt;
4. Получаем следующий шаг итерации &amp;lt;math&amp;gt; x_{n+1} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; x_{n+1} = x_n - f(x_n)/f^&#039;(x+n) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Находим погрешность &amp;lt;math&amp;gt; e = |x_{n+1} - x_n| &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Если погрешность не превышает некоторого заранее заданного числа - останавливаемся.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; e &amp;lt; \varepsilon  &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Для вычисления корня методом Ньютона при последовательном выполнении требуется:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; сложение + &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; умножений + &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; умножений (возведение в степень)&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; сложение + &amp;lt;math&amp;gt; n-1 &amp;lt;/math&amp;gt; умножений + &amp;lt;math&amp;gt; n-2 &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;
* &amp;lt;math&amp;gt; 2n-1 &amp;lt;/math&amp;gt; сложение (вычитание)&lt;br /&gt;
* &amp;lt;math&amp;gt; 4n-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;
&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;
&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;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>MukhayevD</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:MukhayevD&amp;diff=19040</id>
		<title>Участник:MukhayevD</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:MukhayevD&amp;diff=19040"/>
		<updated>2016-11-23T13:11:58Z</updated>

		<summary type="html">&lt;p&gt;MukhayevD: Новая страница: «Студент 4 курса бакалавриата ВМК МГУ, группа 414.»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Студент 4 курса бакалавриата ВМК МГУ, группа 414.&lt;/div&gt;</summary>
		<author><name>MukhayevD</name></author>
	</entry>
</feed>