Ахиллес не догонит черепаху
1973 год, «ЦНИИПА», лаборатория Комкова, группа Абрамсона. «Индикатор истинного движения» — так называлась тема, которой занималась группа. Институт разрабатывал электронику для новой атомной подводной лодки, несущей 22 ракеты среднего радиуса действия. Затаившись в 600-х километрах от вражеской территории, невидимая и бесшумная, она способна из подводного положения нанести сокрушительный ядерный удар по противнику.
Мне приходилось бывать на этой подлодке, которую начиняли аппаратурой в Северодвинске. Иногда, заблудившись, бродил по ее бесчисленным отсекам, пролезая через незадраенные люки. Наша лаборатория была причастны к навигационной системе этого монстра.
Обычные индикаторы корабельных РЛС устроены таким образом, что точка, отображающая собственное место, находится в центре экрана. При движении корабля берега медленно проплывают мимо этой неподвижной точки. Для малой скорости этого достаточно, чтобы ориентироваться в пространстве и принимать правильные решения. Наша лодка могла двигаться со скоростью 30 узлов. Это не очень быстро, но надо смотреть в будущее и делать приборы, способные более адекватно отображать реальность. Этим мы и занимались. В новом индикаторе берега стояли на месте, а точка — корабль двигалась между ними.
Вычислений по этому заказу было много. Иногда мне приходилось брать в первом отделе папку с алгоритмами. Она впечатляла — листов 300, плотно усеянных записями дифференциальных уравнений. Запомнилась одна из переменных — радиус Земли, который на разных широтах слегка изменяется, и такие изменения учитывались. Алгоритмами занимались математики, мы занимались их материализацией. Схемотехнический арсенал для выполнения вычислений был очень ограниченный. Еще не было слов «компьютер» и «микропроцессор» и, соответственно, того, что они обозначают. Совсем недавно некий завод освоил производство микросхем типа ЛА1…ЛА8, ЛР1..ЛР3 (тогда они маркировались иначе — ЛБ.., ЛР..). И это все. Микросхемы были чрезвычайно дорогие, от нас требовали подробный отчет о том, что мы с ними делаем. Цена, однако, стремительно падала, и это создавало определенные неудобства при составлении отчетов. Меня, как молодого техника, к этому привлекали. Трудность состояла в том, что кроме количества употребленных микросхем надо было узнать дату поставки, чтобы правильно определить стоимость. Советские безналичные деньги были сущностью не очень понятной, почти виртуальной. Но они существовали, а отчеты о них были реальностью вполне осязаемой. Деньги могли конвертироваться в разные неприятности, самая большая из которых — депримирование.
Основной способ реализации алгоритмов — разработка специализированных вычислителей. Вся задача разбивалась на множество автономных подзадач, которые распределялись по отделам и лабораториям. Теоретически был возможен и другой способ — разработка мощной ЭВМ с программами, которые выполняли бы все необходимые вычисления. Но вычислений было так много, что никакая ЭВМ не смогла бы с ними справиться. Можно было бы поставить несколько ЭВМ, но организация взаимодействия между ними «съедала» всю экономию от унификации. Потому оставались только спецвычислители, которые делали разные лаборатории.
Итак, мне достался алгоритм индикатора истинного движения. Он был достаточно прост, но в нем присутствовала тригонометрия, которую воплотить существующими средствами было достаточно сложно. Мне были известны два способа решения задачи. Первый — цифровое моделирование системы дифференциальных уравнений, решением которой являются нужные функции и второй — разработка комбинационной схемы. Первый был медленный, но простой в исполнении (роль интеграторов выполняли обычные счетчики), второй — быстрый, почти мгновенный, но требовал много микросхем. Хорошо бы взять что-то среднее между этими вариантами, но такого не было, и я стал его изобретать. Мне было 23 года, меня увлекла задача, которую хотелось выполнить лучше, чем если просто решить ее «в лоб». Копаясь в тригонометрию и в дифуравнениях, я понял, что приращение аргумента надо изменять по двоичному закону…
В это время мой руководитель Иосиф Абрамсон где-то откопал статью, в которой было показано, как это следует делать быстро и хорошо. То был американский патент 1959-го года на алгоритм вычисления тригонометрических функций, который получил имя его автора — «Алгоритм Волдера». По тексту я увидел, что двигался в правильном направлении, но продолжать движение смысла нет, 13 лет назад уже кто-то дошел до победного конца. У меня были смешанные чувства. С одной стороны, обидно, что это был какой-то Волдер, а не я. С другой — приятно сознавать, что хороший результат был очень близок (я работал с косинусом, надо было — с тангенсом).
Копаясь в функциях, я обратил внимание на развертывающие системы. Принцип вычислений здесь был таков. //далее техника, можно пропустить// На вход схемы подаются малые приращения аргумента. Схема представляет собой функциональное устройство произвольного типа, код на выходе изменяется как функция от изменяющегося аргумента. В момент прохождения аргументом заданного значения, считывается и запоминается значение функции. Можно наоборот, поставить схему сравнения на выходе и считывать значение аргумента в момент прохождения функцией заданного значения. Это позволяет вычислять не только прямые, но и обратные функции. Такие схемы было делать легко, как было легко моделировать дифференциальные уравнения. Двоичные счетчики, умножители и делители, связанные между собой открывали большой простор для моделирования чего угодно. Для вычисления функций было достаточно подобрать порождающие их дифференциальные уравнения.
Продолжение темы было такое. Если представить каждую схему в виде квадрата, на вход которого поступает аргумент в виде приращений, а на выходе формируется функция тоже в виде приращений, то такие схемы можно соединять между собой и в итоге вычислять сложные зависимости или решать уравнения. Вид зависимости/уравнения определяется исключительно топологией, которую можно программировать.
Впоследствии мне удалось перейти от малых приращений к приращениям произвольной величины. Соответственно, вместо дифференциального исчисления пришлось обратиться к теории разностных схем. Здесь была большая проблема с оценкой погрешностей и с областью допустимых значений.
//
В 1980-м году я был в Северодвинске, в командировке, и оказался в одиночном номере гостиницы. За всю мою производственную жизнь, плотно усеянную командировками, такое случилось первый (и, как оказалось, единственный) раз. Это была большая удача, я поступал в аспирантуру, впереди был экзамен по специальности. В командировку отправился с чемоданом книг, не надеясь, однако, что в них удастся заглянуть. И вот, все складывается так удачно! Рядом нет посторонних людей, присутствие которых меня всегда тяготило — я по натуре индивидуал, отшельник, одиночка. Но здесь я неожиданно понял, что полное одиночество тоже не слишком комфортно. Через три дня отправился в гости к своим коллегам, в другую гостиницу, в шумный многоместный номер без всяких удобств, где было весело и хорошо.
Но я остался в своей (как теперь говорят «многозвездочной») гостинице. Книги навевали несусветную скуку, мое внимание все время отрывалось от понимания прочитанного и сползало на решение проблемы с оценкой погрешностей. И вдруг я понял, что задача имеет решение. Мне удалось изобразить его в виде рисунка с пересекающимися кривыми. На графиках очень наглядно определялась область допустимых значений и области сходимости… Потом потребовался еще целый год, чтобы графическое решение задачи превратилось в последовательность уравнений и неравенств. Результат этих занятий был опубликован в двух статьях — в журнале «Вопросы кораблестроения» (N43, 1983, с.117-121) и много лет спустя — в журнале «Электронное моделирование» (N4, с.23-27, 1989г., Киев).
Такова была тема моей незавершенной диссертации. Она перекликается с известной апорией Зенона «Ахиллес никогда не догонит черепаху». Пока Ахиллес одолеет половину пути, черепаха отползет на некоторое расстояние. Ахиллес пройдет половину оставшегося, но черепаха уйдет еще дальше, и так до бесконечности. Ныне математика легко решает эту задачу, снимая противоречие (во времена Зенона соответствующей теории не было). Моя задача была похожая, но в ней черепаха шагала со скоростью, соизмеримой со скоростью Ахиллеса и двигалась в неизвестном направлении. Требовалось определить допустимое соотношение размеров шагов черепахи и Ахаллеса для того, чтобы их встреча состоялась.
В 1984 году я ушел из «Гранита» в ЛНПО «Электронмаш». Один из мотивов — Электронмаш выпускал заказные микросхемы. У меня была (очень слабая, конечно) надежда достучаться изнутри до того цеха и заказать некоторое количество микросхем для своей структуры, из которых сделать универсальный параллельный вычислитель, способный очень быстро выполнять любые сложные вычисления или решать уравнения. Надежда не оправдалась, через полтора года я перешел в НТО АН СССР «Аналитприбор», тему забросил. Моя черепаха скрылась за горизонтом.
22.08.2010
Автор: Ханов Олег Алексеевич | слов 1208Добавить комментарий
Для отправки комментария вы должны авторизоваться.