Гибридное решение задачи на компьютере
Два числа можно сложить, переведя их в двоичную систему (разложив на нули и единицы), пропустив через лабиринт логических операций процессора компьютера и сделав обратное преобразование полученной суммы из двоичного в десятичное представление. Так работают электронные цифровые вычислительные машины
– ЭЦВМ. С числами можно поступить иначе: взять, например, два переменных сопротивления, соединить их параллельно и подать на них напряжение. Изменяя величину сопротивлений (выставляя два слагаемых
- ток, проходящий через сопротивления) и замеряя общий ток, можно найти искомую сумму. Так работают аналоговые вычислительные машины (АВМ) – аналог сложения берется из области физики электричества (закон Ома, закон Кирхгофа и др.). Если нужно решить систему дифференциальных уравнений (а это был «хлеб» аналоговых машин), то в дело шли законы электромагнитной индукции (Максвелл & Co): конденсатор – дифференцирование, катушка – интегрирование и т.д. Кроме электрических были (а где-то еще и есть) механические, гидравлические и даже пневматические аналоговые вычислительные машины.
А вы ноктюрн сыграть смогли бы на флейте водосточных труб?
А вы в DOOM сыграть смогли бы на пневмо-АМВ?
Красивую в своей простоте управляющую механическую АВМ можно видеть в музеях истории техники (в московском Политехническом, например). Она стоит на старых паровых машинах: два металлических шара вращаются на системе рычагов и регулируют подачу пара в цилиндры так, чтобы скорость хода была постоянной при любой нагрузке. Менее изящную, но тем не менее также очень полезную гидравлическую управляющую АВМ можно увидеть не выходя из дома – заглянув в бачок, пардон, унитаза.
Были времена[54], когда АВМ и ЭЦВМ работали на равных, и пользователи (вернее программисты и операторы, пользователей тогда еще и в помине не было) остро ощущали их плюсы и минусы. Стремление к приумножению достоинств и к ликвидации недостатков вызвало к жизни так называемые гибридные
машины, решающие вычислительные задачи и аналоговыми и цифровыми средствами. Сигнал, подаваемый на осциллограф (решение дифференциального уравнения на аналоговой части машины), обрабатывался в ее цифровой части: выдавалась таблица решения, велась аппроксимация и т.д. Но бурное развитие ЭЦВМ (в первую очередь резкое снижение их цены) похоронило как аналоговые, так и гибридные машины. Сейчас эта ветвь развития кибернетики практически обрублена. А жаль. Величайшую тайну природы – секрет работы головного мозга – нужно исследовать не по линии цифровых, а по линии аналоговых машин (био-АВМ!). Страшно даже представить, что у нас в голове шевелятся не извилины, а какие-то там нули и единицы.
Гибридность решения задачи в среде Mathcad в полной мере проявляется при включенном режиме Optimize (Оптимизировать – см. раздел 7.3). В этом режиме пакет, столкнувшись с численной задачей (вычисление определенного интеграла, например), не будет сразу вызывать соответствующую процедуру, реализующую метод Ромберга, а постарается найти первообразную подынтегрального выражения и работать уже с ней. Но вот тривиальный пример – определенный интеграл от a до a. Человек и без численных методов и без символьной математики знает, что он равен нулю. А что будет делать машина? Среда Mathcad с выключенным режимом оптимизации также сразу выдаст нуль. А с оптимизацией она будет долго и упорно искать первообразную для подынтегрального выражения... У автора в запасе есть набор примеров подшучивания над Mathcad (см. начало этюда 3), ставящих на место любую сверхумную систему и показывающих, что человек еще долго будет царем природы – как живой, так и неживой.
Механизм аналитических преобразований, введенный в Mathcad, придал его старым «цифровым» встроенным функциям свойство, которое с определенной долей условности можно назвать полиморфизмом[56]. Пример – функция Find. Если за ней поставить знак «=», то будет выведено числовое
значение решения системы алгебраических уравнений, а если знак «®», то – аналитическое.
Функция Find (как и многие другие встроенные функции Mathcad) несколько странная, и мы это уже отмечали. Все нормальные функции возвращают свое значение в зависимости от своего имени, числа и значений аргументов (принцип инкапсуляции, если опять же оперировать терминами объектно-ориентированного программирования; механизм вложения функций, широко используемый в Mathcad, заставляет вспомнить и о третьем «ките» ООП – о механизме наследования). Так вот, функция Find возвращает свое значение в зависимости от того, что находится около нее до ключевого слова Given.
Работая с Mathcad, под гибридностью следует понимать сочетание аналитических, численных и интуитивных методов решения задачи, что проиллюстрировано примером на рис. 7.31. Решается все та же нами любимая задача об одном пожарном ведре (пункт 1) и о двух пожарных ведрах (пункт 2). При решении задачи формируются две функции пользователя r(a) и h(a) – радиус и высота конуса, размеры которых зависят от параметров раскроя круглой заготовки (см. схему на рис. 2.1). Из этих функций строится выражение для расчета объема ведра, от которого берется производная[57].