Программирование дифференциальных уравнений

Hans Petter Langtangen [1, 2]
[1] Центр биомедицинских вычислений. Исследовательская лаборатория Simula
[2] Факультет информатики Университета Осло

14 июня 2016 года

Примеры скалярных обыкновенных дифференциальных уравнений
      на правосторонних функциях
      Прямая схема Эйлера
      Реализация функции
      Верификация реализации
      От дискретного к непрерывному решению
      Переключение численного метода
      Реализация класса
      Логистический рост через функциональный подход
      Логистический рост через классовый подход
Системы обыкновенных дифференциальных уравнений


      Математическая задача
      Пример системы ОДУ
      Реализация функции Реализация
      класса
Иерархия классов
      ODESolver Численные методы
      Построение иерархии решателей
      Обратный метод Эйлера
      Проверки
      пример: экспоненциальное
      пример: логистическое уравнение с проблемой. И решать классов
      например: колебательную систему
      приложения 4: траектория мяча
      дальнейшего развития ODESolver
упражнения
      Упражнение 1: решить простую ода с функцией кода
      Задание 2: решить простую ода с классом кода
      задание 3: решить простую ода с ODEsolver иерархии


      Упражнение 4. решить оду. Указанных в командной строке
      Упражнение 5: Реализовать численный метод оды
      Упражнение 6. решить оду для опустошения бака
      Упражнение 7. решить оду для дуги длина
      Упражнение 8: имитировать падение или рост тела в жидкости
      задание 9. Проверьте ограничение раствора как раз растет
      упражнение 10: масштаб логистическом
      упражнение 11: вычислить логистического роста с различной грузоподъемностью
      упражнение 12: решить оду. Пока постоянное решение
      упражнение 13: Использование проблемно класс для хранения данных о ОДА


      упражнение 14: вывести и решить масштабируется ОДА проблема
      упражнение 15: очистить файл. Чтобы сделать его модуль
      упражнение 16: Моделирование радиоактивного распада
      упражнение 17: вычисления обратной функции при решении оду
      Упражнение 18: создать класс для вычисления обратных функций
      упражнение 19: добавить функциональность в класс
      упражнение 20: вычисления обратной функции путем интерполяции
      упражнение 21: кодовый 4-го порядка Рунге-Кутта; функция
      тренировки 22: код 4-го порядка Рунге-Кутта; класс


      упражнение 23: сравните оду методов
      тренировки 24: кода тест-функция для систем оду
      упражнение 25: код Гойна метода для систем оду; функция
      упражнение 26: Код Гойна метода для систем оду; класс
      упражнение 27: внедряем и тестируем чехарда способ
      тренировки 28: внедрять и тестировать Адамс-Bashforth метод
      Упражнение 29: решить два связанных оды для радиоактивного распада
      упражнение 30: реализация 2-го порядка методом Рунге-Кутта; функция
      упражнение 31: реализация 2-го порядка методом Рунге-Кутта; класс
      упражнение 32: код повторного середина метод; функция


      упражнение 33: код повторного середина метод; класс
      упражнение 34: создайте подкласс для повторного середина способ
      тренировки 35: сравнение точности различных методов оды
      упражнение 36: Одушевленное как различные методы для оды сходятся
      упражнение 37: исследование сходимости численных методов для оды
      Упражнение 38: найти тело. Вместе с его скорость
      упражнение 39: добавить эффект сопротивления воздуха на мяче
      упражнение 40: решения ОДУ и систем для электрической цепи
      упражнение 41: моделировать распространение заболевания сэр модель


      упражнение 42: познакомить проблемы и поиск решения классов сэр модель
      упражнение 43: введение вакцинации в сэр модель
      упражнение 44: введение вакцинации в сэр модель
      упражнение 45: найдите оптимальный период вакцинации
      упражнение 46: Смоделировать человека-зомби взаимодействие
      упражнение 47: имитация зомби-фильм
      упражнение 48: имитация войны с зомби
      Упражнение 49: изучить хищник-жертва населения взаимодействий
      упражнение 50: сформулировать 2-го порядка ОДА как система
      упражнений, 51: решения \( \ddot у + у =0 \)

u¨+u=0


      упражнение 52: сделать инструмент для анализа колебательных решения
      упражнения 53: выполнять задачи. Поиск решения. И документ занятия
      упражнения 54: использование классов для гибкой выбор моделей
      упражнение 55: применять программное обеспечение для колебательных систем
      упражнение 56: модель экономики рыбной ловли
ссылки

В настоящем документе мы рассмотрим дифференциальные уравнения с абстрактной точки зрения. Что позволяет сформулировать численные методы и создать общее программное обеспечение. Применимое к большому семейству широко различных задач дифференциальных уравнений из математики, физики. Биологии и финансов.

Более конкретно. Абстрактное представление мотивируется лозунгом реализовать один раз. Применить в любомместе . Этот принцип является доминирующей стратегией реализации дифференциации (

f(x)

и

f(x)

), интеграция (

abf(x)dx

), и корневой поиск (

f(x)=0

). В указанных приложениях мы работаем с общей функцией

f(x)

так что любая проблема может быть решена одним и тем же фрагментом кода до тех пор. Пока мы можем определить проблему в терминах функции

f(x)

Это отличная демонстрация силы математики. И этот абстрактный взгляд на проблемы с точки зрения некоторых

f(x)

особенно силен в численных методах и программировании. Теперь сформулируем дифференциальные уравнения в абстрактном виде

u=f(u,t)

и создать программное обеспечение. Которое может решить любое уравнение. Для которого

f(u,t)

дается.

Прежде чем приступить к изучению настоящего документа. Читатель должен иметь некоторое представление о дифференциальных уравнениях и основных численных методах их решения. Для базового функционального материала в этом документе требуются только фундаментальные навыки программирования. Касающиеся циклов, списков. Массивов, функций,

ifтестов, аргументов командной строки и построения кривых. Однако разделы Реализация класса и Реализациякласса. А также многие упражнения в значительной степени используют классы и . Следовательно. Требуют знакомства с концепцией класса. Материал по объектно-ориентированному программированию в разделе Иерархия классов ODESolver требует хорошего знания иерархий классов и наследования.

Все компьютерные коды. Связанные с этим документом. Находятся в src/ode2.