Модель системной динамики в дифференциальных уравнений

Системная динамика

Системная динамика позволяет моделировать сложные системы на высоком уровне абстракции, не принимая в расчет мелкие детали: индивидуальные свойства отдельных продуктов, событий или людей. Такие модели позволяют получить общее представление о системе и хорошо подходят для стратегического планирования. Например, когда мобильный оператор разрабатывает свою маркетинговую кампанию, он может смоделировать её и проанализировать эффективность новых способов коммуникации с клиентами, не моделируя поведение каждого клиента в отдельности.

Причинно-следственные диаграммы позволят описать глобальное поведение системы

Сложные взаимосвязи встречаются повсеместно, в любых сферах бизнеса и исследований. Системная динамика помогает разобраться в них, отследить результаты внесения изменений в систему, протестировать разные варианты и оценить их эффективность.

Например, в бизнесе мотивация сотрудников влияет на производительность, качество рекламы — на восприятие бренда. Всегда есть причина и следствие, а также часто есть временная задержка: результаты ваших нововведений проявляются далеко не сразу, их эффективность можно оценить только после долгого наблюдения за системой. Компьютерные модели способны решить эту проблему.

Циклы обратной связи — базовая концепция системной динамики

Взаимозависимости, такие как качество рекламы и восприятие бренда, в модели обычно представляются в виде циклов, которые называют циклами обратной связи. Например, чем больше денег вы вкладываете в маркетинг, тем больше ваши доходы, и тем больше денег вы можете потратить на маркетинг. Циклы обратной связи — базовая концепция системной динамики.

Описать циклы обратной связи и смоделировать реальный мир в системной динамике можно с помощью накопителей (материалы, знания, люди, деньги), потоков между накопителями и динамических переменных — меняющихся во времени элементов данных. Системная динамика не принимает в расчёт единичные события и даёт общее представление о системе, фокусируясь на глобальных трендах.

Системно-динамический метод позволяет:

  • Создавать абстрактные модели без лишних деталей.
  • Использовать глобальные взаимосвязи и задавать значения параметров и переменных в системе.

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

Системная динамика в AnyLogic

В AnyLogic поддерживается разработка и моделирование в терминах системной динамики с помощью диаграмм потоков и накопителей, переменных-массивов (subscripts) и всего того, что хорошо знакомо большинству разработчиков системно-динамических моделей.

Системная динамика поддерживается несколькими похожими друг на друга инструментами. Почему же стоит выбрать AnyLogic?

AnyLogic предоставляет все преимущества объектно-ориентированного подхода в системной динамике. Сложные модели могут быть многоуровневыми, созданными с использованием объектов, соединённых интерфейсными переменными. Системно-динамические диаграммы при этом скрыты внутри объектов.

Из таких объектов, системно-динамических шаблонов, можно создавать собственные библиотеки и использовать объекты в других моделях.

Также пользователи AnyLogic получают ряд преимуществ: возможность экспортировать модели, запускать их в облаке, анимировать и интегрировать с другими программными инструментами.

Комбинирование методов имитационного моделирования

AnyLogic — единственный инструмент, который позволяет комбинировать метод системной динамики с агентным и дискретно-событийным моделированием. Это можно — с помощью агентного моделирования. Объединение одного с другим даст необходимый результат: потребительский рынок будет управлять цепью поставок.

Можно смоделировать население города, представив людей в виде виртуальных агентов, а экономический и инфраструктурный фон — с помощью системной динамики.

Создать интерфейсы и связи между системной динамикой, агентным или дискретно-событийным методами моделирования в AnyLogic весьма несложно.

Вы знаете, как правильно строить имитационные модели?

Об этом мы рассказываем в аналитической статье на английском «Multimethod Simulation Modeling»

Системная динамика

Статьи экспертов и сотрудников фирмы ТОРА-Центр

Systems Dynamics, предложена 1961 г. Джеем Форрестером (Jay
Forrester) из Массачусетсского технологического института

Системная динамика представляет собой совокупность принципов
и методов анализа динамических управляемых систем с обратной связью и их
применения для решения производственных, организационных и
социально-экономических задач. В системах поддержки принятия решений применение
системной динамики позволяет объединить несколько функциональных пространств
организации в одно целое и обеспечить организационный и количественный базис для
выработки более эффективной управленческой политики. Три достижения,
обеспеченные в основном благодаря разработкам в области вооружений, сделали
возможным применение системной динамики:

  1. 1. Успехи в проектировании и анализе систем управления с обратной связью.
  2. 2. Прогресс в методах компьютерного моделирования и развитие
    вычислительной техники.
  3. 3. Накопленный опыт в моделировании процесса принятия решений.

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

Другим основным достижением, которое легло в основу системной
динамики, является компьютерное моделирование. Уже много лет моделирование –
важнейшая составная часть инженерного проектирования. Применение методов
имитационного моделирования в технике, предшествующее созданию опытных образцов,
обусловило их распространение на проблемы планирования и управления в
организационных системах. С появлением надежных и высокопроизводительных
персональных компьютеров моделирование сложных организаций стало практической
задачей. Ограничения на размерность и вид математических моделей сейчас
практически сняты.

Наконец, наряду с этими достижениями, пришло более глубокое
понимание того, как организован процесс принятия решений человеком. Расширение
наших знаний в этой области было вызвано потребностями военных исследований для
автоматического и автоматизированного управления оружием. Успех в этой области
убедил в том, что человеческое мышление и действия доступны не только
тщательному изучению, пониманию и произведению, но даже и улучшению.

Философия системной динамики базируется на предположении, что
поведение (или история развития во времени) организации главным образом
определяется ее информационно-логической структурой. Она отражает не только
физические и технологические аспекты производственных процессов, но, что гораздо
важнее, политику и традиции, которые явно или неявно определяют процесс принятия
решений в организации. Такая структурная схема содержит источники усиления,
временных задержек и информационных обратных связей, подобных тем, которые
встречаются в сложных инженерных системах. Инженерные и управляющие системы,
содержащие подобные элементы, генерируют сложные ответные реакции даже на
относительно простые изменения системы или входного сигнала. Анализ больших
нелинейных систем такого рода представляет трудную задачу даже для опытных
инженеров-системотехников, не говоря уже о быстром и надежном перепроектировании
(реинжениринге) таких систем. Тонкости и специфика, присущие области управления,
делают эти проблемы еще более сложными. В этом случае структурная ориентация
системной динамики представляет собой первый шаг в процессе замены хаоса
порядком.

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

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

Если система управления представима в виде сети накопителей и
потоков, то соответствующая системно-динамическая модель может быть реализована
в виде компьютерной программы. С помощью такой программы можно провести
экспериментальное тестирование предлагаемых изменений управленческой политики.
Исследовательская группа из Mассачусетского технологического института
разработала компилятор DYNAMO [1]. С помощью этого языка моделирования можно
эффективно решать системы линейных и нелинейных алгебраических и
дифференциальных уравнений, содержащих до нескольких тысяч переменных, при этом
от пользователя не требуется глубоких знаний программирования. С появлением
графических средств доступа язык моделирования DYNAMO, ранее более походивший на
язык программирования высокого уровня, стал языком графического моделирования
сложных динамических систем
. В полном объеме его выразительные возможности
реализованы в системе визуального моделирования “Ithink”, которая будет
использована в дальнейшем изложении. Далее анализируются преимущества
системно-динамического подхода к моделированию систем поддержки принятия решений
и излагается методика построения таких моделей.

Преимущества системно-динамического моделирования

Системно-динамический подход начинается с попытки понять ту
систему причин, которая породила проблему и продолжает поддерживать ее. Для
этого собираются необходимые данные из различных источников, включая литературу,
информированных людей (менеджеров, потребителей, конкурентов, экспертов) и
проводятся специальные количественные исследования. После того как элементарный
анализ причин проблемы произведен, формальная модель считается построенной.
Первоначально она представляется в виде логических диаграмм, отражающих
причинно-следственные связи, которые затем преобразуются в сетевую модель,
изображенную графическими средствами системы “Ithink”. Затем эта сетевая модель
автоматически преобразуется в ее математический аналог – систему уравнений,
которая решается численными методами, встроенными в систему “Ithink”. Полученное
решение представляется в виде графиков и таблиц, которые подвергаются
критическому анализу. В результате модель пересматривается (изменяются параметры
некоторых узлов сети, добавляются новые узлы, устанавливаются новые или
изменяются существовавшие ранее связи и т.д.), затем модель вновь анализируется
и так до тех пор, пока она не станет в достаточной мере соответствовать реальной
ситуации. После того как модель построена, в ней выделяются управляемые
параметры и выбираются такие значения этих параметров, при которых проблема либо
снимается, либо перестает быть критически важной.

В процессе моделирования постепенно углубляется понимание
проблемы участвующими в нем людьми. Однако их интуиция о возможных последствиях
предлагаемых управленческих решений часто оказывается менее надежной, чем
подход, связанный с тщательным построением математической модели. И это не так
удивительно, как может показаться на первый взгляд. Системы управления содержат
порой 100 и более переменных, о которых либо известно, что они зависят от других
каким-либо нелинейным образом или предполагают существование такой зависимости.
Поведение таких систем оказывается настолько сложным, что его понимание лежит
вне возможностей человеческой интуиции. Компьютерное моделирование – одно из
наиболее эффективных имеющихся в настоящее время средств для поддержки и
уточнения человеческой интуиции. Хотя модель и не является совершенно точным
представлением реальности, она может быть использована для принятия более
обоснованных решений, чем те, которые мог бы принять человек. Это гибкое
средство, которое усиливает возможности человека, использующего ее для более
глубокого понимания проблемы.

Компьютерная модель принципиально отличается по сложности,
точности и подробности от неформального субъективного объяснения или
“вербальной” модели, которую человек обычно формирует для достижения
поставленной цели. Преимущества компьютерной модели, сконструированной и
используемой для поддержки принятия решений, состоят в следующем:

1. Она заставляет лицо, принимающее решение, (ЛПР) точнее и
полнее формулировать словесные описания причин возникновения проблемы, которые
он неизбежно хранит в своей голове.

2. В процессе формального построения модели аналитик
вскрывает и устраняет многочисленные внутренние противоречия и сомнения,
имеющиеся в его предположениях о модели.

3. Когда производится “прогон” модели, становится возможным
логическое “тестирование”. С помощью модели легко оцениваются следствия из
многообещающих, но умозрительных решений. Наблюдения за поведением модели
способствуют появлению новых гипотез о структуре реального объекта.

4. Когда достигнут приемлемый уровень надежности, становятся
возможными формальные эксперименты по выработке управленческой политики, быстро
раскрывающие вероятные следствия из различных управленческих альтернатив. На
модели легко могут быть исследованы ситуации типа “что, если. ”.

5. Формально операционная модель завершена всегда, но в
содержательном смысле никогда не завершена до конца. В отличие от многочисленных
методов планирования, которые обычно используются эпизодически и время от
времени (они обеспечивают поддержку решения только в момент подготовки отчета,
но не раньше и не позже), модель органична и интерактивна. Модель доступна в
любой момент времени и предоставляет средства для лучшего понимания проблемы.

6. Анализ устойчивости модели – это та область, обсуждение
которой подводит эмпирическое исследование к важным вопросам. Если истинные
значения многих параметров неизвестны (это обычное явление при корпоративном
стратегическом планировании), то первое, с чего следует начать исследование, это
анализ поведения модели при колебаниях значений параметров. Система “Ithink”
предоставляет для этого специальные средства.

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

Анализ систем с обратной связью

Системы с обратной связью характеризуются тем, что оператор,
выполняющий некоторые действия, позднее подвергается воздействию в зависимости
от результатов своих действий. В этом случае говорят о “замыкании цикла”, причем
объективно существует задержка во времени, короткая или длинная, разделяющая
момент начала действия и обратную реакцию на него. Замкнутые циклы и, как
следствие, временные задержки характерны для всех процессов с обратной связью.

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

Иерархия элементов систем с обратной связью . Рассмотрим
четыре элемента систем с обратной связью: переменная, связь, цикл обратной
связи, система с обратными связями.

Переменная представляет собой количество некоторого продукта,
которое изменяется во времени. Переменная может выражать решение, например,
“объем дополнительных ресурсов”, или показывать результат ранее принятого
решения, например, “затраты”. Если переменная не изменяется в зависимости от
изменения других переменных системы, она называется “экзогенной”, т.е. внешней
для системы. Переменная, значение которой изменяется в зависимости от изменения
других переменных внутри системы, называется “эндогенной”.

Связь обозначает причинно-следственные соотношения между
двумя переменными. Графически ее легко себе представить как стрелку, в начале
которой лежит исходная переменная, а на конце – зависимая переменная, т.е.
такая, значение которой определяется значением исходной.

Цикл с обратной связью в простейшем случае можно представить
как совокупность двух переменных и двух связей, такую что начальная переменная
сначала влияет на значение зависимой (прямая связь), а та, в свою очередь,
влияет на значение исходной (обратная связь). Характерным для такого цикла
является наличие временных задержек: сначала задержка между решением и
следствием от него, а затем, задержка между следствием и тем моментом времени,
когда информация об этом следствии повлияет на новое решение.

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

Модель есть целенаправленное представление исследуемого
объекта, реальное или воображаемое. Имитационная модель есть модель, которая
воспроизводит поведение объекта за определенный период времени; в этом смысле
имитационная модель является динамической. Значения всех переменных, входящих в
имитационную модель, вычисляются в каждый момент модельного времени. Затем,
через определенный интервал, на основе старых значений вычисляются новые
значения переменных, и т.д. Таким образом, имитационная модель “развивается” по
определенной траектории в течение заданного отрезка модельного времени.

Для построения имитационных моделей динамических систем
используются переменные четырех типов: время, фонд, поток и конвертор.

Переменная “время” является первичной для имитационной модели
динамической системы: ее значение генерируется системным таймером и изменяется
дискретно, т.е., начиная с некоторого начального значения, время за каждый такт
увеличивается на заранее заданную величину, которая служит единицей модельного
времени. Число тактов и единица времени являются параметрами “прогона” модели и
определяются заранее.

Переменная типа “фонд” равна объему (количеству) некоторого
“продукта”, накопленного в некотором хранилище за время “жизни” модели с
начального по текущий момент. Продукт может поступать в фонд и/или извлекаться
из него. Поэтому значение фонда в текущий момент времени можно вычислить как
сумму его значения в предыдущий момент и величины, равной разности величин
входящего и исходящего потоков продукта за единицу модельного времени. Помимо
очевидных примеров, таких как фонды материальных и людских ресурсов, переменные
этого типа могут характеризовать объемы накопленной информации, служить оценкой
субъективных вероятностей наступления некоторых событий к определенному моменту
времени, выражать меру влияния одних субъектов некоторого процесса на других.
Средние величины всех видов также можно рассматривать как информационные фонды
специального вида.

Переменная типа “поток” равна объему (количеству) продукта,
который поступает или извлекается из соответствующего фонда в единицу модельного
времени. Значение этой переменной может изменяться в зависимости от внешних
воздействий на нее. В частности, поток можно представить как функцию от значений
других потоков и фондов. Простейший пример цикла с обратной связью образует
входящий поток, величина которого зависит от значения фонда, в который этот
поток поступает.

Фонды характеризуют статическое состояние системы, а потоки –
ее динамику. Если, например, представить себе, что в какой-то момент времени все
процессы в системе остановятся, то фонды будут иметь те значения, которые были
на момент остановки, а потоки будут равны нулю. С другой стороны, о величине
потока можно судить только за определенный промежуток времени.

Помимо фондов и потоков, при построении имитационных моделей
динамических систем используются вспомогательные переменные, которые мы будем
называть конверторами. Эти переменные могут быть равны константам или значениям
математических функций от других переменных (в том числе и от переменной
“время”), т.е. позволяют преобразовывать (“конвертировать”) одни числовые
значения в другие.

Для формального описания моделей динамических систем введем
следующие обозначения. Через t обозначим переменную “время”, которая
имеет нулевое начальное значение и за каждый такт увеличивается на достаточно
малое положительное приращение dt . Переменные типа “фонд”,
которые, очевидно, являются функциями от времени, будем обозначать прописными
латинскими буквами, например: X(t),MONEY(t) . Потоки будем обозначать
прописными или строчными латинскими буквами с апострофом в конце, чтобы
подчеркнуть их связь с понятием производной от функции. Для обозначения
остальных переменных и констант будем использовать строчные латинские буквы. Для
записи стандартных математических функций будем, по-возможности, использовать
обозначения, принятые в системе “Ithink”.

Рассмотрим несколько моделей простейших динамических систем.

1. Осциллятор со стабилизацией расчетных движений.
Стабилизация траектории управляемых динамических систем может осуществляться при
помощи специально выбранного управления. Рассмотрим осциллятор, представляющий
собой тело массой m , соединенное с неподвижной точкой пружиной, имеющей
жесткость k . Если в начальный момент переместить тело вдоль некоторой оси
на расстояние X(1)0 и отпустить, то при отсутствии сил тяжести и трения
тело будет совершать периодические колебательные движения вдоль этой оси.
Предположим теперь, что на тело воздействует стабилизирующее управление u ,
а жесткость пружины экспоненциально уменьшается во времени. Динамика такого
осциллятора описывается следующей системой обыкновенных дифференциальных
уравнений:

Переменная u задает стабилизирующие управления,
заставляющие тело совершать колебательные движения внутри диапазона,
определяемого значением параметра l [см., например, Зубов С.В.,
Зубов Н.В. Математические методы стабилизации динамических систем. Изд-во
С.-Петербургского университета, 1996]. Функция k(t) описывает деградацию
пружины во времени. Значения параметров q1,q2,l и начальное значение
смещения X1(0) определяют область стабильных колебаний и время
переходного периода. Как будет вести себя такая динамическая система при массе
тела 10 грамм, если сместить тело, например, на 10 см и отпустить, полагая
l=0.02, ql=0.1, q2=2, a=25, b=0.05
?

В течение некоторого переходного периода под воздействием
управлений система будет совершать затухающие колебания, до тех пор пока не
попадет в заданный (“допустимый”) диапазон колебаний. Затем, какое-то время
система будет находиться в стационарном режиме. Потом управляющие воздействия не
смогут компенсировать все возрастающее влияние деградации пружины, и в некоторый
момент тело “оторвется” и система “разрушиться”.

Очевидно, что интересующие нас моменты перехода системы в
стационарное состояние и выхода из него могут быть определены при помощи
какого-либо пакета программ численного решения систем дифференциальных
уравнений. Однако это, очевидно, потребует определенных затрат материальных и
временных ресурсов. При наличии пакета “Ithink” эта задача может быть решена и
без привлечения специального программного обеспечения.

Используя синтаксис пакета “Ithink”, рассматриваемая
динамическая система может быть представлена в виде графической схемы,
изображенной на
рис. 1.
В модели имеется два фонда: X1 – “Перемещение” и X2 – “Скорость”.
Поскольку оба этих фонда могут принимать как положительные, так и отрицательные
значения, они соединены двунаправленными потоками с бесконечными источниками
(“облаками”). Стабилизирующее управление u “гасит” ускорение при выходе
переменной s за границы интервала стабильных колебаний, задаваемого
параметром l .

Графическая схема может быть автоматически преобразована в
систему уравнений, записанную на языке Dynamo. На
рис. 2
представлена такая система для рассматриваемого осциллятора.

Поведение осциллятора моделировалось в течение 100 единиц
модельного времени. Результаты моделирования показаны на
рис. 3.

Как видно из
рис. 3,
в течение примерно 25 тактов осциллятор переходил в режим стабильных колебаний
вокруг нулевого уровня; после следующих 25 тактов стала сказываться деградация
пружины, и тело начало “отрываться” в положительном направлении оси колебаний.

2. Модель детерминированного хаоса. Рассмотрим поведение
системы, описываемой нелинейным рекуррентным соотношением вида

где c0,c1,c 2
управляемые параметры системы. Графическая схема такой модели на языке “Ithink»
и ее представление на языке Dynamo представлены на
рис. 4.

При значениях параметров, указанных на
рис. 4,
динамическая система совершает затухающие колебания около некоторого значения,
называемого “аттрактором» (рис. 5).
Легко убедиться, что незначительные изменения этих параметров приводят к
некоторым изменениям траектории затухания, но не меняют значения аттрактора.
Однако, при значениях P(0)=0.3, c0=1, c1=-4, c2=4
система начинает совершать хаотические колебания (рис. 6).
Такое “псевдослучайное» поведение строго детерминированной системы называется
“странным аттрактором». Если предположить, что поведение какого-либо
псевдослучайного объекта (например, некоторого сегмента финансового рынка)
удастся достаточно точно описать при помощи системы подобных рекуррентных
соотношений, то краткосрочный прогноз его поведения не составит труда.

Моделирование динамических систем: численные методы решения ОДУ

Очень кратко рассмотрев основы механики в предыдущей статье, перейдем к практике, ибо даже той краткой теории что была рассмотрена хватит с головой.

Камень бросают вертикально, без начальной скорости с высоты h = 100 м. Пренебрегая сопротивлением воздуха, определить закон движения камня, как функцию высоты камня над поверхностью Земли от времени. Ускорение свободного падения принять равным 10 м/с 2

1. Формализация задачи

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

Для этой задачи применимо допущение, согласно которому камень можно считать материальной точкой. К этой точке приложена одна единственная сила — сила тяжести, так мы используем допущение об отсутствии сопротивления воздуха.

Следующим допущением будет полагать что Земля плоская, так как высота, с которой мы бросаем камень пренебрежимо мала в сравнении с размерами планеты, а значит кривизной её поверхности можно пренебречь. Тогда сила тяжести может считаться постоянной, направленной перпендикулярно поверхности Земли и равной по модулю

где g — ускорение свободного падения у поверхности Земли. Теперь пришло время составить уравнения движения камня. Помните эти уравнения

Левая их часть нас пока не интересует, а вот в правой стоят суммы проекций сил, приложенных к точке на оси координат. Пусть оси x и y располагаются на поверхности, а ось z направлена вверх перпендикулярно ей. Сила одна единственная, её проекции на оси x и y равны нулю, а на ось z проекция отрицательна, так как сила направлена против направления оси, то есть

Масса камня, очевидно не равна нулю, значит можно спокойно поделить обе части получившихся уравнений на неё

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

То что у нас получилось не много не мало — математическая модель процесса происходящего в задаче. Пафосно, да?

Нет. Анализируя это уравнение мы делаем вывод, например, что масса камня не оказывает влияния на закон его движения, ведь массы в этом уравнении нет. Видите, даже не решив уравнения, мы уже формально доказали справедливость опыта с пером и кусочком свинца в вакууме, который любят показывать в школе (а некоторые повторили его на Луне).

Аналитическое решение получить просто, даже не буду заморачиваться, оно такое

А вот как решить это численно? И что это вообще такое — «численно»?

2. Численное интегрирование дифференциального уравнения первого порядка

Какой такой первый порядок? Я же говорил в прошлый раз, что уравнения движения имеют второй порядок. Всё правильно, но большинство методов решения диффур на компьютере умеют решать только уравнения первого порядка. Есть методы прямого интегрирования уравнений второго порядка (например метод Верле), но о них не сейчас.

Во-первых, это уравнение относится к такому типу, что допускает понижение порядка. Правая часть не зависит от неизвестной функции (там нет z), поэтому вспоминаем, что

проекция ускорения на ось z равна первой производной проекции скорости на ту же оcь z. Ну классно, тогда

вот вам и уравнение первого порядка. Не всегда этот номер проходит (не буду я сейчас про форму Коши!), но в данном случае всё в порядке. Будем искать не координату а скорость точки. Что дальше-то? А дальше

ведь производная, мы же знаем, это отношение бесконечно малого приращения функции (скорости) в к вызвавшему его бесконечно малому приращению аргумента (время). Возьмем очень маленький промежуток времени , настолько небольшой что можно считать

Что получается? А вот что

Мы получили приращение скорости. Отрицательное приращение. Как это так, камень, падая вниз будет разгонятся же! Да, будет. Его скорость, вектор его скорости, будет направлен вниз. А значит проекция этого вектора на ось z будет отрицательной. Всё правильно, мы получаем растущую по абсолютному значению проекцию вектора, направленного вниз. Мы знаем, начальное значение скорости — ноль, а значит

Пользуясь тем что мы можем вычислить приращение скорости, посчитаем, какова будет скорость скажем через 0.1 секунды

а ещё через 0.1 секунды

и ещё через 0.1 секунды

Хм, так мы можем продолжать довольно долго, но ограничимся промежутком времени в одну секунду

Время, сСкорость, м/с
0.00.0
0.1-1.0
0.2-2.0
0.3-3.0
0.4-4.0
0.5-5.0
0.6-6.0
0.7-7.0
0.8-8.0
0.9-9.0
1.0-10.0

То есть, воспользовавшись формулой

мы получили зависимость скорости точки от времени. А всего-то нужно взять значение скорости в текущий момент времени, и добавить к нему приращение, которое скорость получит в новый момент времени, отстоящий от текущего на секунд. Приращение времени называется здесь шагом интегрирования. А приращение мы вычисляем как значение производной искомой функции в текущий момент времени умноженное на шаг. Просто? Да просто конечно. И та формула, которую я написал, имеет название название — явный метод Эйлера для численного решения дифференциальных уравнений. Это так называемая рекуррентная формула, когда новое значение вычисляемой величины зависит от её предыдущего значения.

А что же с высотой точки над Землей? Да всё аналогично, смотрите

ведь проекция скорости есть производная от соответствующей координаты. Применим формулу метода Эйлера для этого уравнения, ведь скорость мы уже знаем

и по этой формуле добавим в нашу таблицу ещё одну колонку

Время, сСкорость, м/сВысота, м
0.00.0100.0
0.1-1.0100.0
0.2-2.099.9
0.3-3.099.7
0.4-4.099.4
0.5-5.099.0
0.6-6.098.5
0.7-7.097.9
0.8-8.097.2
0.9-9.096.4
1.0-10.095.5

Хм, ну, во-первых, заметно, что высота меняется у нас уже неравномерно, так как скорость со временем меняется. Теперь наша производная сама зависит от времени. Но уже на первом шаге, мы замечаем неладное — скорость уже есть, а вот высота по прежнему 100 метров. Как так?

Это вышло потому, что на каждом шаге мы полагаем производную (скорость) постоянной. Метод не дает информации о том, что происходит с решением между шагами. Соответственно накапливается погрешность, сравним полученное решение с точным

Время, сСкорость, м/сВысота, мТочное решение, м
0.00.0100.0100.00
0.1-1.0100.099.95
0.2-2.099.999.80
0.3-3.099.799.55
0.4-4.099.499.20
0.5-5.099.098.75
0.6-6.098.598.20
0.7-7.097.997.55
0.8-8.097.296.80
0.9-9.096.495.95
1.0-10.095.595.00

Да, наш камень как будто зависает в воздухе. Численное решение отстает от аналитического, и чем дальше мы считаем, тем выше погрешность счета. Погрешность накапливается, так как на каждом шаге мы берем всё более и более грубое приближение. Что делать?

Во первых, можно уменьшить шаг. Скажем в 10 раз, пусть секунды

Время, сСкорость, м/сВысота, мТочное решение, м
0.00.0100.0100.00
0.1-1.099.9699.95
0.2-2.099.8199.80
0.3-3.099.5799.55
0.4-4.099.2299.20
0.5-5.098.7898.75
0.6-6.098.2398.20
0.7-7.097.5997.55
0.8-8.096.8496.80
0.9-9.096.0095.95
1.0-10.095.0595.00

Уже лучше, погрешность в конце счета не превышает 0,05 метров, и это в 10 раз меньше предыдущего значения. Можно предположить, что уменьшив шаг ещё в 10 раз мы получим ещё более точное решение. Я схитрил, выводя значения только для 10 точек с шагом 0.1, на самом деле, чтобы получить такую таблицу нужны уже 100 итерации а не 10. При шаге 0.001 потребуется уже тысяча итераций, а результат будет таким

Время, сСкорость, м/сВысота, мТочное решение, м
0.00.0100.0100.00
0.1-1.099.950599.95
0.2-2.099.801099.80
0.3-3.099.551599.55
0.4-4.099.202099.20
0.5-5.098.752598.75
0.6-6.098.203098.20
0.7-7.097.553597.55
0.8-8.096.804096.80
0.9-9.095.954595.95
1.0-10.095.005095.00

Если вы попробовали выполнить эти расчеты в ручную, то понимаете теперь насколько они однообразны и трудоемки, если нужна высокая точность. Именно поэтому расцвет численного моделирования совпал с появлением компьютеров. Они как раз и нужны для того, чтобы быстро выполнять множество однообразных операций над числами.

Метод Эйлера самый простой из известных методов интегрирования дифференциальных уравнений. Из нашего простого примера видно, что погрешность метода прямо пропорциональна шагу интегрирования, и это действительно так. Такие методы называются методами 1-го порядка точности.

Точность расчетов даже на шаге 0.1 можно улучшить, если мы применим, скажем метод Рунге-Кутты 4-го порядка точности. Но это отдельная история.

Заключение

Задумайтесь… Мы рассмотрели очень простой пример. Мы даже не применяли компьютер, но уже понимаем принцип, по которому работают те самые мощные в мире суперкомпьютеры, что моделируют ранние этапы жизни Вселенной. Конечно, там всё устроено гораздо сложнее, но принцип лежит этот же самый.

Представьте себе, какой мощный инструмент вы получаете в свои руки. Эта последняя статья, где мы не будем применять компьютер. Я обещал Octave. В следующий раз будет именно он.


источники:

http://hr-portal.ru/article/sistemnaya-dinamika

http://habr.com/ru/post/349162/