Московский Авиационный Институт
|
Кафедра информационно-управляющих комплексов
Курс «Компьютерное моделирование интегрированных систем ЛА»
|
Лабораторная работа №1
|
Интегрирование систем ОДУ
|
|
Сергей Суровцев, группа 07-409
|
Москва, 2009
|
Оглавление
Техническая постановка задачи 3
Математические модели, алгоритмы и численные методы 4
Численные методы 4
Метод Дормана-Принса 4(5) порядка 4
Метод Адамса-Мултона-Бэшфорта 3(4) порядка 5
Математические модели 6
Орбита Аренсторфа 6
Брюсселятор 6
Архитектура приложения 7
Классы 7
Модели 7
Интеграторы 7
Анализ результатов вычислительных экспериментов 9
Орбита Аренсторфа 9
Метод Адамса-Мултона-Бэшфорта 9
10
Метод Дормана-Принца 5(4) порядка 10
11
Брюсселятор 12
Метод Адамса-Мултона-Бэшфорта 12
Метод Дормана-Принса 5(4) порядка 12
Вывод 13
Список литературы 14
Техническая постановка задачи
-
Спроектировать и реализовать объектно-ориентированный шаблон взаимодействия математической модели и численного метода интегрирования систем обыкновенных дифференциальных уравнений (ОДУ);
-
Реализовать численные методы интегрирования систем ОДУ:
— Дормана-Принса 5(4) порядка, включая коррекцию шага и плотную выдачу;
— Адамса-Бэшфорта-Мултона 3(4) порядка.
-
Реализовать модели «орбита Аренсторфа», «брюсселятор»;
-
Проинтегрировать модель «орбиты Аренсторфа» на двух витках и «брюсселятор» со стандартными Н.У.
Математические модели, алгоритмы и численные методы
Численные методы
Метод Дормана-Принса 4(5) порядка
В работе реализован стандартный метод Дормана-Принса (Dormand-Price method), со следующими модификациями.
Ошибка определяется как среднеквадратическое отклонение:
, где
E — вектор разности между результатами 5 и 4 порядка;
N — число уравнений первого порядка в интегрируемой системе ОДУ.
Шаг корректируется следующим способом:
,где
H — заданная погрешность;
e(h) — погрешность в данном шаге.
В алгоритмах с коррекцией шага возникает необходимость плотной выдачи, т.е. интерполяции результатов вычислений в нужных точках.
В данном случае использовались следующие соотношения (Э. Хайрер, 1990):





Тогда плотная выдача выглядит следующим образом:
Метод Адамса-Мултона-Бэшфорта 3(4) порядка
Реализован многошаговый метод с функцией-предиктором Адамса-Бэшфорта 4-ого порядка и функцией-корректором Адамса-Мултона 3-его порядка (Shaharuddin Salleh, 2008).
Предиктор:
Корректор:
«Разгон», т.е. получение первых трёх значений
осуществляется методом Рунге-Кутты с тонностью на 3 порядка лучшей, чем точность, которой инициализирован метод Адамса-Мултога-Бэшфорта.
В каждом шаге коррекции сравнивается результат предыдущей и настоящей коррекций, и коррекция проводится заново, если максимальное значение разности фазовых векторов на двух соседних шага превышает заданную локальную погрешность (при этом в качестве предсказания в функции Мултона принимается предыдущая коррекция).
Математические модели
Орбита Аренсторфа






При начальных условиях:




Брюсселятор

При начальных условиях:

Архитектура приложения
Классы
Программа включает в себя 6 классов:
-
TODEModel — базовый класс модели СОДУ;
-
TODEIntegrator — базовый класс интегратора СОДУ;
-
TRungeKutta45 — имплементация метода Дормана-Принса, наследник TODEIntegrator;
-
TAdamsBashforthMoulton — имплементация метода Адамса-Мултона-Бэшфорта, наследник TODEIntegrator;
-
TArenstorf — имплементация модели орбиты Аренсторфа, наследник TODEModel;
-
TBruccelator — имплементация модели Брюсселятора, наследник TODEModel.
Диаграммы классов находятся на рисунке 1.
Рис.1 Диаграммы классов
Модели
Наследники класса TODEModel имплементируют процедуру F (правые части ДУ).
Наследники TODEIntegrator обязаны имплементировать, по сути, лишь функцию Run, а также в конце каждой итерации обращаться к процедуре AddValue агрегированной модели.
Интеграторы
Интеграторы обязаны перекрывать процедуру Run предка TODEIntegrator.
TRungeKutta45
RmsError(delta): extended — считает СКО.
CorrectStep(e,t) — корректирует шаг;
Densify(theta, t, y0, K) — осуществляет плотную выдачу.
Densify(theta, t, y0, K) — осуществляет плотную выдачу.
TAdamsBashforthMoulton
CheckIfInBounds(y0, y1) — проверяет, проходит ли разность двух соседних итераций коррекции сравнение с максимально допустимой погрешностью.
AdamsBashForthMoulton(y0.y1,y2,y3,t0,t1,t2,t3) — предсказывает следующее значение вектора состояния СОДУ.
AdamsMoulton(t1,y2,y3,predY,t1,t2,t3) — корректор.
Анализ результатов вычислительных экспериментов
Орбита Аренсторфа
Метод Адамса-Мултона-Бэшфорта
Система «Орбита Аренсторфа» держится как минимум 2 витка, будучи интегрированной методом Адамса-Бэшфорта-Мултона со следующими параметрами:
Длина шага = 0.001
Допустимая погрешность: = 0.001
Погрешность разгоняющего метода Дормана-Принса: 0.000001.
На рисунке 2 изображена полученная орбита. На рисунке 3 изображён увеличенный фрагмент самопересечения траектории справа .
Рис. 2 Орбита Аренсторфа, полученная методом Адамса-Бэшфорта-Мултона

Рис. 3 Увеличенный фрагмент участка траектории.
Метод Дормана-Принца 5(4) порядка
Длина шага = 0.01
Допустимая погрешность = 1.0e-8
На рисунках 4 и 5 аналогичные результаты для метода Дормана-принса.

Рис. 4 Орбита Аренсторфа, полученная методом Дормана-Принса
Рис. 5 Увеличенный фрагмент участка траектории.
Брюсселятор
Метод Адамса-Мултона-Бэшфорта
Длина шага = 0.001
Допустимая погрешность: = 1.0e-12
Погрешность разгоняющего метода Дормана-Принса: 1.0e-15.
На рисунке 6 представлены резульаты интегрирования системы «Брюсселятор» методом Адамса-Мултона-Бэшфорта.
Рис. 6 Система «Брюсселятор» методом Адамса-Мултона-Бэшфорта.
Метод Дормана-Принса 5(4) порядка
На рисунке 7 отображены результаты интегрирования системы «Брюсселятор» методом Адамса-Мултона-Бэшфорта при следующих параметрах:
Длина шага: 1.0e-2
Допустимая погрешность: 1.0e-12.
Рис. 7 Система «Брюсселятор» методом Дормана-Принса
Вывод
Результаты полученные обоими интеграторами на обеих системах удовлетворяют условиям задачи. Орбита Аренсторфа не разваливается как минимум 2 витка, а в модели «Брюсселятор» динамика системы сохраняет периодичность.
Список литературы
Dormand-Price method. (б.д.). Получено из Wikipedia.org: https://en.wikipedia.org/wiki/Dormand%E2%80%93Prince_method
Shaharuddin Salleh, A. Y. (2008). COMPUTING FOR.
Э. Хайрер, С. Г. (1990).
Решение обыкновенных дифференциальных уравнений. Нежёсткие задачи.