Хабрахабр

Моделирование динамических систем: введение

Трудно переоценить значение компьютерного моделирования в современном мире. Давным давно канули в Лету времена, когда траектории выведения спутников на околоземную орбиту вычислялись толпой девушек-расчетчиц с «Феликсами» наперевес (была такая вычислительная машина). Сегодня скромных размеров ящик около вашего рабочего стола решает все мыслимые и немыслимые задачи. Но есть одно «но».

Состояние инженерного образования, не знаю, как там в столицах, а здесь, на периферии, выглядит в контексте данного вопроса удручающе. Винить тут стоит подход к преподаванию в вузах таких дисциплин как «Численные методы решения инженерных задач на ЭВМ», «Математическое моделирование в %нужное впишите сами%» и прочих. Эта беда инженерного образования вытекает из того факта, что в курсах, подобным перечисленным, порой напрочь отрублены междисциплинарные связи. У обучаемого не складывается в голове цепочка: фундаментальная теория -> практическое применение -> инструмент решения задачи.

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

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

Именно "Начала..." Ньютона, заложившие основы дифференциального исчисления с практическим выходом в сторону механики сделали последнюю первой в истории настоящей научной теорией. Законами механики, где-то успешно, где-то не очень, стали пытаться объяснять все явления, происходящие в природе, от оптики до электричества, от термодинамики до строения вещества. Время расставила точки над «i», на смену механистическим принципам пришли другие теории, да и сама механика изрядно эволюционировала. Но вместе с тем, механика, как никакая другая дисциплина наглядно и подробно иллюстрирует всё то, о чём мы будем говорить ниже. Большинство примеров данного цикла будет так или иначе связано с моделированием механических систем, по крайней мере в первых его статьях.

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

  1. Читатель таки должен быть знаком с основным содержанием курса математики, понимать что такое векторные величины. Без этого ну никак. Буду стараться снабжать текст ссылками для подробного изучения узких мест, но в подробности вдаваться не буду
  2. В качестве инструмента для выполнения численных расчетов будем опираться на пакет GNU Octave. Почему — две причины. Он бесплатен, является аналогом Matlab и содержит всё необходимое для наших целей. Вторая причина — я сам хочу с ним познакомится, так что пусть это будет моей прихотью )
  3. Автор ждет замечаний к материалу, излагаемых в любой форме, будь то комментарии, письма, прочее. Это поможет сделать материал лучше.

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

  1. Что понимают под телом?
  2. Как определяют его положение в пространстве?

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

  1. Материальная точка (или просто «точка»)
  2. Абсолютно твердое тело (или просто «твердое тело»)

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

Земля имеет диаметр порядка 13000 километров. Солнце — почти полтора миллиона километров. Ничего себе точки! Но вот расстояние между ними 150 млн. километров, а путь проходимый Землей за год по орбите около миллиарда километров. Как видим, в таких масштабах пространства Землю и Солнце можно действительно считать точками.

А если мы хотим изучать вращение Земли вокруг своей оси?

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

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

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

2.1. Векторный способ задания движения

Все очень просто — из начала координат O к точке M проводят вектор. Длина и направление этого вектора позволяют нам судить о том, где расположена точка.

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

$\vec r = \vec r(t) $

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

2.2. Координатный способ задания движения точки

Мы может провести из начала отсчета три взаимно перпендикулярных оси x, y, и z. Тогда положение точки будет определятся тройкой чисел — координатами в декартовой системе.

В этом случае закон движения точки это три функции времени

$\begin{cases} x = x(t) \\ y = y(t) \\ z = z(t) \end{cases}$

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

2.3. Естественный (траекторный) способ задания движения точки

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

В этом случае нам придется определится с тем, в каком направлении вдоль кривой координата s отсчитывается в положительном направлении и тогда функция

$s = s(t)$

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

Скорость точки — это первая производная радиус вектора точки по времени

$\vec v = \frac{d\vec r}{dt}$

Вектор скорости направлен по касательной к траектории точки.

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

$\begin{cases} &v_x = \cfrac{dx}{dt} = \dot x \\ &v_y = \cfrac{dy}{dt} = \dot y \\ &v_z = \cfrac{dz}{dt} = \dot z \end{cases}$

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

Ускорение точки — это первая производная от вектора скорости точки, или вторая производная от радиус-вектора точки

$ \vec a = \frac{d\vec v}{dt} = \frac{d^2\vec r}{dt^2} $

В декартовых координатах это выглядит так

$ \begin{cases} &a_x = \dot v_x = \ddot x \\ &a_y = \dot v_y = \ddot y \\ &a_z = \dot v_x = \ddot z \end{cases} $

Тут двумя точками над функциями обозначена вторая производная по времени.

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

В школе рассказывают о законах Ньютона. При этом часто допускают фундаментальную ошибку — забывают сказать, что эти законы сформулированы и справедливы исключительно для материальной точки. И совершенно не работают для твердого тела (тише, тише, не надо гневных возгласов, я всё объясню).

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

Аксиома 1 (Первый закон Ньютона)

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

Как преподаватель механики с довольно неплохим стажем я предпочитаю именно эту формулировку принципа инерции классической механики чем путанную школьную «существуют такие системы отсчета, относительно которых бла-бла-бла...». Из этой формулировки сразу понятно: чтобы механическое движение происходило, совершенно необязательно действие силы. Если сил нет, или их действие на точку скомпенсировано, то её движение будет происходить по инерции, по прямой с неизменной скоростью. Чтобы направление и величина скорости изменилось, нужна причина, а именно

Аксиома 2 (Второй закон Ньютона)

Вектор ускорения точки, умноженный на её массу равен действующей на точку силе

$\vec F = m \, \vec a$

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

Аксиома 3 (Третий закон Ньютона)

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

$\vec F_{1,2} = -\vec F_{2,1}$

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

Аксиома 4 (Принцип независимости действия сил)

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

Отсюда вытекает, что при действии на точку нескольких сил справедливо уравнение

$m \, \vec a = \sum \vec F_k$

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

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

Теперь объясню, что я имел в виду, говоря что законы Ньютона справедливы только для материальной точки. Это действительно так, представьте себе твердое тело, движущееся в пространстве. Черт возьми, выйдите на улицу, поднимите с земли палку побольше и швырните её подальше. Видите? Каждая точка палки движется по своей траектории. А значит у каждой точки палки своё собственное ускорение. К какой из этих точек применим второй закон Ньютона? Он применим к каждой точке палки, но не к палке в целом. Понятия «ускорение палки», «траектория палки» бессмысленны. Имеют смысл ускорение и траектория конкретной точки палки, например её центра масс.

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

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

$ m \, \frac{d^2\vec r}{dt^2} = \sum \vec F_k $

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

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

$ \begin{cases} &m \, \ddot x = \sum F_{kx} \\ &m \, \ddot y = \sum F_{ky} \\ &m \, \ddot z = \sum F_{kz} \end{cases} $

С помощью дифференциальных уравнений движения точки решают две фундаментальные задачи

Первая (обратная) задача динамики

По известному закону движения точки определить действующую на точку силу

Пусть мы знаем закон движения точки, заданный в виде зависимости радиус-вектора от времени

$\vec r = \vec r(t)$

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

$\vec R = m \, \frac{d^2 \vec r}{dt^2}$

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

Вторая (прямая) задача динамики

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

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

$m \, \frac{d^2\vec r}{dt^2} = \vec R\left(t, \vec r, \frac{d\vec r}{dt} \right)$

Мы получили уравнение, содержащее неизвестную функцию $\vec r(t)$ а так же две её производные. Такое уравнение в математике называют дифференциальным. Его решение в конечном счете сводится к интегрированию — операции обратной нахождению производной. Поскольку уравнение содержит вторую производную неизвестной функции, оно является уравнением второго порядка, а значит брать интеграл придется дважды.

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

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

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

Благодарю за внимание и до новых встреч!

Теги
Показать больше

Похожие статьи

Кнопка «Наверх»
Закрыть