Пусть есть N материальных точек, имеющих начальное положение и скорость в пространстве, а также массу. Интересует уравнение положения в пространстве каждого объекта в некоторый момент времени t. Релятивизм и прочие финслеровы пространства не интересуют, просто классическая механика. Т.е. F = G m1 m2 / R^2, F = a m, и т.д. PS. Численные методы - отстой. Дают накопительную ошибку и очень ресурсоемки для хорошей точности.
Как найдешь решение - обязательно отпишись. Помнится, еще Стивен Хоккинг писал, что "рассчитать траекторию движения 3х тел в вакууме" - крайне проблематично
_DEN_ Начните с простого. Возьмите просто две материальные точки на расстоянии l с нулевыми начальными скоростями и массами m1 и m2. Ну и рассчитайте время t, через которое они столкнутся. Это не совсем ответ на вопрос, но, когда Вы решите, это поможет осознать сложность задачи.
Magnum l_inc Ну как мне кажется... Для двух тел... F = G m1 m2 / R^2 Это надо привести к системе из трех дифуров. F это вторая произврдная позиции, деленная на массу ну и т.д. Для N тел на каждое будет действовать сила, равная сумме правых частей. Там, видимо аналогично будет система из трех дифуров.
_DEN_ Вообще, если сильно не извращаться, идя по простому пути, то для двух материальных точек достаточно одного дифура.
[edit] p1, p2 - позиции двух точек. p1'' = G m2 (p2 - p1) / norm(p2 - p1) ^ 3 p2'' = G m1 (p2 - p1) / norm(p2 - p1) ^ 3 Во, кажется так. Мда...
_DEN_ Мда... нифигово не извращаемся. Для двух точек достаточно одной оси. Так что пусть в Ваших уравнениях p1 = x1, а p2 = x2. Тогда: x1" = G*m2 / (x2-x1)^2 x2" = G*m1 / (x2-x1)^2 А вот теперь интересно, как Вы эту системку относительно t решать будете.
Это как раз задача численного решения системы дифференциальных уравнений (задача Коши) по возрастанию точности: метод Эйлера модифицированный метод Эйлера метод Рунге-Кутта метод Рунге-Кутта-Фембера Если не хватит точности, кури многошаговые методы Адамса-Бэшфорда/Адамса-Мультона И пара утверждений: Задача Коши n-го порядка сводится к n задачам Коши 1 порядка Система диффуров из n уравнений сводится к диффуру n-го порядка ЗЫ: при решении используй шаг кратный 2 (включая отрицательные степени двойки конечно)
Вот система диффуров для общего случая, n объектов: k уравнений, k = 1, ..., n G, m - константы. scf Спасибо, попробую...)
_DEN_ А вот здесь ты в корне не прав Накопление ошибки это следствие некорректности конкретного численного алгоритма и не более того. Чаще всего эта некорректность следствие попыток сначала сформулировать постановку задачи в виде диф-ура, а затем численно решить уже диф-ур вместо моделирования самого процесса ) (это как Крис в одной из старых статей сравнивал асм с С компилятором - скомпилировал С код в асм листинг и затем его компиляцию сравнил с прямой компиляцией С кода ))) На самом деле численный подход самодостаточен, т.е. модель всегда можно сразу строить численно не прибегая к промежуточной аналитике и именно численный подход самый универсальный, а аналитический всего лишь интересный способ иногда находить приближённые решения . А уж его ресурсоёмкость (загрузка мозгов) на более менее серьёзных задачах это вообще жуть ) Например, существующее аналитическое решение для двух тел позволяет приблизительно смоделировать взаимное движение луны и земли, но в реальности на луну и землю действуют как минимум все остальные планеты (+ солнце солнечной системы, наличие на земле океанов и т.п. - на фоне этих воздействий ошибка численного округления соизмерима с метеорным дождём (т.е. влиянием космического мусора). И несмотря на наличие таких серьёзных влияний луна не уклоняется от "правильного пути" вокруг земли - думаешь она ориентируется на аналитическое решение? вовсе нет - её основной ориентир - принцип динамического равновесия, вот его и клади в основу численного моделирования если заставишь численную модель "плясать" вокруг "условий реалистичности" (здесь это принцип Д’Аламбера, в других задачах другие условия), то численная ошибка перестанет накапливаться и станет тем чем и должна быть - слабым случайным воздействием, которое к тому же имеет физический смысл - влияние космического мусора ) Отладь процесс на двух телах, сравнивая с аналитикой, и получишь универсальный инструмент в который можно добавлять как тела, так и другие факторы (например океаны, гравитационные аномалии и т.п. - в аналитике и тела то не больно подобавляешь, а уж про "разнородные" воздействия и говорить не приходится ЗЫ: Нобелевку за такое решение вряд-ли получишь - подумаешь "численным подходом больше/меньше" )) но на самом деле это правильно, универсально и не просто не хуже, а намного лучше аналитики
Y_Mur Поторопился поторопиться Любое численное решение диффура так или иначе - численное интегрирование. А любое численное интегрирование это либо накопление ошибки, либо линейный рост сложности вычислений с линейным ростом переменной.
_DEN_ но можно поступать по разному вариант 1: строить диф-ур, убеждаться в его аналитической неразрешимости, переходить к играм с различными численными методами решения диф-уров. Очевидный недостаток - диф-ур модель уже "идеализированный\стерилизованный случай" в котором отброшено всё что не влазиет в жёсткие рамки такой постановки задачи. Это во-первых сильно ограничивает исходную гибкость численного подхода изначально не отягощённого условностиями диф-ура , а во вторых заставляет численное решение подстраиваться под уже приближённую постановку задачи и считать диф-ур эталоном до которого ему ооочень далеко вариант 2: на основе элементарных математических выражений общих физических законов строить элементарную модель (в данном случае для момента времени, в других задачах для "кусочка" конструкции и т.п.), затем переходить к итерационному объединению этих кусочков/моментов времени и т.п. На первый взгляд это очень похоже на то что происходит при формулировке и численном решении диф-ура, но только на первый взгляд - до тех пор пока не начнёшь разбираться что же такое численные методы решения диф-уров на самом деле а на самом дле разница между 2 и 1 такая же как между кодом написаном на асме и на VB, отягощённом Hi-level условностями и неуклюжим компилятором ) При этом втором подходе очень важно чётко сформулировать "условия реалистичности" промежуточного решения, которое позволяет постоянно возвращать "уходящее решение" в правильное русло - это как раз лекарство от накапливающейся погрешности . Кстати по аналогии с интегралами, где однажды проинтегрированная функция может подставляться в более сложные модели, при этом подходе 2 тоже можно находить "пространства численных решений" для подзадачи (которая не решается аналитическим интегрированием , интерполировать эти решения и тоже подставлять в более сложные модели - такой подход резко снижает ресурсоёмкость модели делая решение похожим на аналитическое со всеми его достоинствами (в конце концов какая на разница как представлено решение - функцией, рядом, или набором интерполяционных коэффициентов, обеспечивающем требуемую точность) Я сейчас играюсь с этим вторым подходом на другой задаче очень интересная и перспективная весчь , хотя почему-то малоупотребляемая, и совершенно уверен в универсальности этого подхода
Помедитировал ещё и пришёл к выводу, что принцип Д’Аламбера необходимое, но недостаточное "условие реалистичности" если ориентироваться только на него итерационная модель "уйдёт". Для стабилизации нужно добавить закон сохранения энергии или импульса (думаю будет достаточно только одного из них), на основании которого нужно корректировать шаги траектории, вычисленные по принципу Д’Аламбера + закон равноускоренного движения, тогда даже при достаточно крупных шагах по завершению "переходного процесса", стационарное решение для двух тел совпадёт с Кеплеровским эллипсом как и положено "с точностью до константы", т.е. эллипс может отличаться положением в пространстве (которое вообще-то безразличное) или прециссировать, но по форме и взаимному расположению фокусов будет правильным (без ярковыраженной накопленной погрешности). А вообще-то задачка прикольная (давненько я про неё не вспоминал), как нибудь на досуге замоделирую )
Не существует общего решения для N>3. Для N=3 были получены т.н. ряды Зундмана, область применения которых сводится на нет вследствие их чрезвычайно медленной сходимости. Если вам интересно, погуглите "гравитационная задача N тел". То есть остаются только численные методы.