Найти тему

Почему я использовал центр кривизны

Истинная и приближенная траектории движения тела.
Истинная и приближенная траектории движения тела.

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

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

F = G*M / R^2

явствует, что третье тела почти не играет роли в движении двух «влюбленных». Эта пара набирает колоссальную скорость двигаясь навстречу друг другу, шутка ли, знаменатель стремится к нулю! Но именно эта скорость позволяет телам облететь друг друга, иногда совершая поворот на угол более 180 градусов. Да-да! Это уже не гипербола-парабола, это петля!

Теперь давайте посмотрим на это с точки зрения векторов и методики приближений. Посмотрите рисунок на заставке.

На рисунке серым кружком показано тело, к которому приближается расчетное тело, три правильных положения которого отмечены синим цветом. Желтым кружком обозначены положения, в которые приводят методики последовательных приближений. Синие стрелки – истинные скорости V0,V1,V2, желтые – приближенные RV1, RV2. Красные вектора – истинные ускорения W0,W1,W2, коричневые – приближенные RW1 и RW2. И наконец зеленая загогулина – истинный путь. Расчетный путь показывать не стал, чтобы не загромождать рисунок.

По любому из знакомых мне методов, чтобы вычислить следующую точку, надо взять скорость и ускорение в нулевой точке и из них посчитать положение первой точки. Затем можно определить ускорение в первой точке, после чего вернуться к нулевой, чтобы уточнить перемещение с учетом нарастания ускорения, считая, что ускорение растет линейно. Далее можно таким же образом перейти к третьей точке и проверять уже все три. Можно добавить еще и половинный шаг, для проверки отсутствия выбросов 3-го и 4-го порядков. В любом случае критерием истины может быть только повторение значений ускорений на двух последующих шагах. Повторюсь, у нас нет никаких законов кроме закона взаимного притяжения.

В данном алгоритме заложены три потенциальные ошибки.

1. Ускорение растет далеко не линейно по мере перемещения тела, значит каждая расчетная точка уже не может быть достигнута правильно, а скорость во второй точке и путь к ней не могут быть верно определены. Но что интересно, расчетное ускорение в новых точках имеет очень высокий градиент, особенно на близких к нулю расстояниях, и в этом поле ложных ускорений всегда найдутся точки, где соблюдаются все равенства, которые можно использовать для контроля истины. Я ставил счетчик итераций на 128, и могу сказать, что при требуемой точности 4 младших разряда из 64 (даже боюсь считать доли процентов 16/(2^64-1)) потребовалось максимум 78 итераций приближения к равенству двух шагов.

2. Разложение скоростей и ускорений на составляющие по осям координат совершенно не позволяют учитывать взаимный угол между скоростью и ускорением. А ведь именно этот угол поворачивает тело. Большое радиальное ускорение не разгоняет тело ни по какой оси координат, а только изменяет направление.

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

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

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

F = (m*V^2) / R

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

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

Для тех, кто получил мою программу, маленькая инструкция к применению:

- Запустить программу

- нажать меню «Файл»

- нажать меню «Выбор рисунка»

- указать рисунок из открывшегося списка, где перечислены около 600 китайских наработок

- нажать кнопку «ОК» внизу списка.

- можно открывать новый рисунок, не дожидаясь завершения первого.

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

Спасибо, что были с нами!