Моделирование движения системы тел с учетом их гравитационного влияния друг на друга
Цель: Написать программу, моделирующую орбиты системы тел с учетом их гравитационного влияния друг на друга
Предполагается использовать библиотеку matplotlib, а именно функций pyplot и FuncAnimation для создания анимации движения. Этапы:
- Реализовать функцию count_coords(x, y, vx, vy, masses, axprev, ayprev)
- Реализовать функцию count_boost(x1, y1, x2, y2 M, m)
- Создать функцию, моделирующую траектории с помощью FuncAnimation.
запуск программы:
- В файле config "data.txt" - название файла. Данные в файле имеют вид: масса, x0, y0, vx0, vy0 масса, x0, y0, vx0, vy0 ... time - количество шагов анимации
Описание функций:
Функция count_boost(x1, y1, x2, y2 M) Тело М в (x1, y1), m в т. (x2, y2) Возвращаются ax и ay, тк в схеме Эйлера нам нужно ускорение, поэтому можно не домножать на m, чтобы была размерность силы.
Функция count_coords(x, y, vx, vy, masses, axprev, ayprev) Функция использует разностную схему Эйлера с пересчетом. На вход функция получает начальные координаты тела, начальную скорость, массу тела, со стороны которого считается сила, ускорение тела в предыдущий момент. Функция возвращает координаты, скорость и ускорение в следущий момент времени.
init, update - функции для работы FuncAnimation из matplotlib