<?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=Jul305a</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=Jul305a"/>
	<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/Jul305a"/>
	<updated>2026-10-22T20:43:12Z</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=19387</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=19387"/>
		<updated>2016-11-28T15:26:05Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Схема реализации последовательного алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутты&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;4 m n&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;O(m)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
начало;&lt;br /&gt;
&lt;br /&gt;
   ввод начальных параметров (x[0], t0, t1, m);&lt;br /&gt;
&lt;br /&gt;
   цикл по числу узлов сетки: i = 1..m-1&lt;br /&gt;
&lt;br /&gt;
      цикл по числу стадий: j = 1..4&lt;br /&gt;
&lt;br /&gt;
         цикл по числу компонент вектора x: k = 1..n&lt;br /&gt;
&lt;br /&gt;
            вычисление коэффициентов K[j,k,i];&lt;br /&gt;
&lt;br /&gt;
         конец цикла по k;&lt;br /&gt;
&lt;br /&gt;
      конец цикла по j;&lt;br /&gt;
&lt;br /&gt;
      цикл по числу компонент вектора x: k = 1..n&lt;br /&gt;
&lt;br /&gt;
         вычисление x[k,i+1];&lt;br /&gt;
&lt;br /&gt;
      конец цикла по k;&lt;br /&gt;
&lt;br /&gt;
      цикл по числу компонент вектора x: k = 1..n&lt;br /&gt;
&lt;br /&gt;
         сохранение x[k,i] = x[k,i+1];&lt;br /&gt;
&lt;br /&gt;
      конец цикла по k;&lt;br /&gt;
&lt;br /&gt;
      вывод x[i+1];&lt;br /&gt;
&lt;br /&gt;
   конец цикла по n;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и шестнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
[[File:Rkg.png|500px|thumb|center|Информационный граф алгоритма]]&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;n&amp;lt;/math&amp;gt; кратна количество процессоров &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;n = qp&amp;lt;/math&amp;gt;). На каждый из процессоров распределяется и вычисляется последовательно &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; компонент векторов коэффициентов. Далее расчеты проводятся следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[K_1] = [f(t_i, x_i)]&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; целиком на каждом процессоре.&lt;br /&gt;
&lt;br /&gt;
2-4. Аналогичным образом проводятся вычисления и сборка векторов &amp;lt;math&amp;gt;[K_2], [K_3], [K_4]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
5. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[x_{i+1}] = [x_i] + \frac{h}{6} ([K_1] + 2 [K_2] + 2 [K_3] + [K_4])&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; целиком на каждом процессоре. Если вычисления не закончены, то сохраняется &amp;lt;math&amp;gt;[x_{i}] = [x_{i+1}]&amp;lt;/math&amp;gt;, осуществляется переход на 1.&lt;br /&gt;
&lt;br /&gt;
Алгоритм производит четыре обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, шестнадцать операций сложения векторов и умножения вектора на число и четыре операции глобальной сборки векторов. Сложность алгоритма по высоте составляет &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, а сложность по ширине равна &amp;lt;math&amp;gt;q = \frac{n}{p}&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;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Метод Рунге-Кутты 4-го порядка обладает следующими свойствами:&lt;br /&gt;
&lt;br /&gt;
1. Эти метод (как и все семейство методов Рунге-Кутты) является одношаговым: чтобы найти &amp;lt;math&amp;gt;x_{n+1}&amp;lt;/math&amp;gt;, нужна информация об одной предыдущей точке &amp;lt;math&amp;gt;(t_i, x_i)&amp;lt;/math&amp;gt;. (Это позволяет в любой момент изменить шаг интегрирования.)&lt;br /&gt;
&lt;br /&gt;
2. Метод согласуются с рядом Тейлора вплоть до членов порядка &amp;lt;math&amp;gt;4h&amp;lt;/math&amp;gt;. (Используя большее количество вспомогательных точек, можно увеличить точность метода.)&lt;br /&gt;
&lt;br /&gt;
3. Метод не требуют вычисления производных от функции &amp;lt;math&amp;gt;f(t,x)&amp;lt;/math&amp;gt;, а только требует вычисления самой функции.&lt;br /&gt;
&lt;br /&gt;
Точность и устойчивость метода достаточна для широкого круга задач, метод прост в реализации - эти достоинства определили популярность метода среди большого количества исследователей.&lt;br /&gt;
&lt;br /&gt;
Число операций алгоритма равно &amp;lt;math&amp;gt;m (n - 1)&amp;lt;/math&amp;gt;, общее число входных и выходных данных равно &amp;lt;math&amp;gt;mn + m + n + 3&amp;lt;/math&amp;gt;. Следовательно, вычислительная мощность алгоритма &lt;br /&gt;
&amp;lt;math&amp;gt;\frac{mn-m}{mn + m + n + 3} \longrightarrow 1&amp;lt;/math&amp;gt; при увеличении размерности задачи.&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Стандартная схема четвертого порядка реализована в различных математических пакетах: Maple (rkf45), MathCAD (rkfixed), Matlab (ode45).&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] А. В. Старченко, Высокопроизводительные вычисления на кластерах, Издательство Томского университета, 2013, 127-130 с&lt;br /&gt;
&lt;br /&gt;
[2] Л. П. Фельдман, И. А. Назарова, Параллельные алгоритмы численного решения задачи Коши для систем обыкновенных дифференциальных уравнений &lt;br /&gt;
[http://masters.donntu.org/2008/fvti/zavalkin/library/feldman_nazarova2/default.htm]&lt;br /&gt;
&lt;br /&gt;
[3] Е. Е. Тыртышников, Методы численного анализа, М, Академия, 2007&lt;br /&gt;
&lt;br /&gt;
[4] Ващенко Г.В. Явные методы типа Рунге-Кутты и их параллельные аналоги // Численные методы, программные системы и комплексы программ. &lt;br /&gt;
[http://econf.rae.ru/article/5396]&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=19384</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=19384"/>
		<updated>2016-11-28T15:20:32Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Схема реализации последовательного алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутты&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;4 m n&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;O(m)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
начало;&lt;br /&gt;
&lt;br /&gt;
   ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
   цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
      цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
            вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
         конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
      конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
      цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
      конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
      цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
      конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
      вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
   конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и шестнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
[[File:Rkg.png|500px|thumb|center|Информационный граф алгоритма]]&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;n&amp;lt;/math&amp;gt; кратна количество процессоров &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;n = qp&amp;lt;/math&amp;gt;). На каждый из процессоров распределяется и вычисляется последовательно &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; компонент векторов коэффициентов. Далее расчеты проводятся следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[K_1] = [f(t_i, x_i)]&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; целиком на каждом процессоре.&lt;br /&gt;
&lt;br /&gt;
2-4. Аналогичным образом проводятся вычисления и сборка векторов &amp;lt;math&amp;gt;[K_2], [K_3], [K_4]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
5. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[x_{i+1}] = [x_i] + \frac{h}{6} ([K_1] + 2 [K_2] + 2 [K_3] + [K_4])&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; целиком на каждом процессоре. Если вычисления не закончены, то сохраняется &amp;lt;math&amp;gt;[x_{i}] = [x_{i+1}]&amp;lt;/math&amp;gt;, осуществляется переход на 1.&lt;br /&gt;
&lt;br /&gt;
Алгоритм производит четыре обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, шестнадцать операций сложения векторов и умножения вектора на число и четыре операции глобальной сборки векторов. Сложность алгоритма по высоте составляет &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, а сложность по ширине равна &amp;lt;math&amp;gt;q = \frac{n}{p}&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;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Метод Рунге-Кутты 4-го порядка обладает следующими свойствами:&lt;br /&gt;
&lt;br /&gt;
1. Эти метод (как и все семейство методов Рунге-Кутты) является одношаговым: чтобы найти &amp;lt;math&amp;gt;x_{n+1}&amp;lt;/math&amp;gt;, нужна информация об одной предыдущей точке &amp;lt;math&amp;gt;(t_i, x_i)&amp;lt;/math&amp;gt;. (Это позволяет в любой момент изменить шаг интегрирования.)&lt;br /&gt;
&lt;br /&gt;
2. Метод согласуются с рядом Тейлора вплоть до членов порядка &amp;lt;math&amp;gt;4h&amp;lt;/math&amp;gt;. (Используя большее количество вспомогательных точек, можно увеличить точность метода.)&lt;br /&gt;
&lt;br /&gt;
3. Метод не требуют вычисления производных от функции &amp;lt;math&amp;gt;f(t,x)&amp;lt;/math&amp;gt;, а только требует вычисления самой функции.&lt;br /&gt;
&lt;br /&gt;
Точность и устойчивость метода достаточна для широкого круга задач, метод прост в реализации - эти достоинства определили популярность метода среди большого количества исследователей.&lt;br /&gt;
&lt;br /&gt;
Число операций алгоритма равно &amp;lt;math&amp;gt;m (n - 1)&amp;lt;/math&amp;gt;, общее число входных и выходных данных равно &amp;lt;math&amp;gt;mn + m + n + 3&amp;lt;/math&amp;gt;. Следовательно, вычислительная мощность алгоритма &lt;br /&gt;
&amp;lt;math&amp;gt;\frac{mn-m}{mn + m + n + 3} \longrightarrow 1&amp;lt;/math&amp;gt; при увеличении размерности задачи.&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Стандартная схема четвертого порядка реализована в различных математических пакетах: Maple (rkf45), MathCAD (rkfixed), Matlab (ode45).&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] А. В. Старченко, Высокопроизводительные вычисления на кластерах, Издательство Томского университета, 2013, 127-130 с&lt;br /&gt;
&lt;br /&gt;
[2] Л. П. Фельдман, И. А. Назарова, Параллельные алгоритмы численного решения задачи Коши для систем обыкновенных дифференциальных уравнений &lt;br /&gt;
[http://masters.donntu.org/2008/fvti/zavalkin/library/feldman_nazarova2/default.htm]&lt;br /&gt;
&lt;br /&gt;
[3] Е. Е. Тыртышников, Методы численного анализа, М, Академия, 2007&lt;br /&gt;
&lt;br /&gt;
[4] Ващенко Г.В. Явные методы типа Рунге-Кутты и их параллельные аналоги // Численные методы, программные системы и комплексы программ. &lt;br /&gt;
[http://econf.rae.ru/article/5396]&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=19376</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=19376"/>
		<updated>2016-11-28T15:14:42Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Свойства алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутты&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;4 m n&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;O(m)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и шестнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
[[File:Rkg.png|500px|thumb|center|Информационный граф алгоритма]]&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;n&amp;lt;/math&amp;gt; кратна количество процессоров &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;n = qp&amp;lt;/math&amp;gt;). На каждый из процессоров распределяется и вычисляется последовательно &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; компонент векторов коэффициентов. Далее расчеты проводятся следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[K_1] = [f(t_i, x_i)]&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; целиком на каждом процессоре.&lt;br /&gt;
&lt;br /&gt;
2-4. Аналогичным образом проводятся вычисления и сборка векторов &amp;lt;math&amp;gt;[K_2], [K_3], [K_4]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
5. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[x_{i+1}] = [x_i] + \frac{h}{6} ([K_1] + 2 [K_2] + 2 [K_3] + [K_4])&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; целиком на каждом процессоре. Если вычисления не закончены, то сохраняется &amp;lt;math&amp;gt;[x_{i}] = [x_{i+1}]&amp;lt;/math&amp;gt;, осуществляется переход на 1.&lt;br /&gt;
&lt;br /&gt;
Алгоритм производит четыре обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, шестнадцать операций сложения векторов и умножения вектора на число и четыре операции глобальной сборки векторов. Сложность алгоритма по высоте составляет &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, а сложность по ширине равна &amp;lt;math&amp;gt;q = \frac{n}{p}&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;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Метод Рунге-Кутты 4-го порядка обладает следующими свойствами:&lt;br /&gt;
&lt;br /&gt;
1. Эти метод (как и все семейство методов Рунге-Кутты) является одношаговым: чтобы найти &amp;lt;math&amp;gt;x_{n+1}&amp;lt;/math&amp;gt;, нужна информация об одной предыдущей точке &amp;lt;math&amp;gt;(t_i, x_i)&amp;lt;/math&amp;gt;. (Это позволяет в любой момент изменить шаг интегрирования.)&lt;br /&gt;
&lt;br /&gt;
2. Метод согласуются с рядом Тейлора вплоть до членов порядка &amp;lt;math&amp;gt;4h&amp;lt;/math&amp;gt;. (Используя большее количество вспомогательных точек, можно увеличить точность метода.)&lt;br /&gt;
&lt;br /&gt;
3. Метод не требуют вычисления производных от функции &amp;lt;math&amp;gt;f(t,x)&amp;lt;/math&amp;gt;, а только требует вычисления самой функции.&lt;br /&gt;
&lt;br /&gt;
Точность и устойчивость метода достаточна для широкого круга задач, метод прост в реализации - эти достоинства определили популярность метода среди большого количества исследователей.&lt;br /&gt;
&lt;br /&gt;
Число операций алгоритма равно &amp;lt;math&amp;gt;m (n - 1)&amp;lt;/math&amp;gt;, общее число входных и выходных данных равно &amp;lt;math&amp;gt;mn + m + n + 3&amp;lt;/math&amp;gt;. Следовательно, вычислительная мощность алгоритма &lt;br /&gt;
&amp;lt;math&amp;gt;\frac{mn-m}{mn + m + n + 3} \longrightarrow 1&amp;lt;/math&amp;gt; при увеличении размерности задачи.&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Стандартная схема четвертого порядка реализована в различных математических пакетах: Maple (rkf45), MathCAD (rkfixed), Matlab (ode45).&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] А. В. Старченко, Высокопроизводительные вычисления на кластерах, Издательство Томского университета, 2013, 127-130 с&lt;br /&gt;
&lt;br /&gt;
[2] Л. П. Фельдман, И. А. Назарова, Параллельные алгоритмы численного решения задачи Коши для систем обыкновенных дифференциальных уравнений &lt;br /&gt;
[http://masters.donntu.org/2008/fvti/zavalkin/library/feldman_nazarova2/default.htm]&lt;br /&gt;
&lt;br /&gt;
[3] Е. Е. Тыртышников, Методы численного анализа, М, Академия, 2007&lt;br /&gt;
&lt;br /&gt;
[4] Ващенко Г.В. Явные методы типа Рунге-Кутты и их параллельные аналоги // Численные методы, программные системы и комплексы программ. &lt;br /&gt;
[http://econf.rae.ru/article/5396]&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=7113</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=7113"/>
		<updated>2016-10-14T08:08:39Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment}}&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутты&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;4 m n&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;O(m)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и шестнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
[[File:Rkg.png|500px|thumb|center|Информационный граф алгоритма]]&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;n&amp;lt;/math&amp;gt; кратна количество процессоров &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;n = qp&amp;lt;/math&amp;gt;). На каждый из процессоров распределяется и вычисляется последовательно &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; компонент векторов коэффициентов. Далее расчеты проводятся следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[K_1] = [f(t_i, x_i)]&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; целиком на каждом процессоре.&lt;br /&gt;
&lt;br /&gt;
2-4. Аналогичным образом проводятся вычисления и сборка векторов &amp;lt;math&amp;gt;[K_2], [K_3], [K_4]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
5. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[x_{i+1}] = [x_i] + \frac{h}{6} ([K_1] + 2 [K_2] + 2 [K_3] + [K_4])&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; целиком на каждом процессоре. Если вычисления не закончены, то сохраняется &amp;lt;math&amp;gt;[x_{i}] = [x_{i+1}]&amp;lt;/math&amp;gt;, осуществляется переход на 1.&lt;br /&gt;
&lt;br /&gt;
Алгоритм производит четыре обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, шестнадцать операций сложения векторов и умножения вектора на число и четыре операции глобальной сборки векторов. Сложность алгоритма по высоте составляет &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, а сложность по ширине равна &amp;lt;math&amp;gt;q = \frac{n}{p}&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;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Метод Рунге-Кутты 4-го порядка обладает следующими свойствами:&lt;br /&gt;
&lt;br /&gt;
1. Эти метод (как и все семейство методов Рунге-Кутты) является одношаговыми: чтобы найти &amp;lt;math&amp;gt;x_{n+1}&amp;lt;/math&amp;gt;, нужна информация об одной предыдущей точке &amp;lt;math&amp;gt;(t_i, x_i)&amp;lt;/math&amp;gt;. (Это позволяет в любой момент изменить шаг интегрирования.)&lt;br /&gt;
&lt;br /&gt;
2. Метод согласуются с рядом Тейлора вплоть до членов порядка 4h. (Используя большее количество вспомогательных точек, можно увеличить точность метода.)&lt;br /&gt;
&lt;br /&gt;
3. Метод не требуют вычисления производных от функции &amp;lt;math&amp;gt;f(t,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;
Стандартная схема четвертого порядка реализована в различных математических пакетах: Maple (rkf45), MathCAD (rkfixed), Matlab (ode45).&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] А. В. Старченко, Высокопроизводительные вычисления на кластерах, Издательство Томского университета, 2013, 127-130 с&lt;br /&gt;
&lt;br /&gt;
[2] Л. П. Фельдман, И. А. Назарова, Параллельные алгоритмы численного решения задачи Коши для систем обыкновенных дифференциальных уравнений &lt;br /&gt;
[http://masters.donntu.org/2008/fvti/zavalkin/library/feldman_nazarova2/default.htm]&lt;br /&gt;
&lt;br /&gt;
[3] Е. Е. Тыртышников, Методы численного анализа, М, Академия, 2007&lt;br /&gt;
&lt;br /&gt;
[4] Ващенко Г.В. Явные методы типа Рунге-Кутты и их параллельные аналоги // Численные методы, программные системы и комплексы программ. &lt;br /&gt;
[http://econf.rae.ru/article/5396]&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=7110</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=7110"/>
		<updated>2016-10-14T08:05:57Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутты&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;4 m n&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;O(m)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и шестнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
[[File:Rkg.png|500px|thumb|center|Информационный граф алгоритма]]&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;n&amp;lt;/math&amp;gt; кратна количество процессоров &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;n = qp&amp;lt;/math&amp;gt;). На каждый из процессоров распределяется и вычисляется последовательно &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; компонент векторов коэффициентов. Далее расчеты проводятся следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[K_1] = [f(t_i, x_i)]&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; целиком на каждом процессоре.&lt;br /&gt;
&lt;br /&gt;
2-4. Аналогичным образом проводятся вычисления и сборка векторов &amp;lt;math&amp;gt;[K_2], [K_3], [K_4]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
5. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[x_{i+1}] = [x_i] + \frac{h}{6} ([K_1] + 2 [K_2] + 2 [K_3] + [K_4])&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; целиком на каждом процессоре. Если вычисления не закончены, то сохраняется &amp;lt;math&amp;gt;[x_{i}] = [x_{i+1}]&amp;lt;/math&amp;gt;, осуществляется переход на 1.&lt;br /&gt;
&lt;br /&gt;
Алгоритм производит четыре обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, шестнадцать операций сложения векторов и умножения вектора на число и четыре операции глобальной сборки векторов. Сложность алгоритма по высоте составляет &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, а сложность по ширине равна &amp;lt;math&amp;gt;q = \frac{n}{p}&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;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Метод Рунге-Кутты 4-го порядка обладает следующими свойствами:&lt;br /&gt;
&lt;br /&gt;
1. Эти метод (как и все семейство методов Рунге-Кутты) является одношаговыми: чтобы найти &amp;lt;math&amp;gt;x_{n+1}&amp;lt;/math&amp;gt;, нужна информация об одной предыдущей точке &amp;lt;math&amp;gt;(t_i, x_i)&amp;lt;/math&amp;gt;. (Это позволяет в любой момент изменить шаг интегрирования.)&lt;br /&gt;
&lt;br /&gt;
2. Метод согласуются с рядом Тейлора вплоть до членов порядка 4h. (Используя большее количество вспомогательных точек, можно увеличить точность метода.)&lt;br /&gt;
&lt;br /&gt;
3. Метод не требуют вычисления производных от функции &amp;lt;math&amp;gt;f(t,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;
Стандартная схема четвертого порядка реализована в различных математических пакетах: Maple (rkf45), MathCAD (rkfixed), Matlab (ode45).&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] А. В. Старченко, Высокопроизводительные вычисления на кластерах, Издательство Томского университета, 2013, 127-130 с&lt;br /&gt;
&lt;br /&gt;
[2] Л. П. Фельдман, И. А. Назарова, Параллельные алгоритмы численного решения задачи Коши для систем обыкновенных дифференциальных уравнений &lt;br /&gt;
[http://masters.donntu.org/2008/fvti/zavalkin/library/feldman_nazarova2/default.htm]&lt;br /&gt;
&lt;br /&gt;
[3] Е. Е. Тыртышников, Методы численного анализа, М, Академия, 2007&lt;br /&gt;
&lt;br /&gt;
[4] Ващенко Г.В. Явные методы типа Рунге-Кутты и их параллельные аналоги // Численные методы, программные системы и комплексы программ. &lt;br /&gt;
[http://econf.rae.ru/article/5396]&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=7108</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=7108"/>
		<updated>2016-10-14T08:05:10Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутты&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(m n)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;O(m)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и шестнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
[[File:Rkg.png|500px|thumb|center|Информационный граф алгоритма]]&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;n&amp;lt;/math&amp;gt; кратна количество процессоров &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;n = qp&amp;lt;/math&amp;gt;). На каждый из процессоров распределяется и вычисляется последовательно &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; компонент векторов коэффициентов. Далее расчеты проводятся следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[K_1] = [f(t_i, x_i)]&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; целиком на каждом процессоре.&lt;br /&gt;
&lt;br /&gt;
2-4. Аналогичным образом проводятся вычисления и сборка векторов &amp;lt;math&amp;gt;[K_2], [K_3], [K_4]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
5. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[x_{i+1}] = [x_i] + \frac{h}{6} ([K_1] + 2 [K_2] + 2 [K_3] + [K_4])&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; целиком на каждом процессоре. Если вычисления не закончены, то сохраняется &amp;lt;math&amp;gt;[x_{i}] = [x_{i+1}]&amp;lt;/math&amp;gt;, осуществляется переход на 1.&lt;br /&gt;
&lt;br /&gt;
Алгоритм производит четыре обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, шестнадцать операций сложения векторов и умножения вектора на число и четыре операции глобальной сборки векторов. Сложность алгоритма по высоте составляет &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, а сложность по ширине равна &amp;lt;math&amp;gt;q = \frac{n}{p}&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;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Метод Рунге-Кутты 4-го порядка обладает следующими свойствами:&lt;br /&gt;
&lt;br /&gt;
1. Эти метод (как и все семейство методов Рунге-Кутты) является одношаговыми: чтобы найти &amp;lt;math&amp;gt;x_{n+1}&amp;lt;/math&amp;gt;, нужна информация об одной предыдущей точке &amp;lt;math&amp;gt;(t_i, x_i)&amp;lt;/math&amp;gt;. (Это позволяет в любой момент изменить шаг интегрирования.)&lt;br /&gt;
&lt;br /&gt;
2. Метод согласуются с рядом Тейлора вплоть до членов порядка 4h. (Используя большее количество вспомогательных точек, можно увеличить точность метода.)&lt;br /&gt;
&lt;br /&gt;
3. Метод не требуют вычисления производных от функции &amp;lt;math&amp;gt;f(t,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;
Стандартная схема четвертого порядка реализована в различных математических пакетах: Maple (rkf45), MathCAD (rkfixed), Matlab (ode45).&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] А. В. Старченко, Высокопроизводительные вычисления на кластерах, Издательство Томского университета, 2013, 127-130 с&lt;br /&gt;
&lt;br /&gt;
[2] Л. П. Фельдман, И. А. Назарова, Параллельные алгоритмы численного решения задачи Коши для систем обыкновенных дифференциальных уравнений &lt;br /&gt;
[http://masters.donntu.org/2008/fvti/zavalkin/library/feldman_nazarova2/default.htm]&lt;br /&gt;
&lt;br /&gt;
[3] Е. Е. Тыртышников, Методы численного анализа, М, Академия, 2007&lt;br /&gt;
&lt;br /&gt;
[4] Ващенко Г.В. Явные методы типа Рунге-Кутты и их параллельные аналоги // Численные методы, программные системы и комплексы программ. &lt;br /&gt;
[http://econf.rae.ru/article/5396]&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=7105</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=7105"/>
		<updated>2016-10-14T08:03:58Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Ресурс параллелизма алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутты&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;4 m n&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и шестнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
[[File:Rkg.png|500px|thumb|center|Информационный граф алгоритма]]&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;n&amp;lt;/math&amp;gt; кратна количество процессоров &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;n = qp&amp;lt;/math&amp;gt;). На каждый из процессоров распределяется и вычисляется последовательно &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; компонент векторов коэффициентов. Далее расчеты проводятся следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[K_1] = [f(t_i, x_i)]&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; целиком на каждом процессоре.&lt;br /&gt;
&lt;br /&gt;
2-4. Аналогичным образом проводятся вычисления и сборка векторов &amp;lt;math&amp;gt;[K_2], [K_3], [K_4]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
5. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[x_{i+1}] = [x_i] + \frac{h}{6} ([K_1] + 2 [K_2] + 2 [K_3] + [K_4])&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; целиком на каждом процессоре. Если вычисления не закончены, то сохраняется &amp;lt;math&amp;gt;[x_{i}] = [x_{i+1}]&amp;lt;/math&amp;gt;, осуществляется переход на 1.&lt;br /&gt;
&lt;br /&gt;
Алгоритм производит четыре обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, шестнадцать операций сложения векторов и умножения вектора на число и четыре операции глобальной сборки векторов. Сложность алгоритма по высоте составляет &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, а сложность по ширине равна &amp;lt;math&amp;gt;q = \frac{n}{p}&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;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Метод Рунге-Кутты 4-го порядка обладает следующими свойствами:&lt;br /&gt;
&lt;br /&gt;
1. Эти метод (как и все семейство методов Рунге-Кутты) является одношаговыми: чтобы найти &amp;lt;math&amp;gt;x_{n+1}&amp;lt;/math&amp;gt;, нужна информация об одной предыдущей точке &amp;lt;math&amp;gt;(t_i, x_i)&amp;lt;/math&amp;gt;. (Это позволяет в любой момент изменить шаг интегрирования.)&lt;br /&gt;
&lt;br /&gt;
2. Метод согласуются с рядом Тейлора вплоть до членов порядка 4h. (Используя большее количество вспомогательных точек, можно увеличить точность метода.)&lt;br /&gt;
&lt;br /&gt;
3. Метод не требуют вычисления производных от функции &amp;lt;math&amp;gt;f(t,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;
Стандартная схема четвертого порядка реализована в различных математических пакетах: Maple (rkf45), MathCAD (rkfixed), Matlab (ode45).&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] А. В. Старченко, Высокопроизводительные вычисления на кластерах, Издательство Томского университета, 2013, 127-130 с&lt;br /&gt;
&lt;br /&gt;
[2] Л. П. Фельдман, И. А. Назарова, Параллельные алгоритмы численного решения задачи Коши для систем обыкновенных дифференциальных уравнений &lt;br /&gt;
[http://masters.donntu.org/2008/fvti/zavalkin/library/feldman_nazarova2/default.htm]&lt;br /&gt;
&lt;br /&gt;
[3] Е. Е. Тыртышников, Методы численного анализа, М, Академия, 2007&lt;br /&gt;
&lt;br /&gt;
[4] Ващенко Г.В. Явные методы типа Рунге-Кутты и их параллельные аналоги // Численные методы, программные системы и комплексы программ. &lt;br /&gt;
[http://econf.rae.ru/article/5396]&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=7103</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=7103"/>
		<updated>2016-10-14T07:58:12Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Свойства алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутты&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;4 m n&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и шестнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
[[File:Rkg.png|500px|thumb|center|Информационный граф алгоритма]]&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;n&amp;lt;/math&amp;gt; кратна количество процессоров &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;n = qp&amp;lt;/math&amp;gt;). На каждый из процессоров распределяется и вычисляется последовательно &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; компонент векторов коэффициентов. Далее расчеты проводятся следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[K_1] = [f(t_i, x_i)]&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; целиком на каждом процессоре.&lt;br /&gt;
&lt;br /&gt;
2-4. Аналогичным образом проводятся вычисления и сборка векторов &amp;lt;math&amp;gt;[K_2], [K_3], [K_4]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
5. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[x_{i+1}] = [x_i] + \frac{h}{6} ([K_1] + 2 [K_2] + 2 [K_3] + [K_4])&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; целиком на каждом процессоре. Если вычисления не закончены, то сохраняется &amp;lt;math&amp;gt;[x_{i}] = [x_{i+1}]&amp;lt;/math&amp;gt;, осуществляется переход на 1.&lt;br /&gt;
&lt;br /&gt;
Алгоритм производит четыре обращения к функции &amp;lt;math&amp;gt;f&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;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Метод Рунге-Кутты 4-го порядка обладает следующими свойствами:&lt;br /&gt;
&lt;br /&gt;
1. Эти метод (как и все семейство методов Рунге-Кутты) является одношаговыми: чтобы найти &amp;lt;math&amp;gt;x_{n+1}&amp;lt;/math&amp;gt;, нужна информация об одной предыдущей точке &amp;lt;math&amp;gt;(t_i, x_i)&amp;lt;/math&amp;gt;. (Это позволяет в любой момент изменить шаг интегрирования.)&lt;br /&gt;
&lt;br /&gt;
2. Метод согласуются с рядом Тейлора вплоть до членов порядка 4h. (Используя большее количество вспомогательных точек, можно увеличить точность метода.)&lt;br /&gt;
&lt;br /&gt;
3. Метод не требуют вычисления производных от функции &amp;lt;math&amp;gt;f(t,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;
Стандартная схема четвертого порядка реализована в различных математических пакетах: Maple (rkf45), MathCAD (rkfixed), Matlab (ode45).&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] А. В. Старченко, Высокопроизводительные вычисления на кластерах, Издательство Томского университета, 2013, 127-130 с&lt;br /&gt;
&lt;br /&gt;
[2] Л. П. Фельдман, И. А. Назарова, Параллельные алгоритмы численного решения задачи Коши для систем обыкновенных дифференциальных уравнений &lt;br /&gt;
[http://masters.donntu.org/2008/fvti/zavalkin/library/feldman_nazarova2/default.htm]&lt;br /&gt;
&lt;br /&gt;
[3] Е. Е. Тыртышников, Методы численного анализа, М, Академия, 2007&lt;br /&gt;
&lt;br /&gt;
[4] Ващенко Г.В. Явные методы типа Рунге-Кутты и их параллельные аналоги // Численные методы, программные системы и комплексы программ. &lt;br /&gt;
[http://econf.rae.ru/article/5396]&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=7079</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=7079"/>
		<updated>2016-10-14T07:23:48Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутты&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;4 m n&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и шестнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
[[File:Rkg.png|500px|thumb|center|Информационный граф алгоритма]]&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;n&amp;lt;/math&amp;gt; кратна количество процессоров &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;n = qp&amp;lt;/math&amp;gt;). На каждый из процессоров распределяется и вычисляется последовательно &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; компонент векторов коэффициентов. Далее расчеты проводятся следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[K_1] = [f(t_i, x_i)]&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; целиком на каждом процессоре.&lt;br /&gt;
&lt;br /&gt;
2-4. Аналогичным образом проводятся вычисления и сборка векторов &amp;lt;math&amp;gt;[K_2], [K_3], [K_4]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
5. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[x_{i+1}] = [x_i] + \frac{h}{6} ([K_1] + 2 [K_2] + 2 [K_3] + [K_4])&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; целиком на каждом процессоре. Если вычисления не закончены, то сохраняется &amp;lt;math&amp;gt;[x_{i}] = [x_{i+1}]&amp;lt;/math&amp;gt;, осуществляется переход на 1.&lt;br /&gt;
&lt;br /&gt;
Алгоритм производит четыре обращения к функции &amp;lt;math&amp;gt;f&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;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Метод Рунге-Кутты 4-го порядка обладает следующими свойствами:&lt;br /&gt;
&lt;br /&gt;
1. Эти метод (как и все семейство методов Рунге-Кутты) является одношаговыми: чтобы найти &amp;lt;math&amp;gt;x_{n+1}&amp;lt;/math&amp;gt;, нужна информация об одной предыдущей точке &amp;lt;math&amp;gt;(t_i, x_i)&amp;lt;/math&amp;gt;. (Это позволяет в любой момент изменить шаг интегрирования.)&lt;br /&gt;
&lt;br /&gt;
2. Метод согласуются с рядом Тейлора вплоть до членов порядка 4h. (Используя большее количество вспомогательных точек, можно увеличить точность метода.)&lt;br /&gt;
&lt;br /&gt;
3. Метод не требуют вычисления производных от функции &amp;lt;math&amp;gt;f(t,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;
Стандартная схема четвертого порядка реализована в различных математических пакетах: Maple (rkf45), MathCAD (rkfixed), Matlab (ode45).&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] А. В. Старченко, Высокопроизводительные вычисления на кластерах, Издательство Томского университета, 2013, 127-130 с&lt;br /&gt;
&lt;br /&gt;
[2] Л. П. Фельдман, И. А. Назарова, Параллельные алгоритмы численного решения задачи Коши для систем обыкновенных дифференциальных уравнений &lt;br /&gt;
[http://masters.donntu.org/2008/fvti/zavalkin/library/feldman_nazarova2/default.htm]&lt;br /&gt;
&lt;br /&gt;
[3] Е. Е. Тыртышников, Методы численного анализа, М, Академия, 2007&lt;br /&gt;
&lt;br /&gt;
[4] Ващенко Г.В. Явные методы типа Рунге-Кутты и их параллельные аналоги // Численные методы, программные системы и комплексы программ. &lt;br /&gt;
[http://econf.rae.ru/article/5396]&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=7078</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=7078"/>
		<updated>2016-10-14T07:23:15Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment}}&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутты&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;4 m n&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и шестнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
[[File:Rkg.png|500px|thumb|center|Информационный граф алгоритма]]&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;n&amp;lt;/math&amp;gt; кратна количество процессоров &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;n = qp&amp;lt;/math&amp;gt;). На каждый из процессоров распределяется и вычисляется последовательно &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; компонент векторов коэффициентов. Далее расчеты проводятся следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[K_1] = [f(t_i, x_i)]&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; целиком на каждом процессоре.&lt;br /&gt;
&lt;br /&gt;
2-4. Аналогичным образом проводятся вычисления и сборка векторов &amp;lt;math&amp;gt;[K_2], [K_3], [K_4]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
5. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[x_{i+1}] = [x_i] + \frac{h}{6} ([K_1] + 2 [K_2] + 2 [K_3] + [K_4])&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; целиком на каждом процессоре. Если вычисления не закончены, то сохраняется &amp;lt;math&amp;gt;[x_{i}] = [x_{i+1}]&amp;lt;/math&amp;gt;, осуществляется переход на 1.&lt;br /&gt;
&lt;br /&gt;
Алгоритм производит четыре обращения к функции &amp;lt;math&amp;gt;f&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;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Метод Рунге-Кутты 4-го порядка обладает следующими свойствами:&lt;br /&gt;
&lt;br /&gt;
1. Эти метод (как и все семейство методов Рунге-Кутты) является одношаговыми: чтобы найти &amp;lt;math&amp;gt;x_{n+1}&amp;lt;/math&amp;gt;, нужна информация об одной предыдущей точке &amp;lt;math&amp;gt;(t_i, x_i)&amp;lt;/math&amp;gt;. (Это позволяет в любой момент изменить шаг интегрирования.)&lt;br /&gt;
&lt;br /&gt;
2. Метод согласуются с рядом Тейлора вплоть до членов порядка 4h. (Используя большее количество вспомогательных точек, можно увеличить точность метода.)&lt;br /&gt;
&lt;br /&gt;
3. Метод не требуют вычисления производных от функции &amp;lt;math&amp;gt;f(t,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;
Стандартная схема четвертого порядка реализована в различных математических пакетах: Maple (rkf45), MathCAD (rkfixed), Matlab (ode45).&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] А. В. Старченко, Высокопроизводительные вычисления на кластерах, Издательство Томского университета, 2013, 127-130 с&lt;br /&gt;
&lt;br /&gt;
[2] Л. П. Фельдман, И. А. Назарова, Параллельные алгоритмы численного решения задачи Коши для систем обыкновенных дифференциальных уравнений &lt;br /&gt;
[http://masters.donntu.org/2008/fvti/zavalkin/library/feldman_nazarova2/default.htm]&lt;br /&gt;
&lt;br /&gt;
[3] Е. Е. Тыртышников, Методы численного анализа, М, Академия, 2007&lt;br /&gt;
&lt;br /&gt;
[4] Ващенко Г.В. Явные методы типа Рунге-Кутты и их параллельные аналоги // Численные методы, программные системы и комплексы программ. &lt;br /&gt;
[http://econf.rae.ru/article/5396]&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6545</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6545"/>
		<updated>2016-10-13T15:22:47Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутты&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;4 m n&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и шестнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
[[File:Rkg.png|500px|thumb|center|Информационный граф алгоритма]]&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;n&amp;lt;/math&amp;gt; кратна количество процессоров &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;n = qp&amp;lt;/math&amp;gt;). На каждый из процессоров распределяется и вычисляется последовательно &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; компонент векторов коэффициентов. Далее расчеты проводятся следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[K_1] = [f(t_i, x_i)]&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; целиком на каждом процессоре.&lt;br /&gt;
&lt;br /&gt;
2-4. Аналогичным образом проводятся вычисления и сборка векторов &amp;lt;math&amp;gt;[K_2], [K_3], [K_4]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
5. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[x_{i+1}] = [x_i] + \frac{h}{6} ([K_1] + 2 [K_2] + 2 [K_3] + [K_4])&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; целиком на каждом процессоре. Если вычисления не закончены, то сохраняется &amp;lt;math&amp;gt;[x_{i}] = [x_{i+1}]&amp;lt;/math&amp;gt;, осуществляется переход на 1.&lt;br /&gt;
&lt;br /&gt;
Алгоритм производит четыре обращения к функции &amp;lt;math&amp;gt;f&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;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Метод Рунге-Кутты 4-го порядка обладает следующими свойствами:&lt;br /&gt;
&lt;br /&gt;
1. Эти метод (как и все семейство методов Рунге-Кутты) является одношаговыми: чтобы найти &amp;lt;math&amp;gt;x_{n+1}&amp;lt;/math&amp;gt;, нужна информация об одной предыдущей точке &amp;lt;math&amp;gt;(t_i, x_i)&amp;lt;/math&amp;gt;. (Это позволяет в любой момент изменить шаг интегрирования.)&lt;br /&gt;
&lt;br /&gt;
2. Метод согласуются с рядом Тейлора вплоть до членов порядка 4h. (Используя большее количество вспомогательных точек, можно увеличить точность метода.)&lt;br /&gt;
&lt;br /&gt;
3. Метод не требуют вычисления производных от функции &amp;lt;math&amp;gt;f(t,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;
Стандартная схема четвертого порядка реализована в различных математических пакетах: Maple (rkf45), MathCAD (rkfixed), Matlab (ode45).&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] А. В. Старченко, Высокопроизводительные вычисления на кластерах, Издательство Томского университета, 2013, 127-130 с&lt;br /&gt;
&lt;br /&gt;
[2] Л. П. Фельдман, И. А. Назарова, Параллельные алгоритмы численного решения задачи Коши для систем обыкновенных дифференциальных уравнений &lt;br /&gt;
[http://masters.donntu.org/2008/fvti/zavalkin/library/feldman_nazarova2/default.htm]&lt;br /&gt;
&lt;br /&gt;
[3] Е. Е. Тыртышников, Методы численного анализа, М, Академия, 2007&lt;br /&gt;
&lt;br /&gt;
[4] Ващенко Г.В. Явные методы типа Рунге-Кутты и их параллельные аналоги // Численные методы, программные системы и комплексы программ. &lt;br /&gt;
[http://econf.rae.ru/article/5396]&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6544</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6544"/>
		<updated>2016-10-13T15:22:36Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Общее описание алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;4 m n&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и шестнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
[[File:Rkg.png|500px|thumb|center|Информационный граф алгоритма]]&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;n&amp;lt;/math&amp;gt; кратна количество процессоров &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;n = qp&amp;lt;/math&amp;gt;). На каждый из процессоров распределяется и вычисляется последовательно &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; компонент векторов коэффициентов. Далее расчеты проводятся следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[K_1] = [f(t_i, x_i)]&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; целиком на каждом процессоре.&lt;br /&gt;
&lt;br /&gt;
2-4. Аналогичным образом проводятся вычисления и сборка векторов &amp;lt;math&amp;gt;[K_2], [K_3], [K_4]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
5. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[x_{i+1}] = [x_i] + \frac{h}{6} ([K_1] + 2 [K_2] + 2 [K_3] + [K_4])&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; целиком на каждом процессоре. Если вычисления не закончены, то сохраняется &amp;lt;math&amp;gt;[x_{i}] = [x_{i+1}]&amp;lt;/math&amp;gt;, осуществляется переход на 1.&lt;br /&gt;
&lt;br /&gt;
Алгоритм производит четыре обращения к функции &amp;lt;math&amp;gt;f&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;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Метод Рунге-Кутты 4-го порядка обладает следующими свойствами:&lt;br /&gt;
&lt;br /&gt;
1. Эти метод (как и все семейство методов Рунге-Кутты) является одношаговыми: чтобы найти &amp;lt;math&amp;gt;x_{n+1}&amp;lt;/math&amp;gt;, нужна информация об одной предыдущей точке &amp;lt;math&amp;gt;(t_i, x_i)&amp;lt;/math&amp;gt;. (Это позволяет в любой момент изменить шаг интегрирования.)&lt;br /&gt;
&lt;br /&gt;
2. Метод согласуются с рядом Тейлора вплоть до членов порядка 4h. (Используя большее количество вспомогательных точек, можно увеличить точность метода.)&lt;br /&gt;
&lt;br /&gt;
3. Метод не требуют вычисления производных от функции &amp;lt;math&amp;gt;f(t,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;
Стандартная схема четвертого порядка реализована в различных математических пакетах: Maple (rkf45), MathCAD (rkfixed), Matlab (ode45).&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] А. В. Старченко, Высокопроизводительные вычисления на кластерах, Издательство Томского университета, 2013, 127-130 с&lt;br /&gt;
&lt;br /&gt;
[2] Л. П. Фельдман, И. А. Назарова, Параллельные алгоритмы численного решения задачи Коши для систем обыкновенных дифференциальных уравнений &lt;br /&gt;
[http://masters.donntu.org/2008/fvti/zavalkin/library/feldman_nazarova2/default.htm]&lt;br /&gt;
&lt;br /&gt;
[3] Е. Е. Тыртышников, Методы численного анализа, М, Академия, 2007&lt;br /&gt;
&lt;br /&gt;
[4] Ващенко Г.В. Явные методы типа Рунге-Кутты и их параллельные аналоги // Численные методы, программные системы и комплексы программ. &lt;br /&gt;
[http://econf.rae.ru/article/5396]&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6541</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6541"/>
		<updated>2016-10-13T15:20:58Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;4 m n&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и шестнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
[[File:Rkg.png|500px|thumb|center|Информационный граф алгоритма]]&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;n&amp;lt;/math&amp;gt; кратна количество процессоров &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;n = qp&amp;lt;/math&amp;gt;). На каждый из процессоров распределяется и вычисляется последовательно &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; компонент векторов коэффициентов. Далее расчеты проводятся следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[K_1] = [f(t_i, x_i)]&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; целиком на каждом процессоре.&lt;br /&gt;
&lt;br /&gt;
2-4. Аналогичным образом проводятся вычисления и сборка векторов &amp;lt;math&amp;gt;[K_2], [K_3], [K_4]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
5. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[x_{i+1}] = [x_i] + \frac{h}{6} ([K_1] + 2 [K_2] + 2 [K_3] + [K_4])&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; целиком на каждом процессоре. Если вычисления не закончены, то сохраняется &amp;lt;math&amp;gt;[x_{i}] = [x_{i+1}]&amp;lt;/math&amp;gt;, осуществляется переход на 1.&lt;br /&gt;
&lt;br /&gt;
Алгоритм производит четыре обращения к функции &amp;lt;math&amp;gt;f&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;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Метод Рунге-Кутты 4-го порядка обладает следующими свойствами:&lt;br /&gt;
&lt;br /&gt;
1. Эти метод (как и все семейство методов Рунге-Кутты) является одношаговыми: чтобы найти &amp;lt;math&amp;gt;x_{n+1}&amp;lt;/math&amp;gt;, нужна информация об одной предыдущей точке &amp;lt;math&amp;gt;(t_i, x_i)&amp;lt;/math&amp;gt;. (Это позволяет в любой момент изменить шаг интегрирования.)&lt;br /&gt;
&lt;br /&gt;
2. Метод согласуются с рядом Тейлора вплоть до членов порядка 4h. (Используя большее количество вспомогательных точек, можно увеличить точность метода.)&lt;br /&gt;
&lt;br /&gt;
3. Метод не требуют вычисления производных от функции &amp;lt;math&amp;gt;f(t,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;
Стандартная схема четвертого порядка реализована в различных математических пакетах: Maple (rkf45), MathCAD (rkfixed), Matlab (ode45).&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] А. В. Старченко, Высокопроизводительные вычисления на кластерах, Издательство Томского университета, 2013, 127-130 с&lt;br /&gt;
&lt;br /&gt;
[2] Л. П. Фельдман, И. А. Назарова, Параллельные алгоритмы численного решения задачи Коши для систем обыкновенных дифференциальных уравнений &lt;br /&gt;
[http://masters.donntu.org/2008/fvti/zavalkin/library/feldman_nazarova2/default.htm]&lt;br /&gt;
&lt;br /&gt;
[3] Е. Е. Тыртышников, Методы численного анализа, М, Академия, 2007&lt;br /&gt;
&lt;br /&gt;
[4] Ващенко Г.В. Явные методы типа Рунге-Кутты и их параллельные аналоги // Численные методы, программные системы и комплексы программ. &lt;br /&gt;
[http://econf.rae.ru/article/5396]&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6540</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6540"/>
		<updated>2016-10-13T15:20:03Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;4 m n&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и шестнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
[[File:Rkg.png]]&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;n&amp;lt;/math&amp;gt; кратна количество процессоров &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;n = qp&amp;lt;/math&amp;gt;). На каждый из процессоров распределяется и вычисляется последовательно &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; компонент векторов коэффициентов. Далее расчеты проводятся следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[K_1] = [f(t_i, x_i)]&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; целиком на каждом процессоре.&lt;br /&gt;
&lt;br /&gt;
2-4. Аналогичным образом проводятся вычисления и сборка векторов &amp;lt;math&amp;gt;[K_2], [K_3], [K_4]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
5. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[x_{i+1}] = [x_i] + \frac{h}{6} ([K_1] + 2 [K_2] + 2 [K_3] + [K_4])&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; целиком на каждом процессоре. Если вычисления не закончены, то сохраняется &amp;lt;math&amp;gt;[x_{i}] = [x_{i+1}]&amp;lt;/math&amp;gt;, осуществляется переход на 1.&lt;br /&gt;
&lt;br /&gt;
Алгоритм производит четыре обращения к функции &amp;lt;math&amp;gt;f&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;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Метод Рунге-Кутты 4-го порядка обладает следующими свойствами:&lt;br /&gt;
&lt;br /&gt;
1. Эти метод (как и все семейство методов Рунге-Кутты) является одношаговыми: чтобы найти &amp;lt;math&amp;gt;x_{n+1}&amp;lt;/math&amp;gt;, нужна информация об одной предыдущей точке &amp;lt;math&amp;gt;(t_i, x_i)&amp;lt;/math&amp;gt;. (Это позволяет в любой момент изменить шаг интегрирования.)&lt;br /&gt;
&lt;br /&gt;
2. Метод согласуются с рядом Тейлора вплоть до членов порядка 4h. (Используя большее количество вспомогательных точек, можно увеличить точность метода.)&lt;br /&gt;
&lt;br /&gt;
3. Метод не требуют вычисления производных от функции &amp;lt;math&amp;gt;f(t,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;
Стандартная схема четвертого порядка реализована в различных математических пакетах: Maple (rkf45), MathCAD (rkfixed), Matlab (ode45).&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] А. В. Старченко, Высокопроизводительные вычисления на кластерах, Издательство Томского университета, 2013, 127-130 с&lt;br /&gt;
&lt;br /&gt;
[2] Л. П. Фельдман, И. А. Назарова, Параллельные алгоритмы численного решения задачи Коши для систем обыкновенных дифференциальных уравнений &lt;br /&gt;
[http://masters.donntu.org/2008/fvti/zavalkin/library/feldman_nazarova2/default.htm]&lt;br /&gt;
&lt;br /&gt;
[3] Е. Е. Тыртышников, Методы численного анализа, М, Академия, 2007&lt;br /&gt;
&lt;br /&gt;
[4] Ващенко Г.В. Явные методы типа Рунге-Кутты и их параллельные аналоги // Численные методы, программные системы и комплексы программ. &lt;br /&gt;
[http://econf.rae.ru/article/5396]&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6538</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6538"/>
		<updated>2016-10-13T15:18:17Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;4 m n&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и шестнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
[[Файл:rkg.png]]&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;n&amp;lt;/math&amp;gt; кратна количество процессоров &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;n = qp&amp;lt;/math&amp;gt;). На каждый из процессоров распределяется и вычисляется последовательно &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; компонент векторов коэффициентов. Далее расчеты проводятся следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[K_1] = [f(t_i, x_i)]&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; целиком на каждом процессоре.&lt;br /&gt;
&lt;br /&gt;
2-4. Аналогичным образом проводятся вычисления и сборка векторов &amp;lt;math&amp;gt;[K_2], [K_3], [K_4]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
5. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[x_{i+1}] = [x_i] + \frac{h}{6} ([K_1] + 2 [K_2] + 2 [K_3] + [K_4])&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; целиком на каждом процессоре. Если вычисления не закончены, то сохраняется &amp;lt;math&amp;gt;[x_{i}] = [x_{i+1}]&amp;lt;/math&amp;gt;, осуществляется переход на 1.&lt;br /&gt;
&lt;br /&gt;
Алгоритм производит четыре обращения к функции &amp;lt;math&amp;gt;f&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;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Метод Рунге-Кутты 4-го порядка обладает следующими свойствами:&lt;br /&gt;
&lt;br /&gt;
1. Эти метод (как и все семейство методов Рунге-Кутты) является одношаговыми: чтобы найти &amp;lt;math&amp;gt;x_{n+1}&amp;lt;/math&amp;gt;, нужна информация об одной предыдущей точке &amp;lt;math&amp;gt;(t_i, x_i)&amp;lt;/math&amp;gt;. (Это позволяет в любой момент изменить шаг интегрирования.)&lt;br /&gt;
&lt;br /&gt;
2. Метод согласуются с рядом Тейлора вплоть до членов порядка 4h. (Используя большее количество вспомогательных точек, можно увеличить точность метода.)&lt;br /&gt;
&lt;br /&gt;
3. Метод не требуют вычисления производных от функции &amp;lt;math&amp;gt;f(t,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;
Стандартная схема четвертого порядка реализована в различных математических пакетах: Maple (rkf45), MathCAD (rkfixed), Matlab (ode45).&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] А. В. Старченко, Высокопроизводительные вычисления на кластерах, Издательство Томского университета, 2013, 127-130 с&lt;br /&gt;
&lt;br /&gt;
[2] Л. П. Фельдман, И. А. Назарова, Параллельные алгоритмы численного решения задачи Коши для систем обыкновенных дифференциальных уравнений &lt;br /&gt;
[http://masters.donntu.org/2008/fvti/zavalkin/library/feldman_nazarova2/default.htm]&lt;br /&gt;
&lt;br /&gt;
[3] Е. Е. Тыртышников, Методы численного анализа, М, Академия, 2007&lt;br /&gt;
&lt;br /&gt;
[4] Ващенко Г.В. Явные методы типа Рунге-Кутты и их параллельные аналоги // Численные методы, программные системы и комплексы программ. &lt;br /&gt;
[http://econf.rae.ru/article/5396]&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6509</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6509"/>
		<updated>2016-10-13T14:33:33Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Литература */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;4 m n&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и шестнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&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;n&amp;lt;/math&amp;gt; кратна количество процессоров &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;n = qp&amp;lt;/math&amp;gt;). На каждый из процессоров распределяется и вычисляется последовательно &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; компонент векторов коэффициентов. Далее расчеты проводятся следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[K_1] = [f(t_i, x_i)]&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; целиком на каждом процессоре.&lt;br /&gt;
&lt;br /&gt;
2-4. Аналогичным образом проводятся вычисления и сборка векторов &amp;lt;math&amp;gt;[K_2], [K_3], [K_4]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
5. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[x_{i+1}] = [x_i] + \frac{h}{6} ([K_1] + 2 [K_2] + 2 [K_3] + [K_4])&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; целиком на каждом процессоре. Если вычисления не закончены, то сохраняется &amp;lt;math&amp;gt;[x_{i}] = [x_{i+1}]&amp;lt;/math&amp;gt;, осуществляется переход на 1.&lt;br /&gt;
&lt;br /&gt;
Алгоритм производит четыре обращения к функции &amp;lt;math&amp;gt;f&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;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Метод Рунге-Кутты 4-го порядка обладает следующими свойствами:&lt;br /&gt;
&lt;br /&gt;
1. Эти метод (как и все семейство методов Рунге-Кутты) является одношаговыми: чтобы найти &amp;lt;math&amp;gt;x_{n+1}&amp;lt;/math&amp;gt;, нужна информация об одной предыдущей точке &amp;lt;math&amp;gt;(t_i, x_i)&amp;lt;/math&amp;gt;. (Это позволяет в любой момент изменить шаг интегрирования.)&lt;br /&gt;
&lt;br /&gt;
2. Метод согласуются с рядом Тейлора вплоть до членов порядка 4h. (Используя большее количество вспомогательных точек, можно увеличить точность метода.)&lt;br /&gt;
&lt;br /&gt;
3. Метод не требуют вычисления производных от функции &amp;lt;math&amp;gt;f(t,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;
Стандартная схема четвертого порядка реализована в различных математических пакетах: Maple (rkf45), MathCAD (rkfixed), Matlab (ode45).&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] А. В. Старченко, Высокопроизводительные вычисления на кластерах, Издательство Томского университета, 2013, 127-130 с&lt;br /&gt;
&lt;br /&gt;
[2] Л. П. Фельдман, И. А. Назарова, Параллельные алгоритмы численного решения задачи Коши для систем обыкновенных дифференциальных уравнений &lt;br /&gt;
[http://masters.donntu.org/2008/fvti/zavalkin/library/feldman_nazarova2/default.htm]&lt;br /&gt;
&lt;br /&gt;
[3] Е. Е. Тыртышников, Методы численного анализа, М, Академия, 2007&lt;br /&gt;
&lt;br /&gt;
[4] Ващенко Г.В. Явные методы типа Рунге-Кутты и их параллельные аналоги // Численные методы, программные системы и комплексы программ. &lt;br /&gt;
[http://econf.rae.ru/article/5396]&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6488</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6488"/>
		<updated>2016-10-13T14:17:41Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Свойства алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;4 m n&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и шестнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&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;n&amp;lt;/math&amp;gt; кратна количество процессоров &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;n = qp&amp;lt;/math&amp;gt;). На каждый из процессоров распределяется и вычисляется последовательно &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; компонент векторов коэффициентов. Далее расчеты проводятся следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[K_1] = [f(t_i, x_i)]&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; целиком на каждом процессоре.&lt;br /&gt;
&lt;br /&gt;
2-4. Аналогичным образом проводятся вычисления и сборка векторов &amp;lt;math&amp;gt;[K_2], [K_3], [K_4]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
5. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[x_{i+1}] = [x_i] + \frac{h}{6} ([K_1] + 2 [K_2] + 2 [K_3] + [K_4])&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; целиком на каждом процессоре. Если вычисления не закончены, то сохраняется &amp;lt;math&amp;gt;[x_{i}] = [x_{i+1}]&amp;lt;/math&amp;gt;, осуществляется переход на 1.&lt;br /&gt;
&lt;br /&gt;
Алгоритм производит четыре обращения к функции &amp;lt;math&amp;gt;f&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;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Метод Рунге-Кутты 4-го порядка обладает следующими свойствами:&lt;br /&gt;
&lt;br /&gt;
1. Эти метод (как и все семейство методов Рунге-Кутты) является одношаговыми: чтобы найти &amp;lt;math&amp;gt;x_{n+1}&amp;lt;/math&amp;gt;, нужна информация об одной предыдущей точке &amp;lt;math&amp;gt;(t_i, x_i)&amp;lt;/math&amp;gt;. (Это позволяет в любой момент изменить шаг интегрирования.)&lt;br /&gt;
&lt;br /&gt;
2. Метод согласуются с рядом Тейлора вплоть до членов порядка 4h. (Используя большее количество вспомогательных точек, можно увеличить точность метода.)&lt;br /&gt;
&lt;br /&gt;
3. Метод не требуют вычисления производных от функции &amp;lt;math&amp;gt;f(t,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;
Стандартная схема четвертого порядка реализована в различных математических пакетах: Maple (rkf45), MathCAD (rkfixed), Matlab (ode45).&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6483</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6483"/>
		<updated>2016-10-13T14:06:34Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Существующие реализации алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;4 m n&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и шестнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&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;n&amp;lt;/math&amp;gt; кратна количество процессоров &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;n = qp&amp;lt;/math&amp;gt;). На каждый из процессоров распределяется и вычисляется последовательно &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; компонент векторов коэффициентов. Далее расчеты проводятся следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[K_1] = [f(t_i, x_i)]&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; целиком на каждом процессоре.&lt;br /&gt;
&lt;br /&gt;
2-4. Аналогичным образом проводятся вычисления и сборка векторов &amp;lt;math&amp;gt;[K_2], [K_3], [K_4]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
5. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[x_{i+1}] = [x_i] + \frac{h}{6} ([K_1] + 2 [K_2] + 2 [K_3] + [K_4])&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; целиком на каждом процессоре. Если вычисления не закончены, то сохраняется &amp;lt;math&amp;gt;[x_{i}] = [x_{i+1}]&amp;lt;/math&amp;gt;, осуществляется переход на 1.&lt;br /&gt;
&lt;br /&gt;
Алгоритм производит четыре обращения к функции &amp;lt;math&amp;gt;f&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;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&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;
Стандартная схема четвертого порядка реализована в различных математических пакетах: Maple (rkf45), MathCAD (rkfixed), Matlab (ode45).&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6482</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6482"/>
		<updated>2016-10-13T14:01:18Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Последовательная сложность алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;4 m n&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и шестнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&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;n&amp;lt;/math&amp;gt; кратна количество процессоров &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;n = qp&amp;lt;/math&amp;gt;). На каждый из процессоров распределяется и вычисляется последовательно &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; компонент векторов коэффициентов. Далее расчеты проводятся следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[K_1] = [f(t_i, x_i)]&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; целиком на каждом процессоре.&lt;br /&gt;
&lt;br /&gt;
2-4. Аналогичным образом проводятся вычисления и сборка векторов &amp;lt;math&amp;gt;[K_2], [K_3], [K_4]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
5. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[x_{i+1}] = [x_i] + \frac{h}{6} ([K_1] + 2 [K_2] + 2 [K_3] + [K_4])&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; целиком на каждом процессоре. Если вычисления не закончены, то сохраняется &amp;lt;math&amp;gt;[x_{i}] = [x_{i+1}]&amp;lt;/math&amp;gt;, осуществляется переход на 1.&lt;br /&gt;
&lt;br /&gt;
Алгоритм производит четыре обращения к функции &amp;lt;math&amp;gt;f&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;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&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;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6481</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6481"/>
		<updated>2016-10-13T14:00:10Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Ресурс параллелизма алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;4 m n&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и четырнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&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;n&amp;lt;/math&amp;gt; кратна количество процессоров &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;n = qp&amp;lt;/math&amp;gt;). На каждый из процессоров распределяется и вычисляется последовательно &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; компонент векторов коэффициентов. Далее расчеты проводятся следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[K_1] = [f(t_i, x_i)]&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; целиком на каждом процессоре.&lt;br /&gt;
&lt;br /&gt;
2-4. Аналогичным образом проводятся вычисления и сборка векторов &amp;lt;math&amp;gt;[K_2], [K_3], [K_4]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
5. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[x_{i+1}] = [x_i] + \frac{h}{6} ([K_1] + 2 [K_2] + 2 [K_3] + [K_4])&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; целиком на каждом процессоре. Если вычисления не закончены, то сохраняется &amp;lt;math&amp;gt;[x_{i}] = [x_{i+1}]&amp;lt;/math&amp;gt;, осуществляется переход на 1.&lt;br /&gt;
&lt;br /&gt;
Алгоритм производит четыре обращения к функции &amp;lt;math&amp;gt;f&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;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&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;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6478</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6478"/>
		<updated>2016-10-13T13:46:05Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Ресурс параллелизма алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;4 m n&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и четырнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&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;n&amp;lt;/math&amp;gt; кратна количество процессоров &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;n = qp&amp;lt;/math&amp;gt;). На каждый из процессоров распределяется и вычисляется последовательно &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; компонент векторов коэффициентов. Далее расчеты проводятся следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[K_1] = [f(t_i, x_i)]&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[K_1]&amp;lt;/math&amp;gt; целиком на каждом процессоре.&lt;br /&gt;
&lt;br /&gt;
2-4. Аналогичным образом проводятся вычисления и сборка векторов &amp;lt;math&amp;gt;[K_2], [K_3], [K_4]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
5. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[x_{i+1}] = [x_i] + \frac{h}{6} ([K_1] + 2 [K_2] + 2 [K_3] + [K_4])&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; целиком на каждом процессоре. Если вычисления не закончены, то сохраняется &amp;lt;math&amp;gt;[x_{i}] = [x_{i+1}]&amp;lt;/math&amp;gt;, осуществляется переход на 1.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
На вход алгоритма подаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор начальных значений &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&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;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6474</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6474"/>
		<updated>2016-10-13T13:40:04Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Ресурс параллелизма алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;4 m n&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и четырнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&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;n&amp;lt;/math&amp;gt; кратна количество процессоров &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;n = qp&amp;lt;/math&amp;gt;). На каждый из процессоров распределяется и вычисляется последовательно &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; компонент векторов коэффициентов. Далее расчеты проводятся следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;K_1&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[K_1] = [f(t_i, x_i)]&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;K_1&amp;lt;/math&amp;gt; целиком на каждом процессоре.&lt;br /&gt;
&lt;br /&gt;
2-4. Аналогичным образом проводятся вычисления и сборка векторов &amp;lt;math&amp;gt;[K_2], [K_3], [K_4]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
5. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;[x_{i+1}] = [x_i] + \frac{h}{6} ([K_1] + 2 [K_2] + 2 [K_3] + [K_4])&amp;lt;/math&amp;gt;. Проводится сборка вектора &amp;lt;math&amp;gt;[x_{i+1}]&amp;lt;/math&amp;gt; целиком на каждом процессоре. Если вычисления не закончены, то сохраняется &amp;lt;math&amp;gt;[x_{i}] = [x_{i+1}]&amp;lt;/math&amp;gt;, осуществляется переход на 1.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
На вход алгоритма подаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор начальных значений &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&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;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6473</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6473"/>
		<updated>2016-10-13T13:30:47Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Ресурс параллелизма алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;4 m n&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и четырнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&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;n&amp;lt;/math&amp;gt; кратна количество процессоров &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;n = qp&amp;lt;/math&amp;gt;). На каждый из процессоров распределяется и вычисляется последовательно &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; компонент векторов коэффициентов. Далее расчеты проводятся следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. На каждом процессоре вычисляется q соответствующих компонент вектора &amp;lt;math&amp;gt;K_1&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;K_1 = f(t_i, x_i)&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;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&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;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6462</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6462"/>
		<updated>2016-10-13T13:08:16Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Входные и выходные данные алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;4 m n&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и четырнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&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;
# вектор начальных значений &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&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;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6461</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6461"/>
		<updated>2016-10-13T13:07:53Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;4 m n&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;m(n + 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и четырнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&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;
# вектор начальных значений &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&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;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6460</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6460"/>
		<updated>2016-10-13T13:07:11Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Последовательная сложность алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = 8mn&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = n + 3&lt;br /&gt;
| output_data       = m(n + 1)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (порядка &amp;lt;math&amp;gt;n m&amp;lt;/math&amp;gt; арифметических операций) и четырнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция обращения к функции является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;4 n m&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;
# вектор начальных значений &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&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;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6458</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6458"/>
		<updated>2016-10-13T13:05:48Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Макроструктура алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = 8mn&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = n + 3&lt;br /&gt;
| output_data       = m(n + 1)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция обращения к функции &amp;lt;math&amp;gt;f&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;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции умножения матрицы на вектор (порядка &amp;lt;math&amp;gt;2 n m&amp;lt;/math&amp;gt; арифметических операций) и четырнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция умножения матрицы на вектор является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;8 n m&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;
# вектор начальных значений &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&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;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6457</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6457"/>
		<updated>2016-10-13T13:05:08Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Вычислительное ядро алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = 8mn&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = n + 3&lt;br /&gt;
| output_data       = m(n + 1)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция обращения к функции &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; при вычислении коэффициентов &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, эта операция является вычислительным ядром.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция умножения матрицы на вектор, и основное внимание будет уделено распараллеливанию этой операции.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
 &lt;br /&gt;
Приведем здесь псевдокод&lt;br /&gt;
&lt;br /&gt;
начало;&lt;br /&gt;
&lt;br /&gt;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции умножения матрицы на вектор (порядка &amp;lt;math&amp;gt;2 n m&amp;lt;/math&amp;gt; арифметических операций) и четырнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция умножения матрицы на вектор является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;8 n m&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;
# вектор начальных значений &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&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;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6446</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6446"/>
		<updated>2016-10-13T12:54:27Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = 8mn&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = n + 3&lt;br /&gt;
| output_data       = m(n + 1)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция умножения матрицы на вектор при вычислении &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, следовательно вычислительным ядром является их последовательное вычисление.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция умножения матрицы на вектор, и основное внимание будет уделено распараллеливанию этой операции.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
 &lt;br /&gt;
Приведем здесь псевдокод&lt;br /&gt;
&lt;br /&gt;
начало;&lt;br /&gt;
&lt;br /&gt;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции умножения матрицы на вектор (порядка &amp;lt;math&amp;gt;2 n m&amp;lt;/math&amp;gt; арифметических операций) и четырнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция умножения матрицы на вектор является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;8 n m&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;
# вектор начальных значений &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&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;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6444</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6444"/>
		<updated>2016-10-13T12:53:56Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = 8 m n&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = n + 3&lt;br /&gt;
| output_data       = m + m n&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция умножения матрицы на вектор при вычислении &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, следовательно вычислительным ядром является их последовательное вычисление.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция умножения матрицы на вектор, и основное внимание будет уделено распараллеливанию этой операции.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
 &lt;br /&gt;
Приведем здесь псевдокод&lt;br /&gt;
&lt;br /&gt;
начало;&lt;br /&gt;
&lt;br /&gt;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции умножения матрицы на вектор (порядка &amp;lt;math&amp;gt;2 n m&amp;lt;/math&amp;gt; арифметических операций) и четырнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция умножения матрицы на вектор является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;8 n m&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;
# вектор начальных значений &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&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;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6441</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6441"/>
		<updated>2016-10-13T12:53:00Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Входные и выходные данные алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = ?&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = n + 3&lt;br /&gt;
| output_data       = n m + m&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция умножения матрицы на вектор при вычислении &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, следовательно вычислительным ядром является их последовательное вычисление.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция умножения матрицы на вектор, и основное внимание будет уделено распараллеливанию этой операции.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
 &lt;br /&gt;
Приведем здесь псевдокод&lt;br /&gt;
&lt;br /&gt;
начало;&lt;br /&gt;
&lt;br /&gt;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции умножения матрицы на вектор (порядка &amp;lt;math&amp;gt;2 n m&amp;lt;/math&amp;gt; арифметических операций) и четырнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция умножения матрицы на вектор является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;8 n m&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;
# вектор начальных значений &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На выходе получаются следующие данные:&lt;br /&gt;
&lt;br /&gt;
# вектор времени &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;;&lt;br /&gt;
# матрица значений &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; векторов длины &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) размерности &amp;lt;math&amp;gt;m n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер выходных данных &amp;lt;math&amp;gt;m + m n&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;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6440</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6440"/>
		<updated>2016-10-13T12:50:19Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Входные и выходные данные алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = ?&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = n + 3&lt;br /&gt;
| output_data       = n m + m&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция умножения матрицы на вектор при вычислении &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, следовательно вычислительным ядром является их последовательное вычисление.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция умножения матрицы на вектор, и основное внимание будет уделено распараллеливанию этой операции.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
 &lt;br /&gt;
Приведем здесь псевдокод&lt;br /&gt;
&lt;br /&gt;
начало;&lt;br /&gt;
&lt;br /&gt;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции умножения матрицы на вектор (порядка &amp;lt;math&amp;gt;2 n m&amp;lt;/math&amp;gt; арифметических операций) и четырнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция умножения матрицы на вектор является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;8 n m&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;
# вектор начальных значений &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
# границы временного интервала &amp;lt;math&amp;gt;t_0, t_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
# частота дискретизации &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общий размер входных данных &amp;lt;math&amp;gt;n + 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;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6437</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6437"/>
		<updated>2016-10-13T12:43:46Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Макроструктура алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = ?&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = n + 3&lt;br /&gt;
| output_data       = n m + m&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция умножения матрицы на вектор при вычислении &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, следовательно вычислительным ядром является их последовательное вычисление.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция умножения матрицы на вектор, и основное внимание будет уделено распараллеливанию этой операции.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
 &lt;br /&gt;
Приведем здесь псевдокод&lt;br /&gt;
&lt;br /&gt;
начало;&lt;br /&gt;
&lt;br /&gt;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции умножения матрицы на вектор (порядка &amp;lt;math&amp;gt;2 n m&amp;lt;/math&amp;gt; арифметических операций) и четырнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция умножения матрицы на вектор является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;8 n m&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;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6436</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6436"/>
		<updated>2016-10-13T12:42:45Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Последовательная сложность алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = ?&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = n + 3&lt;br /&gt;
| output_data       = n m + m&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция умножения матрицы на вектор при вычислении &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, следовательно вычислительным ядром является их последовательное вычисление.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция умножения вектора на число, и основное внимание будет уделено распараллеливанию этой операции.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
 &lt;br /&gt;
Приведем здесь псевдокод&lt;br /&gt;
&lt;br /&gt;
начало;&lt;br /&gt;
&lt;br /&gt;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме производится четыре операции умножения матрицы на вектор (порядка &amp;lt;math&amp;gt;2 n m&amp;lt;/math&amp;gt; арифметических операций) и четырнадцать операций сложения векторов и умножения вектора на число (порядка &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; арифметических операций). Поскольку операция умножения матрицы на вектор является более сложной, то сложность последовательного алгоритма можно считать равной &amp;lt;math&amp;gt;8 n m&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;/div&gt;</summary>
		<author><name>Jul305a</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:Jul305a&amp;diff=6420</id>
		<title>Участник:Jul305a</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:Jul305a&amp;diff=6420"/>
		<updated>2016-10-13T12:19:21Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: Новая страница: «Студентка 613 группы ВМК МГУ»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Студентка 613 группы ВМК МГУ&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6417</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6417"/>
		<updated>2016-10-13T12:18:00Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Схема реализации последовательного алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = ?&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = n + 3&lt;br /&gt;
| output_data       = n m + m&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция умножения матрицы на вектор при вычислении &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, следовательно вычислительным ядром является их последовательное вычисление.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция умножения вектора на число, и основное внимание будет уделено распараллеливанию этой операции.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
 &lt;br /&gt;
Приведем здесь псевдокод&lt;br /&gt;
&lt;br /&gt;
начало;&lt;br /&gt;
&lt;br /&gt;
ввод начальных параметров (&amp;lt;math&amp;gt;x_0, t_0, t_1, m&amp;lt;/math&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
цикл по числу узлов сетки: &amp;lt;math&amp;gt;i = \overline{1,m-1}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
цикл по числу стадий: &amp;lt;math&amp;gt;j = \overline{1,4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление коэффициентов &amp;lt;math&amp;gt;K_{j, k}^{i}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вычисление &amp;lt;math&amp;gt;y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
цикл по числу компонент вектора &amp;lt;math&amp;gt;x:\ k = \overline{1,n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
сохранение &amp;lt;math&amp;gt;y_{j}^{i} = y_{j}^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
вывод &amp;lt;math&amp;gt;y^{i+1}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец цикла по &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
конец;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6368</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6368"/>
		<updated>2016-10-13T10:41:51Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Макроструктура алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = ?&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = n + 3&lt;br /&gt;
| output_data       = n m + m&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция умножения матрицы на вектор при вычислении &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, следовательно вычислительным ядром является их последовательное вычисление.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2. Основной макрооперацией алгоритма является операция умножения вектора на число, и основное внимание будет уделено распараллеливанию этой операции.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6365</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6365"/>
		<updated>2016-10-13T10:35:38Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Макроструктура алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = ?&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = n + 3&lt;br /&gt;
| output_data       = n m + m&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция умножения матрицы на вектор при вычислении &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, следовательно вычислительным ядром является их последовательное вычисление.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одним шагом итерационного процесса, описанного в пункте 1.2.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6364</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6364"/>
		<updated>2016-10-13T10:35:02Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Макроструктура алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = ?&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = n + 3&lt;br /&gt;
| output_data       = n m + m&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция умножения матрицы на вектор при вычислении &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt;, следовательно вычислительным ядром является их последовательное вычисление.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма представлена одной итерацией, описанной в пункте 1.2.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6360</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6360"/>
		<updated>2016-10-13T10:32:07Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Вычислительное ядро алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = ?&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = n + 3&lt;br /&gt;
| output_data       = n m + m&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В описанной выше вычислительной схеме наиболее трудоемкой является операция умножения матрицы на вектор при вычислении &amp;lt;math&amp;gt;K_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;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6354</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6354"/>
		<updated>2016-10-13T10:25:53Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Математическое описание алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = ?&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = n + 3&lt;br /&gt;
| output_data       = n m + m&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_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;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6353</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6353"/>
		<updated>2016-10-13T10:25:35Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Математическое описание алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = ?&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = n + 3&lt;br /&gt;
| output_data       = n m + m&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_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;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6352</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6352"/>
		<updated>2016-10-13T10:25:23Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Математическое описание алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = ?&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = n + 3&lt;br /&gt;
| output_data       = n m + m&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ t_0 \leqslant t \leqslant t_1,\ x(t_0) = x_0.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь &amp;lt;math&amp;gt;x(t), x_0 \in \mathbb{R}^n,\ t, t_0, t_1 \in \mathbb{R}, f: \mathbb{R} \rightarrow \mathbb{R}^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем равномерную сетку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_i = t_0 + ih,\ i = \overline{1, n},\ h = \frac{t_1 - t_0}{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x(t_i) = x_i.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда приближенное значение в последующих точках вычисляется по итерационной формуле&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_{i+1} = x_i + \frac{h}{6} (K_1 + 2 K_2 + 2 K_3 + K_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычисление нового значения происходит в четыре стадии&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = f (t_i, x_i),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_2 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_1),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_3 = f (t_i + \frac{h}{2}, x_i + \frac{h}{2} K_2),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K_4 = f (t_i + h, x_i + h K_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;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6346</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6346"/>
		<updated>2016-10-13T10:11:27Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = ?&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = n + 3&lt;br /&gt;
| output_data       = n m + m&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений (далее &amp;lt;math&amp;gt;\mathbf{x}, \mathbf{f}, \mathbf{k}_i \in \mathbb{R}^n&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;t, h \in \mathbb{R}&amp;lt;/math&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ x(t_0) = x_0,\ t \geqslant t_0.&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;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6297</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6297"/>
		<updated>2016-10-13T08:47:32Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Математическое описание алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = ?&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = ?&lt;br /&gt;
| output_data       = ?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений (далее &amp;lt;math&amp;gt;\mathbf{x}, \mathbf{f}, \mathbf{k}_i \in \mathbb{R}^n&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;t, h \in \mathbb{R}&amp;lt;/math&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\dot{x} = f(t, x),\ x(t_0) = x_0,\ t \geqslant t_0.&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;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6294</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6294"/>
		<updated>2016-10-13T08:29:16Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Математическое описание алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = ?&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = ?&lt;br /&gt;
| output_data       = ?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений (далее )&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6291</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6291"/>
		<updated>2016-10-13T08:20:33Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Общее описание алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = ?&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = ?&lt;br /&gt;
| output_data       = ?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге-Кутты (распространено неправильное название Методы Рунге-Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге-Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге-Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге-Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6286</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6286"/>
		<updated>2016-10-13T08:17:28Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* Общее описание алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = ?&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = ?&lt;br /&gt;
| output_data       = ?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Методы Рунге — Кутты (распространено неправильное название Методы Рунге — Кутта) — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.&lt;br /&gt;
&lt;br /&gt;
Формально, методом Рунге — Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Классический метод Рунге — Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге — Кутты, опуская порядок.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6277</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6277"/>
		<updated>2016-10-13T08:13:15Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Решение задачи Коши для системы ОДУ методом Рунге-Кутта&lt;br /&gt;
| serial_complexity = ?&lt;br /&gt;
| pf_height         = ?&lt;br /&gt;
| pf_width          = ?&lt;br /&gt;
| input_data        = ?&lt;br /&gt;
| output_data       = ?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:jul305a|Филимонова Юлия]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;/div&gt;</summary>
		<author><name>Jul305a</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6276</id>
		<title>Участник:Филимонова Юлия/Решение начальной задачи Коши для системы обыкновенных дифференциальных уравнений методом Рунге-Кутта 4-го порядка</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:%D0%A4%D0%B8%D0%BB%D0%B8%D0%BC%D0%BE%D0%BD%D0%BE%D0%B2%D0%B0_%D0%AE%D0%BB%D0%B8%D1%8F/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%9A%D0%BE%D1%88%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BE%D0%B1%D1%8B%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-%D0%9A%D1%83%D1%82%D1%82%D0%B0_4-%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0&amp;diff=6276"/>
		<updated>2016-10-13T08:03:26Z</updated>

		<summary type="html">&lt;p&gt;Jul305a: /* ==nnkmkm */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===nnkmkm===&lt;/div&gt;</summary>
		<author><name>Jul305a</name></author>
	</entry>
</feed>