Участник:Alexboboshko/Решение начальной задачи Коши для системы ОДУ методом Рунге-Кутта 4-го порядка: различия между версиями
Alina (обсуждение | вклад) Нет описания правки |
Alina (обсуждение | вклад) |
||
| Строка 17: | Строка 17: | ||
=== Математическое описание алгоритма === | === Математическое описание алгоритма === | ||
==== Общая формулировка методов ==== | |||
Рассматриваем задачу Коши | |||
:<math> | |||
\frac{du}{dt} = f(t,u), u(0)=u_0 | |||
</math> | |||
Явный m-этапный метод Рунге-Кутта состоит в следующем. Пусть решение <math> y_n = y(t_n) </math> уже известно. Задаются числовые коэффициенты <math> a_i, \ b_{ij},\ i = 2, 3, \dots, m,\ j = 1, 2, \dots, m-1,\ \sigma_i,\ i = 1, 2, \dots, m, </math> и последовательно вычисляются функции | |||
:<math> | |||
\begin{align} | |||
k_1 = f(t_n, y_n), k_2 = f(t_n+a_2\tau,\ y_n+b_{21}\tau k_1) \\ | |||
k_3 = f(t_n+a_3 \tau, \ y_n+b_{31}\tau k_1+b_{32}\tau k_2), \ \dots,\\ | |||
k_m = f(t_n+a_m \tau, \ y_n+b_{m1}\tau k_1+b_{m2}\tau k_2+\dots+b_{m,m-1}\tau k_{m-1}) | |||
\end{align} | |||
</math> | |||
=== Вычислительное ядро алгоритма === | === Вычислительное ядро алгоритма === | ||
Версия от 11:36, 7 октября 2016
| РК | |
| Последовательный алгоритм | |
| Последовательная сложность | [math]\displaystyle{ 4mn }[/math] |
| Объём входных данных | [math]\displaystyle{ m + 3 }[/math] |
| Объём выходных данных | [math]\displaystyle{ (m+1)n }[/math] |
| Параллельный алгоритм | |
| Высота ярусно-параллельной формы | ? |
| Ширина ярусно-параллельной формы | ? |
Основные авторы описания:
Свойства и структура алгоритма
Общее описание алгоритма
Ме́тоды Ру́нге — Ку́тты — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.
Формально, методом Рунге — Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения.
Математическое описание алгоритма
Общая формулировка методов
Рассматриваем задачу Коши
- [math]\displaystyle{ \frac{du}{dt} = f(t,u), u(0)=u_0 }[/math]
Явный m-этапный метод Рунге-Кутта состоит в следующем. Пусть решение [math]\displaystyle{ y_n = y(t_n) }[/math] уже известно. Задаются числовые коэффициенты [math]\displaystyle{ a_i, \ b_{ij},\ i = 2, 3, \dots, m,\ j = 1, 2, \dots, m-1,\ \sigma_i,\ i = 1, 2, \dots, m, }[/math] и последовательно вычисляются функции
- [math]\displaystyle{ \begin{align} k_1 = f(t_n, y_n), k_2 = f(t_n+a_2\tau,\ y_n+b_{21}\tau k_1) \\ k_3 = f(t_n+a_3 \tau, \ y_n+b_{31}\tau k_1+b_{32}\tau k_2), \ \dots,\\ k_m = f(t_n+a_m \tau, \ y_n+b_{m1}\tau k_1+b_{m2}\tau k_2+\dots+b_{m,m-1}\tau k_{m-1}) \end{align} }[/math]
Вычислительное ядро алгоритма
Макроструктура алгоритма
Схема реализации последовательного алгоритма
Последовательная сложность алгоритма
Информационный граф
Ресурс параллелизма алгоритма
Поскольку в описанной выше вычислительной схеме наиболее трудоемкой является операция расчета правых частей ОДУ при вычислении [math]\displaystyle{ k_i ( i = 1, \dots, 4) }[/math], то основное внимание следует уделить распараллеливанию этой операции. Здесь будет применяться подход декомпозиции уравнений системы ОДУ на подсистемы. Поэтому для инициализации рассмотрим следующую схему декомпозиции данных по имеющимся процессорным элементам с локальной памятью: на каждый [math]\displaystyle{ \mu }[/math]- ПЭ (процессорный элемент) ([math]\displaystyle{ \mu = 0, \dots, p-1 }[/math]) распределяется [math]\displaystyle{ m/p }[/math] дифференциальных уравнений и вектор [math]\displaystyle{ \bar y_0 }[/math]. Далее расчеты производятся по следующей схеме:
- на каждом ПЭ одновременно вычисляются [math]\displaystyle{ n/p }[/math] соответствующих компонент вектора [math]\displaystyle{ \bar k_1 }[/math] по формуле [math]\displaystyle{ [ \bar k_1 ]_{\mu} = h[ \bar f(x_i, \bar y_i) ]_{\mu} }[/math]
- для обеспечения второго расчетного этапа необходимо провести сборку вектора [math]\displaystyle{ \bar k_1 }[/math] целиком на каждом ПЭ. Затем независимо выполняется вычисление компонент вектора [math]\displaystyle{ \bar k_2 }[/math] по формуле [math]\displaystyle{ [ \bar k_2 ]_{\mu} = h[ \bar f(x_i + h/2,\bar y_i + 1/2 \bar k_1)]_{\mu} }[/math];
- проводится сборка вектора [math]\displaystyle{ \bar k_2 }[/math] на каждом ПЭ, вычисляются компоненты вектора [math]\displaystyle{ \bar k_3:\ [ \bar k_3 ]_{\mu} = h [\bar f(x_i + h/2,\bar y_i + 1/2 \bar k_2)]_{\mu} }[/math];
- проводится сборка вектора [math]\displaystyle{ \bar k_3 }[/math] на каждом ПЭ, вычисляются компоненты вектора [math]\displaystyle{ \bar k_4:\ [ \bar k_4 ]_{\mu} = h [\bar f(x_i + h,\bar y_i + \bar k_3)]_{\mu} }[/math];
- рассчитываются с идеальным параллелизмом компоненты вектора [math]\displaystyle{ \bar y_{i+1}:\ [\bar y_{i+1}]_{\mu} = [\bar y_{i}]_{\mu} + ([ \bar k_1 ]_{\mu} + 2[ \bar k_2 ]_{\mu} + 2[ \bar k_3 ]_{\mu} + [ \bar k_4 ]_{\mu})/6\ }[/math] и производится сборка вектора [math]\displaystyle{ \bar y_{i+1} }[/math] на каждом ПЭ. Если необходимо продолжить вычислительный процесс, то полагается [math]\displaystyle{ i = i + 1 }[/math] и осуществляется переход на п. 1
Заметим, что в данном алгоритме производится четыре операции вычисления вектора правых частей ОДУ, шестнадцать операций сложения векторов и умножения вектора на число и четыре операции глобальной сборки векторов.
Входные и выходные данные алгоритма
Свойства алгоритма
Программная реализация алгоритма
Особенности реализации последовательного алгоритма
Локальность данных и вычислений
Локальность реализации алгоритма
Структура обращений в память и качественная оценка локальности
Количественная оценка локальности
Анализ на основе теста Apex-Map
Возможные способы и особенности параллельной реализации алгоритма
Масштабируемость алгоритма и его реализации
Масштабируемость алгоритма
Масштабируемость реализации алгоритма
Динамические характеристики и эффективность реализации алгоритма
Выводы для классов архитектур
Существующие реализации алгоритма
Литература
[1]
<references \>