«Техника-молодежи» 1987 №5, с.48-52 |
НАД ПУЛЬСАРОМ
«Из отчетов хроноскитальца А. Перепелкина («ТМ» с № 6 за 1985 г. по № 4 за 1986 г.) вытекает интересная философская проблема, — пишет М. Козьменко из Кировска Мурманской области. — Любой человек, «провалившийся» к нам, в прошлое, должен своими действиями изменять свое время, то есть наше будущее. И в самом деле, многочисленные читатели выпусков КЭИ благодаря Перепелкину почерпнули такие знания, что это привело к необратимым изменениям. Овладев навыками космического пилотирования на Б3-34, они в какой-то мере приблизили ту эру человечества, когда и вправду храбрые космонавты станут ежедневно летать на аппаратах, основа которых закладывается сейчас. Вернувшись в свое время, Перепелкин с радостью бы заметил, что Луна уже полностью колонизирована, а первопроходцы космоса начали исследовать «на натуре» черные дыры и делать многое другое, еще непонятное нам. В частности, обрели власть над временем. Ведь не каждый день человек проваливается в хронояму, и вызволить его оттуда — важная задача. Ясно, что потомки научились это делать, и возвращение Перепелкина неминуемо. А раз откроется двусторонняя связь, есть все основания ожидать почту из будущего. И вот в редакцию приходит письмо от Перепелкина или, что еще интереснее, от самого Коршунова. И к нам начинает поступать поток информации, достаточный для продолжения разговора...»
Любопытными соображениями поделился с нами читатель. Но признаемся честно: ничего подобного не произошло, никаких писем из будущего в редакцию не поступало. Произошла куда более странная вещь. Когда мы вновь стали прослушивать магнитофонные записи с рассказами Перепелкина, выяснилось, что о перелете «Кон-Тики» там не говорится ни слова. Очевидно, будущее действительно изменилось. Речь идет о событиях большей частью совсем непонятных, и разыгрываются они в дальних глубинах Галактики. Уяснить можно только очень немногие эпизоды, один из которых мы и предлагаем вашему вниманию.
— Я не понимаю, штурман, откуда они взяли, что эта штука умеет летать, — произнес Коршунов.
Почему он сказал «штурман», ясно. Он профессионал-звездолетчик, говорят, очень хороший. Звездный Коршун — так его величают коллеги. Для таких все люди делятся на пилотов и непилотов. А из последних они чаще всего имеют дело со штурманами, вот и получается, что человечество, по их представлениям, состоит в основном из пилотов и штурманов.
В действительности я вовсе не штурман, я специалист по электронному оборудованию. Познакомились мы неделю назад. Нас обоих направили сюда как экспертов: выяснить назначение объекта «Корабль», как он именуется в каталогах ксенологов. Ему, наверное, миллион лет, но сохранился он просто на удивление. По форме это эллипсоид вращения высотой метра три, диаметром шесть. Для наглядности возьмите луковицу или сплюснутый футбольный мяч соответствующих размеров. Да и внутри он выглядит как футбольный мяч: почти такой же пустой.
Есть гипотеза, что это космический корабль Пятой галактической культуры, давно исчезнувшей с горизонта событий. Вот мы и проверяем эту гипотезу, стараемся ее доказать либо опровергнуть.
— А что тут удивительного? — сказал я. — У каждого, кто видел этот дисплей, такое предположение возникает само собой.
Мы сидели в доисторических инопланетных креслах — довольно удобных и на вид новеньких. Их создатели, вероятно, мало отличались от нас. На черной вогнутой стене перед нами светилась живая картина: круглое голубое пятнышко в центре, а вокруг него по окружности медленно движется другое светлое пятнышко, совсем крошечное. На полный оборот уходит пять с половиной часов.
Другие стены прозрачны, но там только черное небо, усеянное звездами. Да еще слева, прямо над головой Коршунова, горят предупредительные красные огни на зданиях базы. Самих зданий не видно. Аппарат, на борту которого мы находимся, вместе с сооружениями, составляющими базу давно исчезнувшей цивилизации, располагается на обратной стороне небольшого, поперечником всего 2 км, астероида, который вращается вокруг нейтронной звезды с названием, состоящим преимущественно из цифр и потому труднопроизносимым. Радиус орбиты — примерно миллион километров, период обращения — пять с половиной часов.
Из совпадения периодов следует, что на черном дисплее скорее всего изображена точная схема окрестностей нейтронной звезды. О том же говорит и соотношение размеров двух светящихся пятнышек: диаметр центрального раз в десять больше. А радиус звезды, хотя масса у нее почти равна солнечной, не превышает 10 км. Когда-то она была вполне нормальной, но потом взорвалась, и ее вещество чудовищно уплотнилось.
— Я не о том, штурман, — поморщился Коршунов. — Дисплей — это прекрасно, но где здесь пульт управления? Потом наш астероид не пережил бы вспышки Сверхновой. Значит, его пригнали уже после взрыва. Скорее всего своим ходом. Следовательно, он-то и является звездолетом. А пульты где-нибудь там, — он махнул в сторону базы. — Логично?
Я промолчал. Можно предполагать что угодно, однако другие сооружения для нас закрыты, вход туда запрещен. Основные помещения базы населены роботами, вполне исправными, несмотря на свой почтенный возраст. Очевидно, миллион лет назад перед ними поставили задачу охранять базу от непрошеных гостей. Довольно долго они бездельничали, а теперь пришли мы.
— Во всяком случае, это, — Коршунов показал пальцем, — быть пультом никак не может. Действительно, одно из значений иероглифа переводится как «тяга». Но чтобы управлять кораблем, одного параметра мало. Нужно задавать еще и направление. А как ты его задашь?
По горизонтальной панели между нашими креслами проходил длинный желобок с делениями. В нем плотно удерживался блестящий массивный шарик, который, казалось, можно с легкостью двигать вдоль желобка. Возле меток светились причудливые символы цифр шестнадцатеричной системы. Шарик стоял сейчас на отметке «один», почти посередине шкалы. Сбоку красовался крупный иероглиф, о котором говорил Коршунов. Не то «тяга», не то «ускорение»...
— А вдруг это «тяжесть»? — предположил я. — По-моему, данный символ имеет и такое значение. Вдруг это гравитационная машина? Антиграв, который так любят фантасты?..
— Антиграв? — пожал он плечами. — Поставил на минус — взлетел, перевел на плюс — приземлился на то же место... Так, что ли? Нет, штурман, это, конечно же, не летательный аппарат, а что-то вроде планетария. И шарик управляет дисплеем. Смотри, я переставляю его на ноль...
Помешать я не успел. «Ничего не трогать, только смотреть и анализировать» — так напутствовали нас ксенологи. Даже в кресла мы погружались с большой опаской. А сейчас...
Коршунов передвинул шарик к нулевой отметке, и картинка на дисплее сразу же изменилась. Центральный диск пропал, второй прыгнул с периферии в центр...
— Вот видишь! — радостно крикнул Коршунов.
Я открыл было рот, но сказать ничего не смог. Я смотрел мимо Коршунова, где за его спиной только что пылали красные огни, окаймлявшие базу. Сейчас их не было, они погасли одновременно с его возгласом. Нет, я не ощутил даже малейшего толчка, но огни исчезли, словно провалились сквозь землю!..
— А это что? — Он растерянно показал на дисплей. — Что это, штурман?!
Над бледным диском астероида, ускоряясь, поднималась крохотная желтая искра. Поднималась, постепенно отклоняясь от вертикали.
Прошли еще какие-то секунды, и кабину сквозь прозрачный пол залило мертвенным голубым светом. Астероид уже не отгораживал нас от нейтронной звезды. Мы были в космосе, в сотнях километров от его поверхности, и неслись ввысь со стремительно возрастающей скоростью. Искорка на дисплее и была нашим суденышком, управлять которым ни один из нас не умел!..
ШКОЛА ГРАВИЛЕТЧИКОВ
Далее в рассказе А. Перепелкина говорится о событиях, на наш взгляд, совершенно неправдоподобных: о том, как они с Коршуновым долгое время носились в своем гравилете (таким образом, предположение Перепелкина оказалось правильным) по всей системе, едва не угодили в нейтронную звезду, чуть не умерли от голода и жажды, но в конце концов благодаря мастерству Коршунова и надежности инопланетной машины благополучно вернулись на астероид. Допустим даже, что возвратиться им действительно удалось; но при чем здесь голод и жажда? Наиболее интересна, как нам представляется, сама антигравитационная машина Пятой культуры; к счастью, ее не так уж трудно смоделировать на наших ПМК.
Одним из создателей антигравитационного двигателя наряду с инженерами давно исчезнувшей цивилизации можно по праву считать семиклассника Алексея Долюка из Запорожья. Еще летом прошлого года он установил такой двигатель на «Лунолет-1» и совершил ряд дальних путешествий с суб- и даже сверхсветовой скоростью. Параллельно пыталась обуздать гравитацию и администрация КЭИ. В результате появилась программа «Гравилет»:
00.Fx<0 01.03 02.К- 03.ИПА 04.ИП8 05.÷ 06.1 07.+
08.П9 09.ИПА 10.ИПД 11.- 12.КИП9 13.С/П 14.П9 15.ИП4
16.× 17.П7 18.ИПС 19.ИП4 20.ИПД 21.÷ 22.F√ 23.ИПД
24.÷ 25.ИП5 26.× 27.ИП9 28.× 29.- 30.ИП9 31.ИПА
32.÷ 33.↑ 34.ИПВ 35.× 36.1 37.- 38.× 39.ИП0 40.× 41.ИП5
42.× 43.П9 44.- 45.ПС 46.ИПА 47.ИП0 48.× 49.↑ 50.↑
51.ИПВ 52.× 53.Fx2 54.XY 55.ИП0 56.× 57.ИП7 58.-
59.XY 60.FВх 61.Fx2 62.+ 63.F√ 64.ПА 65.÷ 66.Farccos
67.ИПВ 68.ИП0 69.× 70.Fx<0 71.75 72.XY 73./-/ 74.XY
75.Fo 76.ИП9 77.- 78.П9 79.Fsin 80.XY 81.÷ 82.ИПА
83.× 84.ПВ 85.. 86.ИП9 87.Fcos 88.× 89.ИП7 90.+
91.÷ 92.F1/x 93.П0 94.÷ 95.ПА 96.ИП6 97.-
Консультант раздела —
Герой Советского Союза,
летчик-космонавт СССР
Ю. Н. ГЛАЗКОВ
На адресе 87 расположилась десятичная точка (код 0-). Владельцы МК-61 и МК-52 должны поставить в конце две дополнительные команды: 98.БП 99.00.
С помощью программы «Гравилет» можно осуществить самые замысловатые маневры фантастического космического аппарата, оснащенного гравитационным двигателем, в поле тяготения массивного центрального тела (звезды либо планеты), причем координаты аппарата отсчитываются относительно другого тела (астероида, спутника или станции), притяжением которого можно пренебречь и которое обращается вокруг первого по круговой орбите. Установленный на аппарате гравитационный двигатель позволяет как угодно менять его гравитационную массу (делать ее положительной, отрицательной или нулевой), в то время как инертная остается постоянной. Легко видеть, что ничего другого от идеального гравитационного двигателя и не требуется. Даже знаменитый уэллсовский «кейворит» таких возможностей не обеспечивал.
После ввода программы надо сформировать и заслать в регистры 1–3 наглядные видеосообщения о положении гранилета в пространстве. Например, такие (они изображены на блок-схеме): 1 ВП 50 Fx2 Fx2 П9 Сх ИП9 FABT точка К- ВП /-/ 54 П1 («Гравилет вблизи звезды») ВП /-/ 10 П2 («Гравилет на подходе к астероиду») ВП 9 П3 («Гравилет за орбитой астероида»). Черточка изображает космический аппарат, буква Е — звезду, 0 — астероид. Конечно, ничто не мешает использовать любые другие видеосообщения; скажем, если в приведенной последовательности заменить К- на КНОП, звезда изобразится единичкой, а если эту команду вообще опустить — тройкой. Можно использовать и подходящие словесные сообщения.
Очередь за числовыми величинами (обозначения те же, что и на блок-схеме). В регистр 5 засылается количество градусов в радиане: 180 Fπ ÷ (57,29578) П5. Остальные константы характеризуют планетную систему, куда нас занесло: (радиус звезды R0 в м) П6 (гравитационная постоянная звезды G0 в м3/с2) П4 (радиус орбиты астероида R в м) ПД (масштаб l, определяющий смену видеосообщений, в м) П8. Удобно задавать в качестве масштаба половину радиуса орбиты: ИПД 2 ÷ П8; тогда на меньших расстояниях от звезды будет выдаваться первое видеосообщение, затем второе, а при выходе за пределы орбиты — третье.
Остается ввести начальные координаты и скорости самого гравилета: (расстояние от центра звезды r в м) ПА (угол отклонения φ от прямой, соединяющей звезду и астероид, в градусах) ПС (вертикальная, точнее, радиальная скорость u в м/с) ПВ (горизонтальная, точнее, трансверсальная скорость v в м/с) П0. Трансверсальная скорость задается в неподвижной системе координат. Положительным для нее и угловой координаты считается направление по часовой стрелке.
Переключатель Р-Г при полетах на гравилете устанавливается в положение Г. Работа с программой начинается командой В/О С/П (в регистре X может находиться любое неотрицательное число). При останове на индикаторе появляется видеосообщение, показывающее, где в данный момент находится гравилет. В регистр Y выводится его расстояние от орбиты астероида, оно вызывается командой XY. При выходе корабля за пределы области, перекрываемой видеосообщениями (когда r больше 3l), видеосообщение не выводится, на индикаторе оказывается содержимое регистров 4, 5, 6 и т. д. Если корабль в результате неудачного маневра вонзается в звезду (r меньше R0), на индикаторе появляется ЕГГОГ. Для задания маневра надо набрать время t в секундах, нажать ПП, набрать требуемый коэффициент гравитации K и нажать С/П. Если K = 1, то корабль заданное время летит по обычной гиперболической или эллиптической орбите, как в программе «Кеплер» (№ 2 за 1986 г.). Если K = 0, гравитация на него не действует, и он летит по прямой (конечно, в системе координат, связанной с движущимся астероидом, она выглядит очень даже кривой). При отрицательных значениях K притяжение сменяется отталкиванием. С увеличением абсолютной величины K сила притяжения (отталкивания) возрастает в соответствующее число раз.
Пройдемся одновременно по блок-схеме программы и ее воплощению на языке Б3-34. Начнем «от печки» — с блока ввода t и K. Время маневра запоминается в рабочем регистре 9, а введенное значение K умножается на гравитационную постоянную звезды, и результат записывается в регистр 7 (первая формула на блок-схеме). В закон тяготения, как известно, входит произведение гравитационных масс взаимодействующих тел (а гравитационная постоянная объекта пропорциональна его массе), поэтому безразлично, какую из них менять, а со звездой это проделать математически гораздо проще. Затем вычисляется угловая скорость астероида (вторая формула на блок-схеме и команды по адресам 19–26 в программе). Эта величина, естественно, от наших маневров никак не зависит (под знаком радикала, заметьте, фигурирует истинная гравитационная постоянная звезды G0), поэтому можно было бы рассчитать ее заранее и записать в регистр вместо радиуса орбиты; так, кстати, и делалось в программе «Кеплер». Но стоит ли вычислять что-то вручную, когда это можно поручить ЭВМ?
Далее приближенно определяется угловое расстоянием, пройденное гравилетом за заданное время (третья формула на блок-схеме и команды по адресам 30–43). Это единственное использованное во всем алгоритме приближенное выражение. Чтобы не сделать большой ошибки, приходится ограничивать время маневра: задавать его в 5–10 раз меньше характерных времен r/u и r/v — они вычисляются соответственно командами ИПА ИПВ ÷ и ИПА ИП0 ÷. Индексом i, кстати, на блок-схеме помечены значения всех переменных на текущем шаге. Вычисленный угол записывается в рабочий регистр 9 (время больше нам не понадобится), причем с обратным знаком — так удобнее.
Затем вычисляется новое угловое расстояние между гравилетом и астероидом (четвертая формула на блок-схеме). К старому прибавляется угол, пройденный самим гравилетом, а из суммы вычитается угол, пройденный астероидом. В программе эта короткая формула разбросана по адресам 18, 27–29 и 44–45 — это позволяет наиболее полно использовать стек.
После того как угол определен, наступает очередь других переменных. Их значения рассчитываются по формулам, хорошо известным из небесной механики. Для начала вычисляется и «проталкивается» до конца стека удельный момент количества движения гравилета М (46–50). Эта величина, кстати, остается постоянной при любых маневрах, поэтому гравилет всегда может вернуться на тот астероид, откуда он стартовал (вот он, единственный и главный шанс наших героев!), зато не способен состыковаться со станцией, находящейся на любой другой орбите. Затем рассчитываются вспомогательные величины А и В и угол 6, характеризующий положение перицентра траектории, по которой движется сейчас гравилет. Затем определяются новые компоненты его скорости и расстояние до центра звезды. Все это проделывается по адресам 51–95, затем начинает работать блок проверок и видеосообщений. Те, кто будет переводить «Гравилет» на языки своих персональных компьютеров (а сделать это необходимо — подобных игр нет больше нигде), наверняка сконструируют его по-другому, с привлечением более совершенных графических средств, поэтому дальнейшее рассмотрение проведем по тексту программы.
Блок 96–97, 00–02 сравнивает расстояние до центра звезды с ее радиусом.
В случае катастрофы на индикаторе вспыхивает ЕГГОГ — мы попали на адрес А0 короткой побочной ветви, на котором продублирована некорректная команда 02.К-. (Тот, кто пилотировал МК-61 или МК-52, оказывается на адресе 02 с теми же последствиями.) Если же проверка прошла успешно, демонстрационный блок 03–13 засылает в регистр 9 число, целая часть которого равна номеру соответствующего видеосообщения, определяет и переводит в регистр Y расстояние до орбиты астероида и вызывает видеосообщение на индикатор. Все готово к новому маневру.
Программа «Гравилет» неплохо справляется с подавляющим большинством сложных ситуаций, с которыми можно столкнуться в системах не только нейтронных, но даже и обычных звезд, в том числе и нашего Солнца. Ей «не по зубам» только два простейших класса задач: полет по радиальной траектории и по круговой орбите. В первом случае вся математическая модель не годится, он полностью исключен. При полете по круговой траектории величины А и В оказываются равными нулю, и при попытке разделить одну на другую ПМК выдает ЕГГОГ. Правда, не всегда: из-за ничтожных вычислительных ошибок деление довольно часто удается, и полет продолжается как ни в чем не бывало.
Тем не менее как избежать неприятностей? Есть два пути. Первый пассивный: не предпринимать ничего. Действительно, засиживаться на базе незачем, поэтому с самого начала мы куда-нибудь полетим, а получить точный ноль при возвращении практически невозможно. Если же вдруг такое случится, достаточно при появлении сигнала ЕГГОГ нажать + С/П, и все будет в полном порядке.
Второй путь активный. Вставить в блок-схему после вычисления В блок сравнения и, если В = 0, сразу возвращаться к началу (какой смысл заново рассчитывать величины, оставшиеся неизменными?). Даже на Б3-34 можно обойтись почти без потерь, заменив фрагмент 64–69 на 64.Fx≠0 65.03 66.ПА 67.÷ 68.Farccos 69.ИПВ и считая, что трансверсальная скорость всегда положительна. Таким образом, встречные орбиты (гравилет движется против часовой стрелки, навстречу астероиду) исключаются, но мы же не в «звездные войны» играем! Оставим их Рейгану. Владельцы МК-61 и МК-52 окажутся даже в выигрыше, продолжив приведенный фрагмент: 70.ИП0 71.× 72.КЗН 73.× 74.КНОП 75.КНОП. Теперь ничто не мешает им подтянуть на две освободившиеся команды весь «хвост» программы.
Раз уж речь зашла о возможных модификациях «Гравилета», то нужно сказать, что при малых угловых отклонениях от астероида расстояние до него вдоль орбиты рассчитывается командами: ИПС ИПД × ИП5 ÷. Поэтому при маневрировании вблизи базы можно, пожертвовав видеосообщениями, доверить этот расчет машинке, изменив несколько первых команд: 03.ИПС 04.ИПД 05.× 06.ИП5 07.÷ 08.КНОП и 12.КНОП. Тогда при останове в регистре X окажется расстояние до орбиты астероида, в регистре Y — расстояние до него вдоль орбиты с соответствующим знаком.
Займемся теперь делом: надо помочь Перепелкину. Регистры 1, 2, 3 и 5 заполняем согласно инструкции. Радиус нейтронной звезды известен: 1 ВП 4 П6. Радиус орбиты астероида и масштабный коэффициент тоже: 1 ВП 9 ПД ПА 2 ÷ П8 (собственными размерами астероида пренебрегаем). Начальная радиальная скорость и угловое смещение равны нулю: Сх ПВ ПС. Осталась гравитационная постоянная нейтронной звезды. Ее масса, по утверждению Перепелкина, «почти равна солнечной», а гравитационная постоянная нашего светила — примерно 1,34 ВП 20 (кстати, для Земли этот параметр равен приблизительно 4 ВП 14, для Марса — 4,3 ВП 13). Примем 1 ВП 20 П4. Начальная трансверсальная скорость гравилета равна скорости астероида; чтобы ее определить, нужно разделить гравитационную постоянную на радиус орбиты и из результата извлечь квадратный корень. ИП4 ИПД ÷ F√ П0. Получилось, как видим, больше 300 км/с.
Исходные данные введены. В/О С/П (Е 0-) XY (0) ИПС (0) ИПВ (0). Гравилет готов к старту. 60 ПП 0 С/П. Через минуту он оказывается на высоте 180 км. Повторяем ту же команду еще четыре раза. На борту гравилета прошло пять минут, у нас — примерно столько же. В результате и мы и они оказались на расстоянии 4,5 тыс. км за орбитой астероида и отстаем от него почти на 300 км.
Первое задание КЭИ — вернуться на астероид (то есть в область радиусом порядка 1000 м от начала координат). На меньших расстояниях возможны сюрпризы — нормальному полету начинают мешать охраняющие базу роботы (точность вычислений оказывается недостаточной). Заходить на посадку надо «сверху», с внешней стороны орбиты (база расположена, как мы помним, именно там). Коэффициент K при всех маневрах не должен превышать по абсолютной величине 10 (и всемогущество сверхцивилизаций имеет пределы). Готовых рецептов по управлению гравилетом у нас нет; машина инопланетная, никто пока на таких не летал, так что все находятся в равных условиях: и вы, и Перепелкин, и даже Коршунов.
После возвращения на базу можно приступать ко второму заданию: стартовать, приблизиться к нейтронной звезде, обследовать ее окрестности и вернуться на базу.
Наконец, для выполнения последнего задания придется вернуться в XX век. Нужно повторить маневр советской космической станции по «зависанию» над поверхностью Фобоса, изображенный на 4-й стр. обложки прошлого номера «ТМ»: сформировать систему Марс — Фобос (3394 ВП 3 П6 43 ВП 12 П4 938 ВП 4 ПД 2 ÷ П8), вывести станцию на круговую орбиту, лежащую на 30 км выше (ИПД 3 ВП 4 + ПА ИП4 ИПА ÷ F√ П0 Сх ПВ), а затем так подобрать начальное угловое расположение станции и Фобоса (регистр С) и начальное отрицательное приращение трансверсальной скорости станции (регистр 0), чтобы она в перицентре прошла «впритирку» к поверхности спутника (на расстоянии 13–14 км от его центра). Коэффициент K, разумеется, при этом должен равняться единице — гравитационным двигателем станция не оборудована.
Михаил ПУХОВ
P.S. Известное правило гласит: «Любую программу можно сократить на одну команду». Пока статья готовилась к отправке в производство, администрация КЭИ провела не одну бессонную ночь, пытаясь с помощью этого правила улучшить конструкцию «Гравилета». И небезуспешно: удалось вставить в программу блок сравнения В = 0, а также ввести после команды 14.П9 фрагмент Fx2 F10x точка, проверяющий, чтобы K было меньше 10 (если все в порядке, команда «точка» восстанавливает стек, если же нет — на индикаторе появляется ЕГГОГ). А буквально накануне сдачи номера в набор обнаружилось, что если расписать по обычным формулам тригонометрические функции суммы углов (нижний прямоугольник блок-схемы) и учесть, что cosβ = А/В, sinβ = uiM/B, то расчетные выражения для новых компонентов скорости приобретают гораздо более удобный вид. В результате появилась следующая модификация «Гравилета»:
00.БП 01.01 02.ИПА 03.ИП8 04.÷
05.+ 06.П9 07.ИПС 08.ИПД 09.×
10.ИП5 11.÷ 12.ИПА 13.ИПД 14.-
15.КИП9 (КНОП) 16.С/П 17.П9 18.Fx2
19.F10x 20.. 21.ИП4 22.× 23.ИП0
24.ИПА 25.× 26.П7 27.÷ 28.ИП9
29.ИПА 30.÷ 31.↑ 32.Fx2 33.ИПВ 34.×
35.- 36.ИП0 37.× 38.ПА 39.ИП4
40.ИПД 41.÷ 42.F√ 43.ИПД 44.÷
45.ИП9 46.× 47.- 48.ИП5 49.× 50.ИПС
51.+ 52.1 53.8 54.0 55.- 56.Fx<0 57.64
58.FВх 59.+ 60.FВх 61.+ 62.Fx≥0 63.58
64.FВх 65.- 66.ПС 67.Fo 68.ИП0 69.-
70.П9 71.ИПА 72.Fcos 73.× 74.-
75.ИПВ 76.ИПА 77.Fsin 78.ПА 79.×
80.- 81.П0 82.. 83.Fcos 84.ИПВ 85.×
86.ИП9 87.ИПА 88.× 89.- 90.ПВ
91.ИП7 92.ИП0 93.÷ 94.ПА 95.ИП6
96.- 97.F√
По адресам 20 и 82 записана десятичная точка (код 0-), по адресу 31 — стрелка вверх (0Е), по адресу 67 — круговое перемещение стека (25). по адресам 42 и 97 — извлечение квадратного корня (21). Программа отлично справляется с круговыми орбитами, выдает ЕГГОГ, если K по модулю превышает 10 (в этом случае надо нажать В/О С/П). Для переключения с общего плана (в регистре X — видеосообщение, в Y — расстояние до орбиты) на крупный (в X — расстояние до орбиты, в Y — расстояние до астероида вдоль орбиты) теперь достаточно заменить 15.КИП9 на 15.КНОП. Удалось вставить в программу и довольно объемистый, но полезный блок (52–65), приводящий угловую координату к нормальному виду (от -180 до +180); если на его вход подано, скажем, -350, на выходе окажется 10. Это помогает избежать путаницы при определении расстояния до астероида, если мы, допустим, обогнали его на целый виток. Правила обращения с программой прежние, только переключатель Р-Г нужно установить в позицию Р (угловая координата по-прежнему задается в градусах).
Происшедшее как нельзя лучше подтверждает известную истину: главный резерв программиста — формулы. Зачастую элементарное преобразование дает такую экономию, какой невозможно добиться другими, даже самыми исхищренными методами (кстати, обратите внимание на «дальнобойность» работы команды «точка» по адресу 82: она восстанавливает в стеке результат операции 76.ИПА).
«Техника-молодежи» 1987 №5, с.48-52 |