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

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



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

Итак, задача:

Камень брошен вертикально без начальной скорости с высоты h = 100 м.

Пренебрегая сопротивлением воздуха, определите закон движения камня в зависимости от высоты камня над поверхностью Земли во времени.

Примем ускорение свободного падения равным 10 м/с.

2

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

Но эта простая задача послужит для нас весьма наглядным примером.

1. Формализация задачи С этого начинается любое моделирование.

Формализация означает получение математических выражений, описывающих происходящий процесс.

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

Для этой задачи применимо предположение, что камень можно считать материальной точкой.

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

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

Тогда силу тяжести можно считать постоянной, направленной перпендикулярно поверхности Земли и равной по величине.



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

где g — ускорение силы тяжести на поверхности Земли.

Теперь пришло время записать уравнения движения камня.

Запомните эти уравнения

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

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

Сила одна, ее проекции на оси x и y равны нулю, а на ось z проекция отрицательна, так как сила направлена против направления оси, т.е.



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

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



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

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

Ноль в правой части первых двух уравнений вовсе не означает невозможности движения по этим осям – вспомните первый закон Ньютона.

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

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

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

Претенциозно, правда? Нет. Анализируя это уравнение, мы приходим к выводу, например, что масса камня не влияет на закон его движения, потому что в этом уравнении нет массы.

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

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

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

Но как это решить численно? И вообще, что такое «численно»? 2. Численное интегрирование дифференциального уравнения первого порядка.

Какой первый заказ? В прошлый раз я сказал, что уравнения движения имеют второй порядок.

Все правильно, но большинство методов решения диффузий на компьютере позволяют решать только уравнения первого порядка.

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

Во-первых, это уравнение относится к типу, допускающему приведение порядка.

Правая часть не зависит от неизвестной функции (нет z), поэтому помним, что

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

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

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

Вот вам уравнение первого порядка.

Это число не всегда работает (о форме Коши я сейчас говорить не буду!), но в данном случае все в порядке.

Мы будем искать не координату, а скорость точки.

Что дальше? Так

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

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

Возьмем очень короткий период времени

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

настолько мал, что можно считать

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

Что происходит? Вот что

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

Мы получили прирост скорости.

Отрицательное приращение.

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

Это означает, что проекция этого вектора на ось z будет отрицательной.

Правильно, мы получаем проекцию вектора, направленную вниз, увеличивающуюся по абсолютной величине.

Мы знаем, что начальное значение скорости равно нулю, а это значит

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

Воспользовавшись тем, что мы можем вычислить приращение скорости, давайте посчитаем, какой будет скорость, скажем, через 0,1 секунды.



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

и еще через 0,1 секунды

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

и еще через 0,1 секунды

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

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

Время, с Скорость, м/с
0.0 0.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.0 0.0 100.0
0.1 -1.0 100.0
0.2 -2.0 99.9
0.3 -3.0 99.7
0.4 -4.0 99.4
0.5 -5.0 99.0
0.6 -6.0 98.5
0.7 -7.0 97.9
0.8 -8.0 97.2
0.9 -9.0 96.4
1.0 -10.0 95.5
Хм, ну во-первых, заметно, что высота у нас меняется неравномерно, так как скорость меняется со временем.

Теперь наша производная сама зависит от времени.

Но уже на первом шаге мы замечаем неладное – скорость уже есть, а высота все равно 100 метров.

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

Метод не предоставляет информацию о том, что происходит с решением между шагами.

Соответственно, ошибка накапливается; сравним полученное решение с точным

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

Время, с Скорость, м/с Высота, м Точное решение, м
0.0 0.0 100.0 100.00
0.1 -1.0 100.0 99.95
0.2 -2.0 99.9 99.80
0.3 -3.0 99.7 99.55
0.4 -4.0 99.4 99.20
0.5 -5.0 99.0 98.75
0.6 -6.0 98.5 98.20
0.7 -7.0 97.9 97.55
0.8 -8.0 97.2 96.80
0.9 -9.0 96.4 95.95
1.0 -10.0 95.5 95.00
Да, наш камень словно висит в воздухе.

Численное решение отстает от аналитического, и чем дальше мы считаем, тем выше ошибка расчета.

Ошибка накапливается по мере того, как на каждом шаге мы делаем все более грубое приближение.

Что делать? Во-первых, можно уменьшить шаг.

Скажем, 10 раз, скажем

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

секунды

Время, с Скорость, м/с Высота, м Точное решение, м
0.0 0.0 100.0 100.00
0.1 -1.0 99.96 99.95
0.2 -2.0 99.81 99.80
0.3 -3.0 99.57 99.55
0.4 -4.0 99.22 99.20
0.5 -5.0 98.78 98.75
0.6 -6.0 98.23 98.20
0.7 -7.0 97.59 97.55
0.8 -8.0 96.84 96.80
0.9 -9.0 96.00 95.95
1.0 -10.0 95.05 95.00
Уже лучше, погрешность в конце отсчета не превышает 0,05 метра, а это в 10 раз меньше предыдущего значения.

Можно предположить, что уменьшив шаг еще в 10 раз, мы получим еще более точное решение.

Я схитрил, отображая значения всего по 10 точкам с шагом 0,1, на самом деле для получения такой таблицы нужно 100 итераций, а не 10. С шагом 0,001 потребуется тысяча итераций, а результат будет так

Время, с Скорость, м/с Высота, м Точное решение, м
0.0 0.0 100.0 100.00
0.1 -1.0 99.9505 99.95
0.2 -2.0 99.8010 99.80
0.3 -3.0 99.5515 99.55
0.4 -4.0 99.2020 99.20
0.5 -5.0 98.7525 98.75
0.6 -6.0 98.2030 98.20
0.7 -7.0 97.5535 97.55
0.8 -8.0 96.8040 96.80
0.9 -9.0 95.9545 95.95
1.0 -10.0 95.0050 95.00
Если вы пробовали выполнить эти расчеты вручную, то теперь понимаете, насколько они монотонны и трудоемки, если необходима высокая точность.

Вот почему появление численного моделирования совпало с появлением компьютеров.

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

Метод Эйлера — простейший известный метод интегрирования дифференциальных уравнений.

Из нашего простого примера видно, что погрешность метода прямо пропорциональна шагу интегрирования, и это действительно так.

Такие методы называются методами точности 1-го порядка.

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

Но это другая история.

Заключение Подумайте об этом.

Мы рассмотрели очень простой пример.

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

Конечно, там все гораздо сложнее, но принцип тот же.

Представьте, какой мощный инструмент у вас в руках.

Это последняя статья, где мы не будем использовать компьютер.

Я обещал Октаву.

В следующий раз это будет он.

Теги: #моделирование #механика #дифференциальные уравнения #октава #программирование #математика

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.