Это я

Пользователь:

Гость

Вход

Зарегистрироваться

Это я

Головная страница   Блог   Euclidea  


Численные методы решения дифференциальных уравнений

7.05.2021 05:33:06

Вот такой неожиданный выверт сознания. Смотрел "Салют-7", пересматривал. Земля в иллюминаторе видна. Огромная. И что-то торкнуло, а что если посчитать, как какая-нибудь МКС летает. Не аналитически, а именно построить модель, тем более, что Psim стоит на компе, что б не построить.

Исходные данные просты. Вращение Земли, влияние Луны, атмосферу, неравномерность гравитации не рассматриваем. Есть две материальных точки, массивная Земля и спутник на орбите 200 км. Задана начальная скорость и местоположение исходя из уравнения кругового движения. Задача, получить картинку движения за пару оборотов.
Построил в лоб. Уравнения с помощью идеальных элементов. Запускаю, спутник улетает в космос по расширяющейся спирали. Не понял. Перепроверил. Правильно все. Задал более мелкий шаг, улетает, но медленнее. Еще мельче, еще лучше, но дальнейшее уменьшение шага выносит всю память на неплохом компе.
Думаю. Мысль одна. Видимо, метод расчета неверный. В модели в лоб реализован метод Эйлера, а у него может набегать большая погрешность, особенно при односторонней производной. А даже продвинутый метод Эйлера требует двух расчетов на шаге и простая модель такое не может. Как вариант надо писать элемент, в котором программно будет реализован расчет. Но там свои проблемы есть с программным модулем. Плюнул.
Взял старый добрый Эксель. Когда-то любимая программа была. Очень крутая на самом деле. Мало кто знает все ее возможности. А уж VBA встроенный, вообще превращает в универсальный расчетчик. Но для данной задачи таблицы достаточно.
Загнал Эйлера в таблицу, улетает спутник. Так же по спирали.
Модифицированный Эйлер уже дал практически круговую орбиту. Вторым модифицированным тоже. Погрешности на двух оборотах порядка 0,3% по радиусу при шаге 1 минута и обороте 92 минуты. Многовато.
Долго разбирался с методом Рунге-Кутты четвертого порядка. Ошибся при вводе уравнений несколько раз. Бросил объемные писать, ввел в ячейках действия пошагово. Много ячеек получилось, на два экрана с трудом влезло. Зато заработало. И погрешность за два оборота всего 0,00025% при тех же условиях! На три порядка лучше! Практически круговая орбита.
В общем, доволен. Получилось, хотя и не так, как планировал. Правда, зачем мне это? А просто потому, что хочется! Вдруг, пригодится. Не расчет орбиты, конечно, а само применение численных методов при решении какой-либо задачи. Хотя, до сих пор простого Эйлера с линейной аппроксимацией экспонент в точке для моих задач хватало.

Теги статьи: math

Лайков: 0

Назад