|
↓ Содержание ↓
↑ Свернуть ↑
|
Добрую половину комнаты занимала непонятная установка, в основном состоящая из тонкостенных стеклянных баллонов и трубочек. Из такого количества баллонов и трубочек… Пожалуй, одного магазина к «калашникову» не хватило бы, чтобы всё это перебить. Студент фыркнул про себя и покрутил головой, отгоняя непрошенные мысли насчёт неспровоцированного вандализма.
— Нравится? — местное непосредственное начальство, к счастью, телепатией не владело. — Вот тут основной наш эксперимент и проводится… Только сейчас у нас другая задача, и решать её мы будем не здесь.
Где-то в недрах установки хлопнул импульс углекислотного лазера. Инфракрасные фотоны врезались в газовую толчею… Хотя «толчея» — это громко сказано, давление в реакторе было в сотни раз ниже атмосферного, и большая часть квантов невидимого света пролетела его насквозь. Но некоторые всё-таки встретились с летавшими там молекулами, и их энергия перешла сначала в энергию молекулярных колебаний, а потом и в тепловую энергию газовой смеси — а проще говоря, подогрела её. Впрочем, об этих хитрых термодинамических историях студент не думал, да и не знал толком ничего. Он был всего лишь математиком и немного программистом.
В соседнем помещении на рабочем столе расположилась персональная ЭВМ: широкий системный блок, взгромоздившийся сверху куб дисковода с двумя карманами, небольшой монитор. И, разумеется, клавиатура с понятными и не очень понятными обозначениями на клавишах. В частности, для чего могли бы пригодиться кнопки «ПФ4» или «АР2», студент не знал. Именно на этой машине и должна была работать программа, моделирующая тот самый процесс светового подогрева — от поглощения первых фотонов до полного перехода их энергии в тепло.
Собственно говоря, программа уже существовала и уже работала, причём работала часами. Помимо всего прочего, ей требовалось посчитать, сколькими способами можно распределить несколько поглощённых квантов между несколькими молекулами, и на эти вычисления тратилась львиная доля процессорного времени. Посчитать число способов, использовать это число в расчётной формуле, забыть. Снова посчитать, снова использовать, снова забыть. И так много, много раз…
ЭВМ — она тупая. Что написано в программе, то и выполнит.
— …Ну что? Есть идеи, как ускорить работу?
Студент задумался:
— А это самое число сочетаний фотонов с молекулами, которое мы так долго вычисляем, оно считается заново каждый раз?
— Ну да.
— А зачем? Давайте сделаем так: в начале программы заранее заполним таблицу для всех возможных параметров… Это же за один проход сделать можно! А потом каждый раз, как вам понадобится значение, не будем его заново вычислять, а прямо из таблицы достанем.
— Что, вот так просто?! И ты сможешь нужную функцию переписать?
— А описание языка есть?
— Вот! — на столе появилась книжка в серо-голубоватой мягкой обложке.
— Тогда смогу, — студент пожал плечами. — Только покажите, как тут редактировать, как компилировать и как запускать.
* * *
— Ну что, как там твой студент?
— Диверсант! Внутренний враг!
— Да? А подробнее?
— Вот как раньше было? Приду на работу, включу машину, запущу счёт… Пойду в бассейн поплаваю, пойду в столовую пообедаю, вернусь в лабораторию, подожду ещё полчасика — машина досчитает, можно смотреть, что там у неё получилось…
— А теперь?
— А теперь за минуту справляется! Какой там бассейн — с тобой перекурить времени не хватает!
Инфракрасный свет ударил по газовой смеси. Та резко нагрелась, молекулы стали ударяться друг о друга намного сильнее, чем на холоде. И часть этих молекул начала разваливаться на части, а потом объединяться уже в других сочетаниях. Пошла химическая реакция…
Лазерный луч — неоднородный. Где-то он сильнее, где-то слабее. Неравномерным был и нагрев. Чем выше устанавливалась температура, тем быстрее в этой зоне носились молекулы газа, тем сильнее были их удары, тем больше был шанс, что энергии столкновения хватит, чтобы разбить молекулу. Тем быстрее шла реакция…
Объём реактора невелик, давление в нём низкое, вещества в нём мало, стенки у него холодные — ведь на них лазер не светил. Не прошло и секунды, как смесь остыла и реакция остановилась. Вот только состав этой самой смеси оказался уже не совсем таким, как до светового удара.
То, что получилось, загнали в хроматограф и замерили, сколько там осталось исходного вещества и сколько образовалось продуктов. Записали результат. Поставили ещё одну точку на графике. Продули реактор, заполнили его свежей порцией газов. Чуть-чуть сдвинули настройку лазера, немножко изменили энергию его импульса. И повторили опыт. И ещё раз. И ещё много раз…
Единственный способ исключить случайную ошибку — это набрать хорошую статистику.
Студент на установке не работал. Перед ним поставили другую задачу: смоделировать процесс на ЭВМ и вычислить энергию активации реакции — ту самую минимальную энергию, которая нужна, чтобы молекула начала рассыпаться на части.
С самой моделью всё было понятно. Как лазерный импульс греет смесь в реакторе, известно — это начальные условия. Стенки всегда комнатной температуры, даже очень горячий газ подогреть их не сможет, слишком его мало — это граничные условия. Как остывает смесь, можно посчитать — на то есть уравнение теплопроводности. Как идёт реакция… И это тоже можно посчитать. При единственном условии: надо знать энергию активации этой самой реакции. Тот самый параметр, который нам и надо определить.
Значит, что? Значит, придётся заняться гаданием. Но, разумеется, не на кофейной гуще, а на твёрдой научной основе. Берём некий разумный интервал, в который нужное нам число наверняка попадёт, с запасом. Делаем расчёты — с одним значением, с другим, с третьим… Смотрим, какой насчитали результат, сравниваем с опытными данными, вычисляем отклонение. Где оно минимально — там нужное значение параметра и есть. Но считать нам — не пересчитать…
А отклонение надо будет не только по линейной, но и по логарифмической шкале смотреть. И что-то — наверное, интуиция математика — подсказывает, что логарифмическая даст более точный ответ.
* * *
— Ну что… Очень у нас неплохая работа получилась, шеф доволен. И доклад успешный, и статью наши американские коллеги приняли.
— А зачем ты меня в американской статье доктором назвал? Я ведь и не кандидат ещё…
— Ну, во-первых, с такими успехами в своих расчётах ты наверняка скоро защитишься. Во-вторых, у буржуев «доктор» — это как раз вроде нашего кандидата. А в‑третьих, написать про тебя «профессор» было бы нескромно.
— Угу… А вот про студента нашего везде сказано, что он студент!
— И правильно. Все, кому надо, знают: если среди авторов серьёзной научной работы есть студент, значит, он и сделал основную часть. А прочие — это его руководители.
В задачу, которую поставил подруге научный руководитель, студент до конца не вник. Что-то с логическими формулами, из которых надо сделать дерево, а потом с деревом, из которого надо сделать формулу… Но обещал помочь с отладкой программы, потому что на факультете с машинным временем завал, а у него есть знакомая химическая лаборатория, где наверняка разрешат поработать.
Текст программы подруга принесла на четырёх страницах. И объясняла, пока студент набивал его в редакторе, глядя то в бумаги, то на экран:
— Главная часть вообще-то на второй и третьей, первая — это ввод формулы и построение дерева, последняя — это распечатка результата. Насчёт ввода и вывода я уверена, там всё просто. А вот сама обработка, когда всё это дерево нужно в определённой последовательности обойти и по-хитрому преобразовать, это уже сложно… Две недели потратила!
Студент понимающе кивнул. На кафедрах кибернетического потока, в отличие от чисто математических и чисто программистских, частенько возились с изрядно замороченными вещами, именуемыми то «графами», то «цепями», то «автоматами», причём иногда даже «магазинными»… Его собственная курсовая, сводившаяся к написанию нескольких ассемблерных прокладок между процедурами на двух разных языках программирования, по сравнению с этой многоуровневой структурой выглядела полной элементарщиной. Чего там — перед вызовом функции достать пару значений по указанным адресам памяти и положить в стек, а после возврата очистить стек и переложить результат из регистра в нужную ячейку памяти…
— Ну что, готово? Давай попробуем запустить!
И программа заработала… Но заработала, как это обычно и бывает со свеженаписанными программами, куда-то не туда. Нет, исходную формулу она благополучно прочла; и дерево построила правильно (это проверили особо); и то, что у неё вышло после обработки пресловутого дерева, честно вывела. Но вышел у неё при этом редкостный бред, который, по словам подруги, из исходных данных ну никак не следовал.
Где у неё могла проскочить ошибка, она понятия не имела. Студент с тоской поглядел на две страницы программного кода… Чужого… На языке Си, одном из самых нечитабельных языков высокого уровня… И вздохнул:
— Слушай, можешь объяснить попроще, чего эта самая процедура обхода дерева сделать-то должна? Чтобы знать, что искать?
Выслушал объяснение, немного подумал и принял решение:
— Так, отлаживать эти две страницы мы не будем, времени нет. Сделаем так… Смотри: у тебя к каждой вершине дерева список вершин-потомков прилагается. Пустой, если эта вершина — лист. Пишем простую такую функцию… Она сначала вызывает сама себя для каждой вершины из списка потомков, потом свою собственную вершину обрабатывает — и завершает на этом работу… А в главной программе просто вызовем эту функцию для корня дерева.
Он стёр больше полусотни строк кода, заменив их на шесть — и всё отработало как положено.
Оставшееся время они с подругой гоняли программу на любых формулах, которые только приходили в голову. Функция работала как часы.
* * *
— Ну как, сдала курсовую?
— Сдала…
— А чего такая недовольная?
— А помнишь, я говорила, кого попрошу помочь с отладкой?
— И что? Не помог?!
— Если бы… Понимаешь, я полмесяца над этой программой просидела! Две страницы кода написала! Он их честно вбил — они не пошли! И тогда он эдак небрежно: «Это мы отлаживать не будем!» Выкидывает мои две страницы, пишет пять строчек — и они работают! В общем, я поняла: программиста из меня не выйдет. Пойду, наверное, в школу. Детей математике учить.
— Ты что, пошла сдавать курсовую, не разобравшись, как она работает?!
— Ну, совсем уж дурой не считай! Как работает, я разобралась. Чего там, по готовенькому-то… У меня там другая проблема возникла: как доценту объяснить, что эти пять строк работают, и работают правильно!
— Объяснила?
— Не-а. Он так и не въехал.
— Но курсовую зачёл?
— А куда он денется? Работает же! Все тесты прошли!
— А с твоим помощничком-то что?
— А на него я серьёзно обиделась.
— А он?
— По-моему, не заметил…
— Ха! А знаешь что?
— Что?
— Думаю, что вы с ним всё-таки поженитесь! Вот!
Номинация: День радио
Конкурс в самом разгаре — успейте проголосовать!
(голосование на странице конкурса)

|
↓ Содержание ↓
↑ Свернуть ↑
|