Введение 3
1 Моделирование задачи А-тел 5
1.1 Постановка задачи А-тел 5
1.2 Методы численного моделирования 10
1.3 Способы визуализации численного эксперимента 16
2 Язык программирования Python 18
2.1 Особенности языка Python при моделировании физических процессов ... 18
2.2 Библиотеки Python для численного моделирования 22
2.3 Возможности языка Python для визуализации данных 27
3 Численное моделирование и визуализация задачи А-тел 34
3.1 Реализация метода Эйлера средствами языка Python 34
3.2 Визуализация задачи А-тел с использованием библиотеки mathplotlib .... 36
3.3 Использование библиотеки PyGame для визуализации модели 38
3.4 Построение анимационных моделей задачи А-тел 40
Заключение 44
Список использованной литературы 45
Приложение А. Программные процедуры численного моделирования и визуализации задачи А-тел на примере солнечной системы 46
Проблема предсказания движения большого числа массивных точек, взаимодействующих по закону всемирного тяготения, получила в физике название задачи N-тел. Данная задача остается актуальной с момента её открытия и по наше время. Это связано с тем, что с помощью данной задачи находят возможности для решения всевозможных возникающих проблем в квантовой механике (то есть микромире), а также задача N-тел помогает объяснить и понять движение таких сверхмассивных тел, как планеты и даже галактики.
Однако решить ее каким-либо другим способом, кроме как методом численного моделирования, не представляется возможным. Задав массы и положения тел в начальный момент, можно по закону тяготения вычислить действующие на них силы. Полагая эти силы неизменными в течение короткого отрезка времени, легко рассчитать новое положение всех тел по формуле равноускоренного движения. А повторяя эту процедуру тысячи и миллионы раз, можно смоделировать эволюцию всей системы.
Цель работы - создание программного кода на языке программирования Python, позволяющего численно промоделировать и визуализировать задачу N - тел.
Достижению поставленной цели способствуют следующие задачи:
1. Рассмотрение задачи N-тел и сравнение численных методов ее моделирования.
2. Изучение возможностей языка программирования Python для моделирования и визуализации задачи движения тел.
3. Реализация программного кода для численного решения задачи N-тел на языке Python и визуализации результатов с помощью библиотек Pygame, matplotib и программы Blender.
Предмет исследования:
1. Гравитационная задача N-тел.
2. Язык программирования Python.
В первой главе представлена актуальность исследования задачи N-тел, её формулировка, а также рассмотрены некоторые методы численного моделирования и способы визуализации.
Во второй главе рассмотрены особенности языка программирования Python, его функциональные возможности, позволяющие промоделировать гравитационную задачу N-тел. Представлены модули, необходимые для численного и визуализированного решения задачи, описаны принципы их использования.
В третьей главе представлена реализация метода Эйлера на языке Python, а также визуализация задачи N -тел на примере солнечной системы в трех видах:
1) построение графиков, представляющих собой траектории движения тел;
2) анимированное представление численного решения задачи с использованием библиотеки PyGame;
3) анимированное представление численного решения задачи N-тел с помощью графического редактора Blender.
Результаты данной работы (программные процедуры) можно использовать для обучения моделированию задачи N-тел на элективных курсах для студентов, к примеру по таким предметам как:
1. Модели в астрономии.
2. Моделирование физического эксперимента.
3. Математическое моделирование в астрономии и космологии.
В результате работы был составлен программный код на языке программ- мированич Python, позволяющий численно промоделировать и визуализировать задачу N-тел. Для достижения этой цели был рассмотрена задача движения тел, было проведено сравнение численных методов ее моделирования, а именно: метода Эйлера, метода Эйлера-Кромера, метода Рунге-Кутты 4-го порядка. Также были изучены основные особенности и функциональные возможностей языка программирования Python на основе описания фундаментальных команд, принципов построения графиков по заданным данным и анимационных моделей.
Таким образом, цель исследования была достигнута, поставленные в начале исследования задачи были решены.
1. Андрюхин А.И. Компьютернный прогресс и задачи небесной механики: исторический ракурс / А.И. Андрюхин, С.Н. Судаков // Информатика и кибернетика. - 2016. -№ 1(3). -C. 4-9.
2. Бахвалов Н.С. Численные методы / Н.С. Бахвалов, Н.П. Жидков, Г.М. Кобельков. - Москва: Лаборатория знаний, 2015. - 639 с.
3. Борисов А.В. Различные аспекты задачи N-тел / А.В. Борисов, А. Шенсине. - Москва: Институт компьютерных исследований, 2011. - 429 с.
4. Волков Е.А. Численные методы / Е.А. Волков. - Санкт-Петербург: Лань,
2008. - 256 с.
5. Горлач Б.А. Математическое моделирование. Построение моделей и численная реализация / Б.А. Горлач, В.Г. Шахов. - Санкт-Петербург: Лань, 2018. - 292 с.
6. Даутов Р.З. Практикум по курсу Численные методы. Решение задачи Коши для системы ОДУ / Р.З. Даутов. - Казань: КФУ, 2014. - 100 с.
7. Демидович Б.П. Численные методы анализа. Приближение функций, дифференциальные и интегральные уравнения / Б.П. Демидович, И.А. Марон, Э.З. Шу¬валова. - Санкт-Петербург: Лань, 2010. - 400 с.
8. Колесников Е.В. Численное моделирование гравитационной задачи N-тел на GPU с использованием технологии CUDA / Е.В. Колесников, К.Г. Крашенинников, А.Ю. Морозов. - Москва: Московский Авиационный Институт, 2016. - 15 с.
9. Лукьянов Л.Г. Лекции по небесной механике / Л.Г. Лукьянов, Г.И. Ширмин. - Алматы: Премьер, 2009. - 227 с.
10. Лутц М. Изучаем Python / М. Лутц. - СПб: Символ-Плюс, 2011. - 1280 с.
11. Лутц М. Программирование на Python / М. Лутц. - СПб: Символ-Плюс, 2011.-992 с.