Руководитель: Иван Лысов
Участники проекта:
Горбачёв Сергей
Гук Александр
Кешелава Тимур
Михеев Дмитрий
Подоляко Теодор
Юрлин Сергей
В рамках работы проекта "Транспорт" изначально планировалось исследование ряда задач среди которых центральное место занимала задача моделирования движения электропоездов по железной дороге заданной топологии по заданному расписанию. Здесь основными проблемами являются проблема возникновения коллизий в расписании (типа едущих друг навстречу другу по одноколейной дороге поездов), а также устойчивость расписания (возможность возникновения подобных коллизий при небольших отклонениях от расписания) Однако в силу ряда причин основным направлением деятельности проекта была задача исследования полета пассивного тела в гравитационных полях, создаваемых различными телами.
В первый же день весь проект был разделён на несколько частей, чтобы полнее исследовать такой большой объём транспортных средств. Таким образом в нашем проекте было 3 группы. Первая занималась космосом и ракетами, вторая электричками, а третья гироскопами.
Таким образом, наш проект продолжил разработку программы по запуску спутников, которая должна была рисовать траекторию по заданным скоростям и высоте запуска. В процессе подбора было найдено несколько пар числовых значений для круговой, эллиптической и гиперболической траекторий. Однако программа ещё была далека от совершенства, так как при некоторых значениях скорости или высоты спутник либо пролетал сквозь Землю, либо компьютер "ударялся" в бесконечные рассчёты гиперболической траектории.
Для того, чтобы удалить эти недочеты программы, в ней была создана система масштабирования, которая очень долго не хотела работать, но, пересчитав формулы этого кусочка программы, нами было найдено некоторое число ошибок, немедленно исправленных после обнаружения. Параллельно проводилось обрубание гиперболических орбит по их вылету за экран.
Когда спутник худо-бедно удалось пускать по необходимым траекториям, было принято решение о пуске сразу нескольких спутников по разным траекториям. В этой программе высчитывалось не только сила притяжения между предметом и гравитирующим центром, но и между самими спутниками. Во время програмированния обнаружился глюк в программе(в результате чего произошло исследование сопряженной задачи), к которому была вставлена пищащая музыка наподобие "Звёзных войн", а спутники при этом выписывали весьма странные траектории. В результате получился довольно неплохой скринсейвер, но эту линию продолжать мы не стали по причине ее слабой связи с основной идеологией проекта.
Чтобы облегчить доступ к программе людям извне, был создан файл, из которого берутся данные по скорости и начальным координатам планет Солнечной Системы, т.е. при запуске программы остается пару раз нажать Ввод.
Продолжая увеличивать число объектов, мы поняли (после того как, n>5, где n число спутников), что это занятие бесполезное . Поэтому мы подумали: "А почему бы не запускать спутник к другим планетам?" Но по найденным справочным материалам, стало очевидно что пускать космический корабль к Марсу напрямик несколько дороже и менее экономично, чем запустить его через некий другой достаточно мощный гравитационный центр, чтобы, разогнавшись в его гравитационном поле, полететь к заданному объекту. Напимер, корабль программы "Аполлон"(если она действительно была) разогнался в гравитационном поле Земли, правда только с помощью двигателей, и только затем полетел к Луне. Зато японский спутник запускали к Марсу через Венеру. Вот мы и решили запустить в программе спутник именно таким способом.
Для того, чтобы эта цель стала возможна, наш проект, используя уже имеющуюся программу, поставил в ней 9 тел, являющиеся соответственно девятью планетами Солнечной системы (Была также информация и о десятой планете, открытой русскими специалистами недалеко от Плутона, ласково названной "Катюшей", ранее известная как "Планета-Х" и "Немезида". Но из-за неимения данных о её массе и радиусе её обращения, она не была включена в программу). Планеты достаточно полно подчинялись законам физики.
Пытаясь разобраться с этим, мы обнаружили целых два, вполне нужных, глюка. Первый из них произошёл, когда мы решили выводить данные счета программы не на экран, а в отдельный файл, в результате чего был создан захламляющий вирус, который за 1 минуту забивает текстовым файлом более 250 Мб свободного места на винчестере. По скромным подсчётам, эта программа может забить любой винчестер независимо от его объёма, притом файл можно засунуть в папку Windows с неким названием, к примеру, Windows.txt, где его трудно будет найти. Второй глюк - это опять скринсейвер, на котором планеты своими траекториями рисуют либо узлы , либо постепенно закрашивают экран.
В конце концов все глюки были устранены и программа заработала как надо: планеты движутся по своим, правда круговым, орбитам(изображены кругами, по которым движутся точки-планеты), а в центре нарисовано Солнце, причём по нажатии "+" или "-" масштаб увеличивался или уменьшался, а по нажатии "*" или "/" программа увеличивает и уменьшает скорость вращения планет. В ходе практического эксперимента по увеличению скорости, обнаружилось, что планеты через некоторое, достаточно большое, количество лет сойдут со своих орбит и начнут удаляться от Солнца. Однако скорее всего этот конец света основан только на погрешностях вычислений из-за скорости изменения времени.
Когда же наконец программу удалось заставить работать так, как нам надо, проект принялся создавать спутник, который, с заданными нами начальными скоростями и начальной высотой полёта, летал между планетами по разным траекториям (по орбите Земли, вокруг Солнца, или от планеты к планете).
...И вот спутник уже летает как надо, но осталась ещё одна довольно большая проблема: орбиты планет остались круглыми! Поэтому мы стали делать побочную программу, которая помогла бы нам сделать их реальными - эллиптическими. Поскольку рядом не было необходимых справочных материалов, нашему проекту пришлось самим выводить нужную формулу эксцентриситета, что весьма замедлило исследовательский процесс. Вначале, когда ничего не получалось, даже была написана программа, считающая эксцентриситет методом научного тыка. Но и это не помогло, поэтому, пересчитав снова все на бумаге, мы нашли несколько ошибок, допущенных нами в начале расчёта эксцентриситета. Воспряв духом, наш проект принялся за исправление неправильной программы. Наконец она была закончена и началось оформление программы. Также было замечено, что орбита спутника немного постоянно смещается. Проанализировав этот факт проект пришёл к выводу, что это смещение вызвано гравитацией других планет, которые притягивают спутник к себе, пролетая мимо.
В Солнечной системы были выделены следующие основные классы тел по характеру их поведения:
1. "Планета" Имеется ввиду тело, летающее вокруг другого, с много большей массой
2. "Спутник" Имеется ввиду тело, являющееся "планетой" относительно другого тела, являющегося в свою очередь "планетой" относительно третьего, значительно более массивного тела.
3. "Межпланетник" Имеется ввиду объект, стартующий из окрестности какой-либо планеты и проходящий через некоторое время вблизи другой планеты, спутником которой в результате и становится.
4. "Инфинитные" объекты . Тела, обладающие энергией, достаточной для того, чтобы вылететь сколь угодно далеко . В рамках проекта Транспорт не рассматривались .
Для моделирования тел класса "планета" была написана программа численных расчетов т.н. Задачи двух тел . Программа по задаваемым извне параметрам системы рассчитывала кинематические и динамические параметры полета . Инфинитные тела распознавались как тела с положительной полной энергией и программой не обрабатывались . Также была создана графическая система вывода, отображающая на экране траекторию планеты . В паре с ней была создана система автомасштабирования, вычисляющая оптимальный для наблюдения рассчитываемой системы масштаб .
Для моделирования более сложных систем программа была модифицирована:
1. Программа пригодна для расчета многих взаимодействующих тел .
2. Определение инфинитных тел было крайне затруднено, так как в случае задачи более чем двух тел знак полной энергии не является удовлетворительным критерием финитности тела. В связи с этим блок определения финитности был отключен .
3. Был создан ряд средств, позволяющий управлять изображением: появилась возможность динамически менять масштаб, а также сдвигать центр картинки .
Чтобы облегчить доступ к программе людям извне, был создан файл, из которого берутся кинематические данные тел моделируемой системы .
Для удобства из файла читались только "крупные" тела, для ввода параметров еще одного тела было предусмотрено специальное встроенное приглашение.
Таким образом можно "с экрана" вводить параметры еще одного объекта .
Понятно, что эта программа ориентированна преимущественно на объекты класса "спутник" и "межпланетник"
Для моделирования тел класса "спутник", однако существует, однако, и другой подход: сначала моделируется полет спутника вокруг его центра, а потом движение системы спутник - центр вокруг центрального тела .
Эта идея, хоть и была признана более простой, не была реализована, хотя все возможности для этого были - необходимо было лишь "связать воедино" две программы обсчета тела класса "планета" . Красивой, также представляется задача исследования полета "спутника k-го порядка", хотя практической ценности подобные расчеты не представляют .
Также остается открытой проблема инфинитных тел, в том числе задача: "можно ли не рассчитывая траектории всех тел выделить "финитные" и "инфинитные" тела?" Как упоминалось выше, банальное вычисление полной энергии не является в данном случае удовлетворительным критерием.
User's Manual
Эксцентриситет.
1. Запустить "Ellipse.exe" нажатием Enter.
2. В появившемся приглашении для ввода напишите начальную высоту полёта объекта.
3. Введите необходимый эксцентриситет.
4. Нажмите Enter для начала рассчетов.
5. Подождите некоторое время.
6. Скорость, необходимая для заданного эксцентриситета орбиты после окончания рассчетов будет распечатан в файл speed.txt.
7. Программы завершена, выход по нажатию Enter.
Примечание : данная программа предназначена для использования 'разумным' пользователем , т.е. в ней не предусмотренно никаких проверок на корректность задаваемых параметров.
"SOLAR2_0".
1. Запустить "SOLAR2_0.exe" нажатием Enter.
2. Далее будет предложено вычислить масштаб , наилучшим образом соответствующий , вводимым данным . От этой опции можно отказаться нажатием клавиши N . В этом случае будет использован масштаб , оптимизированный под планеты Солнечной Системы (от Меркурия до Плутона)
3. Затем нажимайте Enter чтобы программа вычитала из файла данные планет.
Эти данные можно менять , по своему усмотрению - редактированием файла input2.in .
4. После объектов появится первая строка данных спутника.
a. Введите данные согласно тексту компьютера.
b. Введите скорость по X координате (км/с).
c. Введите скорость по Y координате (км/с).
d. Введите смещение относительно планет по X (км).
e. Введите смещение относительно планет по Y (км).
f. Введите массу спутника (кг).
g. Введите номер планеты от Солнца (1-9).
5. Нажав последний раз Enter, вы увидите модель солнечной системы со спутником летающим, с заданными вами данными.
6. Если вас не устраивает масштаб солнечной системы, для его изменения нажмите "+" или "-" (для увеличения или уменьшения масштаба).
7. Если вас не устраивает скорость рисования, нажмите "*" или "/" для увеличения или уменьшения скорости рисования (внимание: сильное увеличение скорости ведёт к громадным погрешностям и программа "вылетает").
8. Программы завершена, можно её выключать нажатием Enter.
Примечение: Если вам захочется посмотреть на большее число планет, то вам необходимо в файле input2.in дописать еще одно (или несколько тел) в следующем порядке:
Дальше рассказывает о своем проекте вторая группа, занимающаяся электричками.
Задача: Заставить двигаться поезд в любом направлении Савёловской ветки ж/д от различных станций.
Вначале был начерчен граф ж/д. Затем на графе были отмечены основные станции этого направления. Пять стартовых ( а по совместительству и конечных ) станций:
1) - Москва
2) - Дмитров
3) - Вербилки
4) - Савёлово
5) - Дубна
Примерное расстояние от Москвы до Савёлово - 132 км.
Сначала надо ввести номер стартовой и конечной станций ( при совпадении которых или некорректном вводе программа выдаёт слово "Nepravilno!" и предлагает выбрать заново ), затем необходимо задать скорость поезда. После этого мы видим собственно изображение ж/д, на котором красной линией отмечается путь поезда, причём, когда поезд едет по двухколейной дороге на юг, то он едет по левой полосе, а на север - по правой.
Программа была написана на Паскале в течение двух дней одним человеком. Объём программы - примерно 250 строк с абзацами.
На графе показаны одноколейные ( по которой может ехать только один поезд одновременно ) и двухколейные полосы. Последняя тянется только от Москвы до Дмитрова. Одноколейные полосы идут от станции Дмитров до станции Савёлово и до станции Дубна. Для удобства передвижения поездов на станциях, находящихся на одноколейных линиях, были созданы разъезды. Главные разъезды находятся на станциях: Вербилки, Соревнование, Темпы, Большая Волга и Талдом.
Последняя группа нашего проекта занималась гироскопами.
Задачей нашей группы , входящей в проект "Транспорт" (Д. Михеев и А. Гук) являлось моделирование поведения гироскопа под воздействием на него внешних моментов.
В начале работы над поставленной задачей мы использовали аналитические методы исследования, причем приходилось нам это делать только на бумаге из-за отсутствия ( электронной техники, то есть компьютеров) знаний о программном языке типа Pascal (т.к. других языков на компьютере не было). Поэтому нашей части проекта пришлось совместно с исследованием гироскопа изучать новый для нас язык-Pascal, что отнимало на первой стадии проекта много времени - не оставалось времени даже для сна (на проекте).
Но после того, как наша часть проекта изучила Pascal, а так же добыла себе потом и кровью компьютер, мы решили механизировать процессы счёта с помощью компьютера. Сделав это, мы получили первоначальные данные о гироскопе и о его механике ( мы получили информацию о моменте инерции, угловой скорости), и, получив эти данные, представилась возможность нарисовать работающий гироскоп в программе.
Было предложено несколько идей по реализации этого проекта, параллельно изучая необходимые сведения об объёмном изображении гироскопа в трёх мерном пространстве.
Используя уже имеющуюся программу по рассчету движения, наш отдел проекта "транспорт" начал вносить необходимые изменения в её работу, для того чтобы она рисовала траекторию движение гироскопа.
Из-за нехватки навыков в програмированнии по рассчетам такого "глубокого" характера, проект не смог закончить программу к сроку, но тем неменее частично нарисовать правильную траекторию пути гироскопа, нам удалось. Однако из-за нехватки времени на отладку нам не удалось заставить программу работать в полную силу, поэтому опираться на её данные не стоит, так как они могут быть ошибочны.