Закон всемирного тяготения (или 4-й закон Ньютона) гласит: сила притяжения двух материальных тел прямо пропорциональна произведению их масс и обратно пропорциональна квадрату расстояния между ними.
Ньютон установил, что два тела под действием взаимного притяжения могут двигаться только по эллипсу, параболе или гиперболе около общего центра масс. Задача о движении трех и более тел оказалась намного более трудной. Доказано, что она не может быть решена путем получения соответствующих математических формул, описывающих движение тел в каждый момент времени, кроме отдельных частных случаев. Таковы, например, "треугольник Лагранжа" и, найденное в 2000 г. решение - "невероятная восьмерка". С развитием вычислительной техники стал возможен "численный эксперимент". Зная взаимное расположение тел, их массы и скорости в начальный момент, легко рассчитать силу воздействия на каждое тело со стороны всех остальных. Полагая, что в короткий отрезок времени движение под этим воздействием происходит по прямой, определим новое положение и скорость каждого тела. Затем цикл расчета повторяется. Если шаг по времени выбран малым, то мы вправе ожидать, что получим достаточно точные траектории движения тел. Проверка правильности расчета состоит в его повторении для вдвое меньшего и вдвое большего временных интервалов. Если результат не меняется, значит, все в порядке. Вашему вниманию предлагается программа для персонального компьютера, демонстрирующая движение множества небесных тел под действием взаимного притяжения. Имеется 2 способа задания начальных условий: таблицами координат и скоростей или скриптами на т.н. "языке описания сцен". Результаты расчета выводятся на экран в виде анимации. Анимация может быть приостановлена на любой стадии, а так же замедлена или ускорена. По окончании расчета на экран выдается чертеж траекторий небесных тел.Программа снабжена подробной справкой и большим количеством примеров. В их числе: классический "треугольник Лагранжа"; открытая уже в наши дни "невероятная восьмерка"; гипотеза О.Ю. Шмидта о возникновении планетных систем; модель Солнечной системы и др. License: freeware. OS Windows 7, 8, 10, 11 (64 bit). Interface: Russian, English. Install: unpack ZIP archive. 1. Как это было. От теории к практике Июньской короткой ночью над городом скрежетала гроза. С очередной зарницей я оставил напрасный счет слонов и позволил мыслям парить свободно. И тут... осенило. Это можно сделать! Когда алгоритм, короткий и ясный, окончательно сложился, я не заметил, как уснул. "Изделие" вчерне было закончено за 2 дня, оставалось только "зачистить напильником". Почему так споро? Я - не гений, просто для альфа-версии проекта использовал язык программирования Python и готовый компонент FloatCanvas для графической библиотеки wxPython. Впоследствии программа была переписана на Delphi, что сократило размеры дистрибутива в 10 раз, и увеличило быстродействие раз в 15-20. Python очень красивый и необычайно мощный язык, но, к сожалению, медленный. Поэтому Python часто используют для предварительного программирования сложных проектов, когда надо вовремя предъявить готовый и работающий продукт. Потом критичные блоки перекодируют на Си или Дельфи. Практика - критерий истины, кто это сказал? Если программа будет правильно отображать движение небесных тел для классических, еще Кеплером и Ньютоном рассмотренных случаев, то заложенные в алгоритм посылки, скорее всего, верны. А они вот такие. Сперва я рассматривал плоскую задачу многих тел, исключительно потому, что мониторы на компьютерах, сами понимаете, тоже плоские. Это не слишком большое ограничение - планеты Солнечной системы лежат практически в одной плоскости, системы спутников планет обладают тем же свойством, да и галактики при взгляде издалека в определенных ракурсах напоминают блин. Так что, на первую попытку, хватит нам икса с игреком. Ось X направлена горизонтально вправо, Y - вверх. Но, с самого начала, алгоритм был разработан для трех измерений, просто для первых экспериментальных расчетов, координата Z полагалась равной 0. Итак, каждое небесное тело характеризуется положением (X,Y,Z), радиусом, массой и цветом, чтобы отличать от других. Если цвет не задан, он назначается программой произвольно. Все тела рисуются на экране. Затем рассчитывается смещение каждого тела под воздействием остальных - предполагается, что в краткий отрезок времени оно происходит по прямой. Возможные коллизии обрабатываются программой, как абсолютно неупругие. Шаг по времени (dt)чисто условно полагается равным 1, это упрощает запись формул. Последовательность шагов такова (метод Эйлера-Кромера): Если pt, vt, F(pt) - векторы координат, скоростей и ускорений тел в момент t, то: vt+1 = vt+F(pt); pt+1 = pt+vt+1 А можно так (метод Рунге-Кутта 4-го порядка): k1 = F(pt); k2 = F(pt+k1/2); k3 = F(pt+k2/2); k4 = F(pt+k3); vt+1 = vt+(k1+2k2+2k3+k4)/6; pt+1 = pt+vt+1 Или вот так (метод Верле в скоростной формулировке): pt+1 = pt+vt+F(pt)/2; vt+1 = vt+F(pt)/2+F(pt+1)/2 Экран очищается и рисуются цветные кружочки в их новых позициях. И так много раз в секунду. Мультик готов. Уменьшая величину шага по времени, можно достичь впечатляющей точности - здесь все указанные методы равноценны.
2. Несерьезные эксперименты Исходные данные для расчета выглядят, прямо-таки, как шпионский шифр. Либо... как тарабарский язык описания сцен. (Скажу по секрету, что это - популярный среди разработчиков компьютерных игр скриптовый язык Lua). Итак, начали...
Это не рецепт спагетти, а описание начальных условий хоровода из 8 звезд:
Устойчивость метода можно оценить по тому, как он моделирует классические конфигурации. Так, после 500 витков (свыше миллиона итераций) "невероятная восьмерка" ни на йоту не изменила формы. Преисполнившись энтузиазма, продолжим... Гипотеза Канта. Вначале был Хаос. Из него, путем объединения частиц, возникло Солнце и планеты. Круговое движение последних есть результат осреднения скоростей. Сказано - сделано. 150 тел с экспоненциальным распределением масс хаотично движутся в согласии с учением великого философа. Старт... 3 минуты, 16000 итераций... финиш.
Комментарий. Из ничего и не будет ничего. Суммарный вращательный момент системы если и отличен от 0, то очень ненамного, за счет статистических отклонений. Все массы сливаются в одно Солнце и только несколько мелких, случайно уцелевших ошметков, болтаются вокруг по сильно вытянутым орбитам. Повторы эксперимента ничего более интересного не дали. Гипотеза О.Ю.Шмидта. Известно, что вращательный момент планет составляет 98% вращательного момента всей солнечной системы. Предположим, что околосолнечное протопланетное облако обладало им с самого начала. Как?! Было захвачено пролетавшим сбоку Солнцем и заверчено вокруг него, как ловит партнершу фигурист на льду? Законы небесной механики этого не допускают. Сыграла роль "помощь" другой звезды? Маловероятно. В общем, примем это, как данность. Сказано - сделано. 200 хаотически расположенных тел вращаются в одну сторону вокруг звезды. Начальные скорости генерируются случайным образом в интервале 0.6..1.0 круговой. Распределение масс - экспоненциальное. Общая масса облака составляет 0.5% от массы звезды. Размеры протопланетных тел сильно преувеличены, чтобы а) видеть их на экране, б) обеспечить достаточную вероятность слипания при сближении. (Или, можно полагать, что звезда и облако очень уж карликовые. Для точного соблюдения масштабов надо брать в расчет многие тысячи протопланетных тел и иметь доступ к суперкомпьютеру ). Вот как в нашем примере задаются начальные условия на "языке описания сцен": h = {} Расчет продлевался дважды по истечении очередных 40000 итераций. Через несколько минут, в районе 100000-й, я решил: хватит.
Окончательное сотворение планетной системы требовало до 200000 итераций. По мере слипания протопланет число "действующих лиц" уменьшалось и первоначальное легкое торможение при смене кадров исчезало. Когда от вращения остатков облака начинало мельтешить в глазах, я использовал такой прием. Еще больше ускорял демонстрацию нажатием клавиш "Ctrl+]" до тех пор, пока не получал статическую картинку, меняющуюся не чаще раза в 1-2 сек. Таким способом 40000 итераций могут пролететь за несколько секунд. Когда становилось ясно, что процесс завершился, то возвращал нормальную смену кадров неоднократным нажатием на "Ctrl+[". Затем F10, чтобы включить режим эскиза. При остановке сцены (Ctrl+Q) через пару-тройку секунд на экране возникали планетные орбиты во всей своей красе.
Формировалось, как правило 5-6 планет, 1-2 самые крупные всегда находились в середине системы. Обычным явлением была небольшая внешняя планета с заметно вытянутой орбитой. Для больших полуосей орбит в 75% случаев удовлетворительно выполнялся закон планетных расстояний: Ln = akn, где a > 0 и k > 1 - константы. Еще в 15% случаев из гармонического ряда выпадала лишь последняя планета.
А вот оставшаяся десятая доля в ЗПР не вписывалась. Все такие системы имели особенность: пару планет-сестер, обращающихся по очень близким симметричным орбитам. Вместе с солнцем они образовывали фигуру, похожую на треугольник Лагранжа, с той разницей, что угол между радиус-векторами в некоторых случаях периодически менялся. (От 30 до 120 градусов). Комментарий. Не будем бомбардировать телеграммами Академию наук! Вспомним, что наши доморощенные эксперименты - это всего лишь завораживающая игра. Так к ним и нужно относиться. И, вообще, задача N тел может иметь "хаотический" характер, когда ничтожное отклонение в начальных условиях совершено меняет вид траекторий. Даже изменение шага расчета в этих примерах приводило к построению другой планетной системы. Хотя качественно характер решения сохранялся. 3. Новые горизонты! Три измерения
|
|||||||||||||||||||||||||||||||||||||||||