Работа в среде Mathcad
Сейчас никого не удивляет тот факт, что не только аспиранты, инженеры и студенты, но даже и школьники решают свои задачи на компьютере. Удивление или, по крайней мере, вопросы может вызывать лишь выбор конкретной программной среды для этих целей. Ответ на вопрос, почему для расчетов все чаще и чаще прибегают к услугам Mathcad, может быть и такой: Mathcad обладает уникальной возможностью[1] [1] оперировать не просто величинами, а физическими величинами. Пакет Mathcad можно назвать не просто математическим, а физико-математическим пакетом.
Работа в среде Mathcad – эта третья (и пока высшая) ступень в использовании вычислительной техники при решении физико-математических, инженерно-технических, а также учебных задач – школьных и вузовских. Две предыдущие ступени – это работа с машинными кодами (c ассемблером, например) и с языками программирования (BASIC, Pascal, C, fortran и т.д.). Эти две технологии научно-технических расчетов (машинные коды и языки программирования) сыграли с этими расчетами злую шутку: из расчетов были «выдавлены» размерности физических величин и единицы их измерения – метры, килограммы, секунды… Ручное решение физической задачи (школьной или вузовской задачи по физике, если говорить конкретнее), как правило, требовало и требует оперирования сугубо размерными величинами[2] [2]. Автоматизация таких расчетов – написание программ для компьютера исключает из задачи ее «физику»: переменные программы хранят только числовые значения, а соответствующие им единицы измерений программист должен «держать в уме». Из-за этого при переводе расчета на язык ЭВМ необходимо было придерживаться строгого правила – все физические величины должны быть в одной системе единиц. Кроме того, они должны быть без множителей мили, мега и т.д. Это жесткое правило вызывало и вызывает ряд неудобств, основные из которых следующие:
1. Международная система SI[3] [3] хоть и широко распространена в мире, но не является и, по-видимому, никогда не будет являться единственной. США, например, – страна, задающая тон во многих областях науки и техники, использует британскую систему измерений (в среде Mathcad эта система называется U.S.[4] [4]). Базирование программы на какой-либо одной системе единиц мешает естественному процессу глобального обмена идеями, получившему новое ускорение в эпоху Internet[5] [5].
2. Процесс создания программы немыслим без ее отладки, а основной инструмент отладки – это вывод на дисплей промежуточных результатов, анализ которых позволяет локализовать и устранить ошибку, если она была допущена при подборе формул и/или при написании самой программы. А здесь важно не только вывести значение нужной физической величины, но и выразить его в нужных единицах нужной системы измерения с нужными множителями (мега, кило, милли и т.д. – см. таблицу ??? в части 3 книги). Система SI при всех ее достоинствах внедрялась в виде «подарочного набора». Часть единиц измерения (килограммы, метры, секунды) использовались и используются без каких-либо затруднений, другие же («нагрузка») так и не прижились в качестве доминирующих (основных) единиц. В теплоэнергетике[6] [6], например, давление пара в котле чаще всего измеряют и выражают в атмосферах[7] [7], а давление в конденсаторе – в миллиметрах ртутного столба. «Узаконенная» («главная») единица измерения давления (паскаль – ньютон на квадратный метр) оказалась крайне неудобной. Трудно припомнить научно-техническую область, где паскали применялись бы в чистом виде – без масштабирующих множителей[8] [8] (бары, килопаскали, мегапаскали и т.д.). Дело в том, что «прижившаяся» единица измерения, как правило, связана с «жизнью» – с конкретным физическим явлением: атмосфера, как следует из самого названия – это давление воздуха на уровне моря (примерное давление – см. рис. 1.24 и рис. 1.34), а миллиметры ртутного столба напоминают нам об экспериментах Э. Торричелли («торричеллева пустота»; в среде Mathcad torr – это и есть миллиметр ртутного столба). В теплоэнергетике исключение «внесистемных» атмосфер и миллиметров ртутного столба – замена их на паскали чревата не просто неудобствами, но серьезными сбоями в работе, связанными, например, с тем, что оператор, управляющий энергоблоком[9] [9], будет неправильно интерпретировать показания манометров, проградуированных в «правильных» единицах давления.
3. В создаваемые программы приходиться вставлять формулы, выведенные не только в результате теоретического анализа проблемы (F=m g – см. анекдот в эпиграфе, E=m c2, e=m v2/2[10] [10] и т.д.), но и формулы, полученные после статистической обработки экспериментальных данных. Коэффициенты таких формул (см., например, рис. 1.32), как правило, жестко привязаны к той или иной системе единиц измерения и нередко требуют пересчета для использования в программе. Это может вносить дополнительные погрешности и быть причиной ошибок.
Одновременно с выходом книги в свет появится и ее Internet-версия (см. http://twt.mpei.ac.ru/ochkov/unit/index.htm). Это наложило отпечаток на оформление текста, в котором выделены гиперссылки: см. рис. 1.3, см. ниже, см. сноску 3 и т.д. Работая с бумажными вариантом книги, читатель, встретив такую гиперссылку, должен «вручную» перейти на нужную страницу. В Internet-версии переход на новое место и возврат на старое (с гиперссылкой) осуществляется намного проще – стоит только щелкнуть мышкой по гиперссылке. В Internet-версию автор будет вносить изменения и дополнения, которые читатели, автор надеется, будут послать по адресу [email protected].
Исключение единиц измерения физических величин из расчетов на компьютере сказалось и на работе в среде Mathcad. Многие неопытные пользователи примерно так начинают формировать Mathcad-документ записывая размерность введенной величины в виде комментария, а не в виде множителя у числовой константы и отключая тем самым размерность физических величин из дальнейших расчетов. Если вспомнить язык BASIC, например, то там вышеописанный фрагмент расчета будет выглядеть так: P = 20: Rem Давление в МПа. Здесь также единицы измерения записываются в комментарии (в ремарку – Rem). Развивая алгоритм, программист может забыть, что давление у него в паскалях, а не в барах, например. Вот вам и ошибка.
Механизм работы с единицами измерений физических величин позволяет в среде Mathcad:
вводить исходные данные в нужной системе измерений, в нужных единицах с нужными множителями (кило, мили и т.д.);
вести контроль размерностей в формулах, по которым проводятся расчеты (не складывать килограммы с метрами, например)[11] [11];
выводить рассчитанные величины в нужной системе и в нужных единицах измерений, использовать удобный масштаб осей графиков и т.д. и т.п.
Один из путей решения проблемы единиц измерения – это отказ от размерных величин и переход к использованию безразмерных чисел, хранящих количественную оценку тех или иных физических явлений: число Рейнольдса[12] [12], число Нуссельта, число Шмидта и т.д. (см. таблицу ??? в третьей части книги). Когда мы говорим, что давление в котле равно 50 атмосферам, то мы фактически оперируем не размерной (давление), безразмерной величиной – давление в котле в 50 раз выше атмосферного. Еще более радикальный путь – переход от числовых характеристик к качественным оценкам. Можно сказать, что давление в котле равно стольким–то атмосферам, а можно сказать, что давление нормальное (низкое, высокое и т.д.), и построить автоматизированную систему управления энергоблоком, основанную на лингвистических (экспертных) оценках и опирающуюся на теорию нечетких множеств[13] [13].
Пакет Mathcad полностью поддерживает математику работы с размерными переменными, о чем и будет рассказано ниже на несложных примерах.
Список литературы
Для подготовки данной работы были использованы материалы с сайта http://nota.triwe.net/
[1] [1] Эта уникальность не совсем абсолютная. С размерными величинами может работать и другой популярный математический пакет Derive.
[2] [2] Тут автору вспоминаются студенческие практические занятия по теплопередаче, когда приходилось вести расчеты по довольно сложным «размерным» формулам (см., например, рис. 2.18). Единственным средством автоматизации таких расчетов в те времена была логарифмическая линейка. Сам же процесс расчета разбивался на три этапа: логарифмическая линейка выдавала мантиссу ответа, порядок же ответа и его размерность приходилось определять «вручную» – без каких–либо подручных цифровых или аналоговых вычислительных устройств. Из–за этого семинары по теплопередаче превращались в занятия… по технике счета и метрологии: на разбор «физики» задачи времени почти не оставалось. Появившиеся вскоре электронные калькуляторы и вычислительные машины (ЭВМ) стали выдавать ответ, содержащий также и порядок числа. Но единицы измерений по-прежнему оставались «за бортом» процесса автоматизации расчетов.
[3] [3] Здесь и далее мы будем писать SI, а не СИ, т.к. вторая аббревиатура в компьютерной литературе ассоциируется не с международной системой единиц, а с языком программирования.
[4] [4] Эту аббревиатуру мы будем в дальнейшем использовать для обозначения британской систем единиц.
[5] [5] Из среды Mathcad можно, например, выйти на Internet-форум под названием Collaboratory, где помещаются не только вопросы и ответы, но и Mathcad-документы с решением тех или иных задач по различным областям науки и техники. Адрес форума – http://collab.mathsoft.com/~mathcad2000.
[6] [6] Автор – преподаватель Московского энергетического института.
[7] [7] Этот факт зафиксирован, например, в маркировках паровых турбин: Т-100-130 (теплофикационная, электрической мощностью 100 МВт, давление острого пара 130 атм), К-300-240 (конденсационная, 300 МВт, 240 атм). Кроме того, на многих ТЭЦ до сих пор еще стоят старые манометры, градуированные в атмосферах.
[8] [8] В семидесятые годы были попытки давать в прогнозах погоды атмосферное давление не в привычных, но «неправильных» миллиметрах ртутного столба,а в «правильных» гектопаскалях. Это вызвало многочисленные протесты. Еще бы! Гипертоники могли пропустить прием лекарств, неверно поняв прогноз погоды. Потом стали называть давление и в гектапаскалях и в мм рт. ст., а потом все-таки от гектапаскалей отказались.
[9] [9] Управление энергоблоком, конечно, автоматизировано, но за человеком всегда остается право вмешиваться в работу.
[10] [10] Формула для расчета кинетической энергии e «заложена» в такой анекдот, дополняющий до трех «коллекцию» эпиграфа. «Студент–физик вывалился из электрички и ударился головой в придорожный столб. Три дня врачи боролись за его жизнь, а он беспрестанно бормотал: «Хорошо, что пополам, хорошо, что пополам…». При выписке из больницы врачи спросили у студента, что значит «пополам». «Эм ве квадрат пополам» – таков был ответ».
[11] [11] Учет размерности величин часто позволяет вывести нужную формулу. Частота колебания маятника, например, зависит только от длины маятника (математического, конечно) и ускорения свободного падения. Из этой посылки просто вывести нужную формулу.
[12] [12] Характер течения жидкости в трубе (турбулентность-ламинарность) можно оценит по трем размерным параметрам: скорость, диаметр и вязкость, а можно по одному безразмерному – по числу Рейнольдса.
[13] [13] Понятие «нормальное» давление – это нечеткое множество значений. Конкретное значение давления принадлежит этому множеству с определенной степенью вероятности, что описывается соответствующей функцией принадлежности (см. статью автора «Mathcad и теория нечетких множеств» – http://twt.mpei.ac.ru/ochkov/F_sets.htm).