Физические величины в Mathcad

(English version)

Валерий Очков http://twt.mpei.ac.ru/ochkov  ochkov@twt.mpei.ac.ru

(опубликовано в журнале «КомпьютерПресс» 3’2000 – статья на CD-ROM)

Оглавление:

Рис. 1. Расчет давления в среде Mathcad

Рис. 2. Изменение системы измерений

Рис. 3. Смена единиц измерения давления

Рис. 4. Работа с пользовательской нефизической (экономической) величиной

Рис. 5. Что хранят единицы измерения массы

Рис. 6. Контроль размерности переменной

Рис. 7. «Размерный» график

Рис. 8. Размерность в программах

Рис. 9. Функция, возвращающая «букет» переменных

Рис. 10. Работа с «житейскими» градусами в среде Mathcad

Рис. 11. Определение высоты по температуре кипятка

Рис. 12. Работа с эмпирическими формулами в среде Mathcad

Дивертисмент

Обещанная в статье таблица Встроенные переменные Mathcad, к которым «прикрепили» единицы измерения физических величин

Историко-политические комментарии к таблице

«школьных» анекдота в качестве эпиграфа:

1. Диалог в учительской:

Преподаватель Закона Божьего, обращаясь к физику: Сегодня ваш любимчик двойку получил. Спросил я его, что такое Божественная Сила. Так он мне ответил, что это произведение Божественной Массы на Божественное Ускорение.

Физик: Я ему и по физике двойку поставлю. Ведь произведение Божественной Массы на Божественное Ускорение дает Силу с Божественностью в квадрате, а не в первой степени.

2. Диалог на экзамене:

Преподаватель: Что такое лошадиная сила?

Ученик: Это сила, какую развивает лошадь ростом в один метр и весом в один килограмм.

Преподаватель: Да где ж вы такую лошадь видели?!

Ученик: А ее так просто не увидишь. Она хранится в Париже, в Палате мер и весов.

3. Диалог в раю:

Архимед, Паскаль и Ньютон играют в прятки. Архимед водит и начинает считать. Паскаль убегает за горизонт, "в бесконечность", а Ньютон оглядывается, берёт палку, рисует вокруг себя квадрат со стороной 1 метр и становится внутрь квадрата. Архимед заканчивает считать, открывает глаза и видит Ньютона:

Архимед: Я вижу Ньютона!

Ньютон: Э, нет! Ньютон на метр квадратный – это Паскаль! Обознатушки - перепрятушки! (источник - http://www.anekdot.ru/id/414958)

Сейчас никого не удивляет тот факт, что не только аспиранты, инженеры и студенты, но и школьники решают свои задачи на компьютере. Удивление или, по крайней мере, вопросы может вызывать лишь выбор конкретной программной среды для этих целей. Ответ на вопрос, почему для расчетов пользователи компьютеров все чаще и чаще прибегают к услугам Mathcad, может быть и такой: Mathcad обладает уникальной возможностью оперировать не просто величинами, а физическими величинами.

Работа в среде Mathcad – эта третья ступень в использовании вычислительной техники при решении физико-математических, инженерно-технических, а также учебных (школьных и вузовских) задач. Две предыдущие ступени – это работа с машинными кодами (на ассемблере, например) и с языками программирования (BASIC, Pascal, C, fortran и т.д.).

Использование вычислительной техники в научно-технических расчетах сыграло с этими расчетами злую шутку: из расчетов были безжалостно выброшены размерности физических величин и единицы их измерения – метры, килограммы, секунды… Ручное решение физической задачи (школьной или вузовской задачи по физике, если говорить конкретнее), как правило, требовало и требует оперирования сугубо размерными величинами. Автоматизация таких расчетов – написание программ для компьютера исключает из задачи ее «физику»: переменные программы хранят только числовые величины, а соответствующие им единицы измерений программист должен «держать в уме». Из-за этого при переводе расчета на язык ЭВМ необходимо придерживаться строгого правила – все физические величины должны быть в одной системе единиц, кроме того, они должны быть без множителей мили, мега и т.д. Это жесткое правило вызывало и вызывает ряд неудобств, основные из которых следующие:

1.    Международная система (СИ) хоть и широко распространена в мире, но не является и никогда не будет единственной. Базирование программы на какой-либо одной системе величин мешает естественному процессу глобального обмена идеями, получившему новое ускорение в эпоху Internet[1].

2.    В процессе создания программы большую роль играет ее отладка, а основной инструмент отладки – это вывод на дисплей промежуточных результатов, анализ которых позволяет локализовать и устранить ошибку, если она была допущена при подборе формул и/или при написании самой программы. А здесь важно не только вывести значение какой-либо физической величины с правильным форматом, но и выразить ее в нужных единицах нужной системы измерения. Система СИ при всех ее достоинствах внедрялась и у нас и во всем остальном мире «как картошка на Руси» – в виде «подарочного набора». Часть единиц измерения (метры, секунды) используются без каких-либо проблем, другие же («нагрузка») так и не прижились в качестве доминирующих единиц. В теплоэнергетике, например, давление пара в котле чаще всего измеряют и выражают в атмосферах[2], а давление в конденсаторе – в миллиметрах ртутного столба. «Узаконенная» стандартная единица измерения давления – паскаль (ньютон на квадратный метр) оказалась крайне неудобной. Трудно припомнить научно-техническую область, где паскали применялись бы в чистом виде – без масштабирующих множителей[3] (бары, килопаскали, мегапаскали и др.). Дело в том, что «живая», вернее «прижившаяся» единица измерения, связана с «жизнью» – с физическим явлением или физическим опытом: атмосфера, как следует из самого названия, – это давление воздуха на уровне моря (примерное давление – см. рис. рис. 7 и рис. 11), а миллиметры ртутного столба напоминают нам об экспериментах Э.Торричели (в среде Mathcad torr – это и есть миллиметр ртутного столба). В теплоэнергетике исключение «внесистемных» атмосфер и миллиметров ртутного столба – замена их на паскали чревата не просто неудобствами, но серьезными сбоями в работе, связанными, например, с тем, что оператор, управляющий энергоблоком[4], будет неправильно интерпретировать показания манометров, проградуированных в «правильных» единицах давления.

3.    В создаваемые программы приходиться вставлять формулы, выведенные не только в результате теоретического анализа проблемы (F=m g – см. анекдот в эпиграфе, T=m c2 и т.д.), но и полученные после статистической обработки экспериментальных данных. Коэффициенты таких формул (см., например, рис. 12 ниже), как правило, жестко связаны с той или иной системой единиц измерения и нередко требуют пересчета для использования в программе. Это может вносить дополнительные погрешности и чревато ошибками (промахами).

Один из путей решения проблемы единиц – это отказ от размерных физических величин и переход к использованию безразмерных чисел[5], хранящих количественную оценку тех или иных физических явлений, – число Рейнольдса, число Нуссельта, число Шмидта и т.д. Еще более радикальный путь – это переход от числовых характеристик к качественным оценкам физических явлений и технологических процессов. Можно сказать, что давление в котле равно стольким атмосферам, а можно сказать, что давление нормальное (низкое, высокое и т.д.) и построить систему управления энергоблоком, основанную на подобных лингвистических (экспертных) оценках и опирающуюся на теорию нечетких множеств[6].

Пакет Mathcad полностью поддерживает математику работы с размерными переменными, что и будет описано данной статье.

Исключение единиц измерения физических величин из расчетов на компьютере сказалось и на работе в среде Mathcad. Многие неопытные пользователи примерно так начинают формировать Mathcad -документ

записывая размерность введенной величины в виде комментария, а не в виде множителя у числовой константы и отключая тем самым размерности физических величин из дальнейших расчетов.

Механизм работы с единицами измерений физических величин позволяет в среде Mathcad:

·      вводить исходные данные в нужной системе измерений и в нужных единицах измерений;

·      вести контроль размерностей в формулах, по которым проводятся расчеты (не складывать килограммы с метрами, грубо говоря);

·      выводить рассчитанные данные в нужной системе измерений и в нужных единицах измерений;

Механизм работы с размерными величинами будет проиллюстрирован примерами.

На рис. 1 показано решение в среде Mathcad простейшей физической задачи: на площадь S действует сила F; спрашивается, чему равно давление P.

Рис. 1. Расчет давления в среде Mathcad

Физические задачи в среде Mathcad не просто могут, но и должны решаться с подключением единиц измерения физических величинсилы, площади и давления, если иметь в виду нашу задачу. В Mathcad документе по умолчанию синим цветом окрашены комментарии, а черным – математические выражения, а именно:

·        Пункт 1.1. Переменной F оператором «:=» присваивается не просто число 20, а двадцать килограмм силы. Для этого числовая константа пользователем перемножается[7] на одну из системных (предопределенных) переменных, хранящих единицы измерения физических величин. У нас эта переменная имеет имя kgf – килограмм (kg) силы (fforce). «Припечатать» единицу измерения можно, воспользовавшись услугами «Мастера размерностей», диалоговое окно которого (Insert Unit – Вставить единицу измерений) выводится на дисплей нажатием кнопки с изображением мерной кружки (см. рис.1). В диалоговом окне Insert Unit три поля и три кнопки. В первом поле пользователь выбирает нужную физическую величину (Dimension: Force – сила, Frequency – частота, Inductance – индуктивность, Luminosity – освещенности и т.д. – см. таблицу в конце статьи), а во втором – единицу измерения (Unit: для силы это Dynes – дина, уже упоминавшийся Kilogram(force) – килограмм силы, Newton – ньютон и Pounds(force) – фунт силы). В третьем поле показана система измерений, которую пользователь также вправе менять (см. ниже рис. 2 и рис. 5). Кнопка ОК вставляет выбранную единицу и убирает с дисплея окно Insert Unit, кнопка Insert – вставляет единицу и оставляет окно на дисплее для дальнейшей работы с ним, а кнопка Cancel (отмена) выполняет третью комбинацию действий – убирает окно и не вставляет единицу.

·        Пункт 1.2. Ввод значения переменной S. Здесь единица измерения площади вводятся без помощи Мастера размерностей, т.к. сокращение квадратных сантиметров (cm2) запомнить довольно легко (как записать русские см, а не латинские cm – см. рис. 3).

·        Пункт 2. Расчет значения давления. Переменная P при этом принимает не только числовое значение (результат деления значения переменной F на значение переменной S), но и результат деления килограмма силы на квадратный сантиметр, вернее просто силы на площадь.

·        Пункт 3. Вывод рассчитанного значения давления:

·        Пункт 3.1. Значение давления выводится с форматом и с размерностью умолчания – сочетание основных единиц измерения массы (kg), расстояния (m) и времени (sec), записанное одной строкой. В выражении kg × m-1 × sec-2 – увидеть давление можно, если его помножить и тут же поделить на mkg × m/( m2 × sec).

·        Пункт 3.2. Вывод единиц измерения не в виде одной строки, а в виде дроби: первый шаг форматирования – см. галочку в поле Format Units окна Result Format на рис. 1. Данное окно вызывается на дисплей двойным щелчком по числовому результату.

·        Пункт 3.3. Вывод результата с упрощенными до одной переменной (Pa – паскаль) единицей измерения давления. Паскали получились потому, что Mathcad (европейская версия) по умолчанию ориентирован на SI – на международную систему измерения (см. поле System в окне Insert Unit на рис. 1). Если же изменить систему измерений (см. рис. 2) – перейти от SI, например, к британской (американской – U.S.) системе, то давление будет измеряться уже не в паскалях, а в «заокеанском» аналоге единицы измерения давления, где вместо килограммов выступают фунты (lb), а вместо метров – на футы (ft)[8].

Рис. 2. Изменение системы измерений

Пользователь Mathcad может выразить давление в любых других единицах измерения давления – встроенных (перечисленных в окне Insert Unit на рис. 1 и в таблице ниже) или пользовательских. На рис. 3 рассчитанное давление выведено в паскалях (Pa) и в атмосферах физических (atm – 760 миллиметров ртутного столба). Кроме них в Mathcad встроены и перечислены в окне Inset Unit и другие единицы измерения давления: дюймы ртутного столба (in_Hg), фунты силы на квадратный дюйм (psi) и миллиметры ртутного столба (torr, единица, названная в честь Э.Торричелли). Если же пользователя этот список не устраивает, то он может ввести в расчет пользовательские единицы (или просто национальное написание международных единиц измерения), связав их со встроенными: кгс := kgf, см: = cm и т.д. В конце рис. 3 давление выведено в атмосферах технических – килограмм силы на квадратный сантиметр. Более того, давление можно выразить, связав силу не с «квадратной» (cm2), а с «прямоугольной» (см × m) площадью.

Рис. 3. Смена единиц измерения давления

В среду Mathcad встроены инструменты работы с основными (время, длина, масса, сила тока, освещенность, температура и количества вещества) и с производными величинами – см. таблицу ниже. Механизм работы с пользовательскими величинами (не с единицами, а с величинами) в среде Mathcad не предусмотрен. Но единицы измерения новых (нефизических) величин можно ввести в расчет, связав их с единицей измерения какой-либо встроенной величины, которая в данном расчете не используется – с освещенностью[9], например.

Рис. 4. Работа с пользовательской нефизической (экономической) величиной

На рис. 4 ведется расчет платы за потребленную электроэнергию – на мощности 300 Вт (watt) работали 150 дней (day). Единица измерения стоимости временно приравнивается к канделе (cd) – см. пункт 1 на рис. 4. При этом ответ (плата за электроэнергию) будет выведен в канделах, которые нужно будет переправить на рубли[10] – см. последнюю строку на рис. 4. Можно было в Mathcad документе на рис. 4 записать не руб := cd, а руб := 1, но связывание единиц измерения новой величины с одной из встроенных, не использующейся в данном расчете, позволяет сохранить механизм контроля размерностей. Дело в том, что ввод в расчет единиц измерения позволяет не только подстраивать ответ под нужную шкалу восприятия пользователем физических величин (в одном месте давление лучше вывести в атмосферах, а в другом – в миллиметрах ртутного столба и т.д.), но и блокирует, например, сложение метров с килограммами.

Единицы измерения физических величин – это по своей сути предопределенные переменные, хранящие размерные величины, «вид» которых зависит от выбранной системы измерений – см. рис. 5, где показаны «метаморфозы» трех основных единиц измерения массы: килограмма (kg), грамма (gm) и английского фунта (lb[11]).

Рис. 5. Что хранят единицы измерения массы

На рис. 5 показано, как будут выглядеть три оператора вывода основных единиц массы, если менять систему измерений.

Как видно из рис. 1, приведенного в начале статьи, технология решения задач в среде Mathcad полностью повторяет технологию «ручного» решения: вводятся исходные данные (пункт 1 на рис. 1 – «делай раз»), ведется расчет («делай два») и выводится результат («делай три»). При этом создатель Mathcad-документа вправе требовать от будущего пользователя ввода не просто исходных значений переменных (числа), но и числа с нужной размерностью.

Рис. 6. Контроль размерности переменной

На рис. 6 показан один из способов контроля размерностей: к введенной переменной прибавляется и тут же отнимается единичный метр. С вводимой величиной ничего не происходит, но если она безразмерная или хранит размерность не длины, а какой-то другой величины, то расчет прерывается сообщениями об ошибке: «The units in the expression do not match – единицы измерения в выражении не соответствуют друг другу» и «This variable or function is not defined above – эта переменная или функция не определена выше». Оператор d := d + m - m несколько странен с позиций традиционного программирования[12], но в среде Mathcad он вполне закономерен, если вспомнить что m – это единичный метр. Кроме того, в среде Mathcad можно иметь разные одноименные переменные, обозначенные как Variables и User1, чем мы и воспользовались при контроле размерности переменной d.

Для контроля размерности переменной можно использовать и встроенную функцию UnitsOf (см. рис. 6), возвращающую единицу измерения своего аргумента.

Единицы измерения физических величин можно и нужно использовать не только в самих расчетах, но и для графического оформления их.

Рис. 7. «Размерный» график

На рис. 7 показан расчет изменения давления по высоте с использованием барометрической формулы[13]. Результаты расчета выведены в виде графиков – левый график для континентальной Европы, правый – для США и Великобритании. Если по осям графика записать такие выражения: по оси ординат – p(h), а по оси абсцисс – h (высота, которую мы дискретно меняем (табулируем) от 0 до 20 км с шагом 100 м), то шкалы осей будут градуированы в паскалях и в метрах. Изменение градуировки происходит так: пользователь меняет p(h) на p(h)/единица измерения давления и h на h/единица измерения длины, выбирая тем самым нужную градуировку осей графика – метрическую, британскую или еще какую-то другую: не километры, а метры, не тысячи футов, а мили, мм (дюймы) ртутного столба[14], а атмосферы и т.д., подстраивая график по оптимальное его восприятие человеком.

Элементы Mathcad документа (ввод исходных данных, расчет по формулам, вывод результатов) выполняется в их естественной последовательности – сверху вниз и слева на право. Пользователь Mathcad может нарушить этот порядок, организовав циклы (часть операторов выполняется циклически до тех пор, пока не будет выполнено некое условие) или альтернативы (выполняется либо одна, либо другая группа операторов). Еще два атрибута программирования в среде Mathcad – это объединение части (группы) операторов в операторный блок, который выполняется как один оператор, и работа с локальными переменными, видимыми только внутри программного блока.

Последующие два рисунка (рис. 8 и рис. 9) проиллюстрируют особенности использования единиц измерения в Mathcad-программах.

Рис. 8. Размерность в программах

На рис. 8 с помощью инструментов программирования формируется функция пользователя, возвращающая объем прямого круглого конуса в зависимости от диаметра его основания и длины образующей (два аргумента функции). Разработчик Mathcad (фирма MathSoft, Inc. – www.mathsoft.com) не гарантирует правильность работы механизма размерностей, если в программе есть циклы[15]. Циклов в нашей программе нет (там задействованы только два из трех атрибутов программирования – объединение операторов в блок, отмеченный вертикальной, чертой и объявление локальных переменных d, a, r, и h через операто𠫬»), но, тем не менее, в программе мы сразу лишаем переменные их размерности: d¬Диаметр/m, а¬Образующая/m («береженого Бог бережет»). «Отнятые» у переменных метры в конце выполнения программного блока «возвращаются с процентами» – с метрами кубическими.

Британский или английский пользователь Mathcad может тут использовать футы и/или дюймы, но на работу функции V это не повлияет: вызывая ее, можно использовать любые единицы длины и объема – см. примеры на рис. 8.

При использовании единиц измерения в программах может возникнуть такая проблема. Часто бывает необходимо, чтобы функция пользователя возвращала не одно, а несколько значений[16]. Если вернуться к нашей функции расчета объема конуса, то можно попытаться заставить ее возвращать не только объем конуса, но и остальные рассчитанные внутри функции параметры конуса, хранящиеся в локальных переменных: R (радиус основания конуса), H (высота), S (площадь основания) и, естественно, V (сам объем). Выводятся все эти значения в виде массива: матрицы с двумя столбцами, первый из которых – это комментарии. Во втором столбце выводятся вышеперечисленные параметры конуса, лишенные своей размерности из-за того, что элементами массива (вектора или матрицы) в среде Mathcad могут быть только величины одной размерности или просто безразмерные – см. рис. 9.

Рис. 9. Функция, возвращающая «букет» переменных

Из формируемой матрицы можно изъять нужный элемент, припечатав к нему нужную единицу измерения:

V(D, A) := F(D, A)3,1×m3

В списке встроенных единиц измерения температуры есть градусы Кельвина (К) и Ренкина (R)[17], но нет более «житейских» градусов Цельсия и Фаренгейта. Дело в том, что к этой физической величине применяют два метрических понятия – единица измерения и шкала измерения[18]: градус Цельсия равен градусу Кельвина, но шкала Цельсия сдвинута по отношению к шкале Кельвина на 273,15 градусов (Цельсия или Кельвина). Из-за этого к единицам (шкалам) измерения температуры нельзя применить простое правило создания пользовательских единиц измерения, связав их со встроенными через множители, как это было сделано на рис. 3. На рис. 10 показан один из возможных механизмов работы с пользовательскими единицами (шкалами) измерения температуры в среде Mathcad. Для конвертирования градусов Цельсия, градусов Фаренгейта и градусов Реомюра[19] в градусы Кельвина или Ренкина введены три пользовательские функции с именами °C, °F и °Реомюра, которые при вводе температур вызываются не в виде функции – t := °C(300), а в виде постфиксного оператора – t := 300 °C, что создает полную иллюзию работы с внесистемной единицей измерения – с градусом Цельсия. Но переменная t при этом «захватывает» температуру в абсолютной шкале измерения: t = 573.15 К или t = 1031.67 R. Вывод значения температуры по шкале Цельсия или Фаренгейта ведется еще более хитро. Для этого объявляются две функции с невидимыми именами (в среде Mathcad это возможно): у первой функции (вывод температуры по шкале Цельсия) имя – пробел, а у второй (вывод температуры по шкале Фаренгейта) – два пробела. При этом для маркировки выведенного значения температуры пришлось «одолжить» символы C и F у заряда и емкости. Здесь нет ничего крамольного –относительные шкалы измерения мы используем только при вводе и выводе значений температуры. Сами же расчеты ведутся только в абсолютной шкале температур (градусы и шкалы Кельвина или Ренкина).

Рис. 10. Работа с «житейскими» градусами в среде Mathcad

Барометрическая формула и графики изменения давления по высоте, показанные на рис. 7, незримо присутствует в одном из рассказов Марка Твена[20]. Дело было в горах и разговор зашел о том, что кипящая в котелке вода может подсказать высоту над уровнем моря. Герои рассказа забыли, что нужно опустить в кипящую воду – термометр или барометр. Термометра под рукой не оказалось, сунули в воду барометр, который тут же сломался. Опустили в воду другой – эффект тот же самый. Высоту над уровнем моря так и не определили, но зато научились варить отличнейший «суп из барометров». Серьезно разбирать сюжеты Марк Твена – дело бессмысленное. Но мы рискнем.

Героям рассказа Марк Твена достаточно было перенести показания барометра на ординату графика на рис. 7, чтобы узнать высоту над уровнем моря. Кипятить термометр следовало лишь в том случае, если бы под рукой не оказалось барометра.

Рис. 11. Определение высоты по температуре кипятка

На рис. 11 показано, как в среде Mathcad можно определить высоту над уровнем моря по температуре кипящей воды. Для этого одной барометрической формулы не достаточно. Нужна еще и формула (функция), связывающая температуру кипящей воды с давлением. Эта функция имеет имя wsp_pst и входит в пакет функций теплофизических свойств воды и водяного пара, разработанных для Mathcad в Московском энергетическом институте[21] К.Орловым – студентом автора. В Mathcad-документе на рис. 11 первой строкой делается ссылка (Reference) на файл с именем WaterSteamPro.mcd, где эти функции созданы. После такой ссылки в рабочем документе становятся доступными («видимыми») все нужные для работы пользовательские функции, возвращающие параметры воды и водяного пара. Для удобства работы с этими функциями сделано так, чтобы они были видимы и описаны в Мастере функций Mathcad. Файл с именем Системы единиц.mcd, на который также делается ссылка, хранит пользовательские единицы измерения.

Файлы WaterSteamPro.mcd и Системы единиц.mcd можно скачать из Internet-адреса http://twt.mpei.ac.ru/orlov/watersteampro на условиях shareware.

Серьезный разбор задачи о высоте над уровнем моря – это дело не совсем «серьезное». И не только потому, что юмор Марк Твена всячески «сопротивляется» этому. Дело и в том, что барометрическая формула предназначена только для идеального газа. Кроме того, давление воздуха на одной и той же высоте может сильно колебаться. Температуру воздуха мы приняли за 5 градусов Цельсия, а она сильно изменяется по высоте.

Но цель нашего расчета не в разборе рассказа, а в показе возможностей Mathcad при решении «размерных» задач (тема статьи, если кто-то забыл).

Использование размерностей физических величин в среде Mathcad позволяет по-новому организовать расчеты по эмпирическим формулам, переменные которых «намертво» привязаны к определенным единицам измерения. Переход к новым единицам требует перезаписи формул.

Пример. Для расчета теплоотдачи при кипении[22] воды пользуются формулой (источник – справочник «Теплоэнергетика и теплотехника» т.1. Общие вопросы. М.: Издательство МЭИ, 1999 – 528 с.: ил).

,                                                                      (1)

где α – ккал/(м2 .ч .К); p – кгс/см2; q – ккал/(м2 .ч).

При записи этой же формулы с использованием системы единиц СИ значение постоянного множителя в правой части формулы (1) изменяется.

Необходимо определить новое значение этого множителя. Обозначим его буквой С, тогда:

.                                                                      (2)

1 Вт/(м2.К) = 0,860 ккал/(м2 .ч.К);

1 Па = 1,02.10-5 кгс/см2;

1 Вт/м2 = 0,860 ккал/(м2 .ч).

Подставляя коэффициенты из одной системы единиц в формулу для расчета теплоотдачи при кипении, получаем новое значение постоянного множителя:

,                                        (3)

и в новых единицах формула (1) примет вид:

,                                                 (2.1)

где α – Вт/(м2.К); p – Па; q – Вт/м2.

На рис. 12 показано решение этой «метрической» проблемы в среде Mathcad.

Рис. 12. Работа с эмпирическими формулами в среде Mathcad

Если формула оперирует только определенными единицами измерений и возвращает ответ с оговоренной единицей, то эти оговорки необходимо записать в формуле так, чтобы при обращении к ней можно было пользоваться любыми встроенными или пользовательскими единицами измерений (см. подсвеченные операторы на рис. 12).

При работе с размерностями Mathcad может возникать интересная ситуация, связанная с округлением степени единицы измерения физической величины до целых значений. На рисунке ниже показана такая ситуация, когда по ошибке или специально из литра извлекается квадратный корень:

Mathcad выдает ответ: квадратный корень из литра равен стольким-то метрам в первой степени, т.е. просто метрам, что смущает вдумчивых пользователей, которые вполне законно делают вывод о том, что Mathcad не совсем корректно работает с размерностями. Но здесь дело в том, что Mathcad округляет до целого степень единицы измерения. Если подставить в ответ другую единицу измерения (метр в степени полтора), то все станет на свои места (см. выше).

Округляет до целого только Mathcad 2000[23] – более ранние версии (Mathcad 8, например) выдавали и дробные степени единиц измерения (m1.5, например). Разработчики Mathcad посчитали было, что дробная степень единицы измерения – это «сапоги всмятку». Но это не совсем так. Можно, например, длину измерять в галлонах, из которых извлекли кубический корень. Почему бы и нет! Если есть единица объема кубический метр, то допустима и единица длины – кубический корень из галлона (литра, стера и т.д.).

 

Один персонаж Аркадия Райкина (алкоголик) измерял комнату чекушками (бутылками в 0,25 литра водки), а потом пытался высчитать площадь в «квадратных литрах». Он был не очень далек от истины:

Литра будет служить в качестве единицы площади, если его возвести в соответствующую дробную степень (две трети).

Дивертисмент

В романе Агаты Кристи «Убийство в Месопотамии» читаем: «Начнем с того, что его рост, на мой взгляд, не превышал пяти футов и пяти дюймов». Загадка роста знаменитого сыщика – Эркюля Пуаро разгадывается в среде Mathcad одним оператором:

5 ft + 5 in = 165.1 cm

Можно, конечно, возразить, что эту простенькую задачу можно решить и без Mathcad. Cтóит только взять в руки калькулятор и энциклопедический словарь. Но ценность Mathcad в том, что он объединяет в себе (интегрирует) и калькулятор[24], и справочник по физическим величинам, и многое другое[25].

Более сложную загадку о росте своего героя оставил нам И.С. Тургенев. Второй абзац знаменитой повести «Муму» начинается так: «Из числа всей ее челяди самым замечательным лицом был дворник Герасим, мужчина двенадцати вершков роста, сложенный богатырем и глухонемой от рождения».

вершок := 4.445 см    (В справочник мы все-таки заглянули)

12 вершок[26] = 53.36 см

Герасим, судя по этому подсчету, не дотягивал не то что до богатыря – не тянул на карлика. В чем тут дело!?

Гипотеза первая. Тургенев, описывая Герасима, имел в виду не простые, а какие-то особые вершки. Ведь есть сажень, а есть косая сажень («косая сажень в плечах!»), маховая сажень, есть метрическая тонна, а есть «длинная» тонна, «короткая» тонна, есть сухопутная миля, а есть морская и т.д. Но поиск[27] таинственных «удлиненных» вершков окончился неудачей – вершки оставались вершками: семь четвертых дюйма, одна четвертая пяди, одна шестнадцатая аршина, одна сорок восьмая сажени и т.д.

Более вероятной представляется другая гипотеза, связанная с принципом умолчания. Дело в том, что рост человека, как правило, укладывается в диапазоне от 2 до 3 аршин:

Аршин := 16 вершок (вершки определены выше)

2 аршин = 142.24 см

3 аршин = 213.36 см

Три аршина – это хороший баскетболист, а два аршина – рулевой восьмерки в академической гребле.

Представим себе такую сценку прошлого века[28], близкую, правда, не Тургеневу, а другому великому русскому писателю – Достоевскому. В тюрьму прибывает новая партия арестантов. Первый тюремщик измеряет их рост, а второй (писарь) заносит цифры в протокол. В помещении, где все это происходит, звучат короткие фразы: «Пять», «Три с половиной, «Четыре с четвертью» и т.д. Отсчет в вершках (первое умолчание) здесь ведется не от пола (нуль – абсолютная шкала измерения), а от двух аршин (второе умолчание – относительная шкала измерения). Тургенев выбросил из повести «два аршина» потому, что краткость это сестра не только таланта, но и процесса быстрой и точной передачи информации. В основе компромисса между требованиями точности и быстродействия лежит этот самый принцип умолчания.

Опираясь на изложенную гипотезу, несложно подсчитать рост Герасима:

2 аршин + 12 вершок = 195.58 см

Вот это нормальный богатырский рост! (Развитие и некоторое дублирование темы – см. статью Mathcad и некоторые тайны художественной литературы, журнал Домашний компьютер, № 5, 2000).

Обещанная в статье таблица
Встроенные переменные Mathcad, к которым «прикрепили» единицы измерения физических величин

Физическая величина

Единицы измерения (предопределенная переменная Mathcad)

активность (activity)

Bq (беккерель)

время (time)

day (день), hr (час), min, s, sec и yr (год)

вязкость динамическая (dynamic viscosity)

poise (пуаз)

вязкость кинематическая (cinematic viscosity)

stokes (стокс)

давление (pressure)

atm (атмосфера физическая), in_Hg (дюймы ртутного столба), Pa, psi (фунт силы на квадратный дюйм) и torr (мм ртутного столба)

длина (length)

cm, ft (фут), in (дюйм), km, m, mi (миля), mm и yd (ярд)

доза (dose)

Gy (грей) и Sv (зиберт)

емкость (capacitance)

F, farad, mF, nF, pF и statfarad

заряд (charge)

С, coul (кулон) и statcoul

индуктивность (inductance)

H, henry, mH, mH и stathenry

индукция магнитного поля (magnetic flux density)

gauss, stattesla, T и tesla

количество вещества (substance)

mole (моль)

магнитный поток (magnetic flux)

statweber, Wb и weber

масса (mass)

gm, kg, lb (фунт), mg, oz (унция), slug (пуд), ton (тонна британская) и tonne (тонна метрическая)

мощность (power)

hp (лошадиная сила[29]), kW, W и watt

напряженность магнитного поля (magnetic field strange)

Oe и oersted (эрстед)

объем (volume)

fl_oz («жидкая» унция), gal (галлон), L, liter и mL

освещенность (illuminosity)

lx (люкс)

площадь (area)

acre (акр) и hectare

потенциал (potential)

kV, KV, mV, statvolt, V и volt

проводимость (conductance)

mho, S, siemens и statsiemens

сила (force)

dyne, kgf, lbf, N и newton

сила света (luminosity)

Cd (кандела) и Im (люмен)

скорость (velocity)

kph (км в час) и mph (мили в час)

сопротивление (resistance)

KW, MW, ohm, statohm и W

температура (temperature)

K и R

ток (current)

A, amp, KA, mA, mA и statamp

угол (angular)

deg, rad и str (стерадиан)

ускорение (acceleration)

g (ускорение свободного падения)

частота (frequency)

GHz, Hz, kHz, KHz и MHz

энергия (energy)

BTU (британская тепловая единица[30]), cal, erg, J, joule и kcal

Историко-политические комментарии к таблице

  1. Вот говорят: «Человек с Большой буквы», выделяя его тем самым из толпы. Но, глядя на таблицу, можно сказать, что самая высшая оценка ученого-естествоиспытателя, это когда его имя напишут не с заглавной, а с прописной буквы: ньютон, вольт, ом, джоуль, кельвин и т.д. – когда его именем назовут единицу измерения физической величины. (У «нефизиков» есть возможность прославиться через единицы измерения другой, «нефизической» величины – украсить своим портретом монету или банкноту.)

  2. Наука, связанная с единицами измерения физических величин, называется метрологией. Метрология – это единственный раздел физики, название которого имеет не два, а три прилагательных[31]: кроме теоретической и практической метрологии есть еще и законодательная метрология. Все исторические катаклизмы, как правило, сопровождались коренными изменениями в системе мер и весов. Великая Французская революция подарила нам новый календарь, метрическую систему (грамм, метр, литр, стер) и многое другое. Из этих новшеств «термидоры», «жерминали» (названия «революционных» месяцев), «стеры» (куб с ребром в один метр) и «многое другое» кануло в лету, а «многое другое» осталось. Гражданская война в Швейцарии в 1847 г. разгорелась на религиозно-метрической почве. Семь кантонов (Зондербунд) боролись за свои собственные меры веса и длины. Уж если швейцарцы взялись за оружие и пошли на гражданскую войну («Дан приказ – тебе на запад, мне – в другую сторону…»), то можно понять всю важность мер и весов в жизни отдельного человека и всего общества. В прошлом веке в России более-менее мирно уживались старые и новые меры длины и массы (веса). Вот отрывки из рассказа А. П. Чехова «Поленька». Посетительница галантерейного магазина просит аграманту «для лифчика, для спинки, одним словом, на весь гарнитурчик». Приказчик, вступая в торг, возражает: «– Помилуйте, рубль вовсе не дорого.<…>. Это аграмант французский, восьмигранный…извольте, у нас есть обыкновенный, весовой…тот 45 копеек за аршин, это уж не то достоинство! Помилуйте-с!» И далее: «– Вам какой прикажете корсет?» <…> «– Мне… мне в 48 сантиметров!». Нужна была кардинальная Октябрьская Революция, чтобы вершки, аршины, сажени, версты и многое другое ушло в историю. Сейчас британская система мер доживает последние дни (года). Англосаксы (включая и американцев) волей-неволей вынуждены использовать международную систему измерений (SI), что связано в первую очередь с мировой экономической интеграцией. Но американцев смущает тот факт, что в SI нет ни одного «американца» – паскали, фарады, кулоны, гауссы, теслы, генри, герцы, кельвины, цельсии, джоули, ватты, амперы, вольты и т.д. и т.п. – это все «европейцы». «Метрическое» противостояние Старого и Нового Света сказалось, например, на том, что американцы с трудом признали немца Ома (ohm – единица измерения электрического сопротивления), но наотрез отказываются признавать другого немца Сименса (siemens – единица измерения электрической проводимости). Чем, собственно, предприниматель и изобретатель Сименс лучше своих американских коллег Эдисона и Белла[32], например. В пику европейцам американцы проводимость измеряют не в сименсах, а в «mho»: mho – это палиндром от «ohm» (ом). В момент утверждения SI (СИ) советская делегация настаивала на том, чтобы в списке единиц были не только англичане, французы, итальянцы и немцы, но и русские – предлагалось универсальную газовую постоянную (см. рис. 7) измерять в менделевиях. Но это предложение не было принято[33].

  3. История единиц измерения – это история выдавливания из житейского обихода «недесятичных» величин. Сравним: 1 верста= 500 сажень=1500 аршин=24000 вершков[34] и 1 км=103 м=104 дм=105 см=106 мм. Такая же история случилась и с деньгами – вспомним, как англичане оплакивали свои «старые, добрые» кроны (5 шиллингов), гиней (21 шиллинг), шиллинги (12 пенсов или 1/20 фунта) и т.д. Не поддаются пока «десятиризации» только время (в сутках 24 часа, в часе 60 минут, в минуте 60 секунд) и углы (в круге 360 градусов[35], в градусе 60 угловых минут или 3600 угловых секунд)[36].



[1] См. статью «Mathcad и Internet или Сетевой колхоз».

[2] Этот факт зафиксирован и в маркировках паровых турбин: Т-100-130 (теплофикационная, электрической мощностью 100 МВт, давление острого пара 130 атм); К-300-240 (конденсационная, 300 МВт, 240 атм).

[3] В семидесятые годы ХХ столетия (здесь непонятно, как считать: «нашего столетия» или «прошлого столетия») были попытки заменить в прогнозах погоды миллиметры ртутного столба, в которых измеряется атмосферное давление, на гектопаскали, что вызвало многочисленные протесты. Еще бы! Гипертоники могли пропустить прием лекарства, неправильно поняв прогноз погоды.

[4] Управление энергоблоком, конечно, автоматизировано, но за человеком всегда остается право вмешиваться в работу.

[5] Тут на ум приходит избитая истина о том, что «лучшее средство от перхоти – это… гильотина». Да, лучший инструмент работы с размерными величинами – это… отказ от них.

[6] Понятие «нормальное» давление – это нечеткое множество значений давления. Конкретное значение давления принадлежит этому множеству с определенной степенью вероятности, что описываются функцией принадлежности (см. статью «Mathcad и теория нечетких множеств» в журнале КомпьютерПресс № 1, 1998).

[7] В среде Mathcad если число умножается на переменную, то знак умножения можно не ставить: := 20 kgf, что более соответствует общепринятой норме записи физической величины. Но знак умножения все-таки лучше ставить, чтобы не путать умножение с префиксным или постфиксным операторами, показанными на рис. 10.

[8] На рис. 2 изменен не только вид единиц измерения, но и формат числа (1.307553 × 10= 130755.3) – см. ярлык Number Format на рис. 1.

[9] Можно было бы связать рубли с секундами, материализовав известный принцип: «Время – деньги!». Но время фигурирует в нашем расчете платы за электроэнергию на рис. 4.

[10] Если в п. 1 на рис. 4 записать $US = 28 руб, например, то плату за энергию можно выводить и в долларах США. Число 28 можно заменить на константу, значение которой считывается с сайта Центробанка, например.

[11] lblibra (ливр – старинная французская монета), pound, фунт.

[12] Еще более странным в этом смысле может показаться такой оператор d := d. Но в среде Mathcad этот оператор вполне законен – он лишает переменную d ее численного значения для последующего символьного преобразования.

[13] Она на рис. 7 подсвечена: в Mathcad-документе можно поменять цвет фона отдельных операторов, чтобы обратить на них внимание оппонента.

[14] При просмотре единиц измерения физических величин возникает ощущение того, что кто-то специально все запутывает: мм ртутного столба – это единица давления, а не длины. Список таких несуразностей можно продолжить: световой год – это не время, а расстояние (до звезд, как правило), лошадиная сила – это не сила, а мощность, фунт стерлингов – не масса, а стоимость и т.д.

[15] В документации Mathcad эта проблема дипломатично обойдена, но в «Советах дня» (краткие советы, появляющиеся при запуске Mathcad) есть такой пункт «Mathcad's programming language doesn't keep track of units inside looping constructs, so it's a good idea not to use units within a program.».

[16] Выводить на дисплей значений локальных переменных полезно при отладке программы.

[17] «Американский» аналог градусов Кельвина: К = 1.8 R.

[18] Шкала измерений может быть не только у температуры, но и у давления: есть абсолютное давление, а есть – избыточное, превышающее, например, атмосферное. Все манометры, как правило, отградуированы на избыточное давление. Еще один пример избыточной величины – рост тургеневского Герасима (см. дивертисмент).

[19] Были когда-то и такие градусы – в одном из рассказов Вс.М.Гаршина читаем: «Стоял прекрасный июльский день. А прекрасен он был потому, что было 25 градусов по Реомюру». А вот как начинается рассказ А.П.Чехова «Брожение умов»: «Земля изображала из себя пекло. Послеобеденное солнце жгло с таким усердием, что даже Реомюр, висевший в кабинете акцизного, потерялся: дошел до 35,8 и в нерешительности остановился…». В рассказах и повестях Джека Лондона другая «температурная» и «метрологическая» крайность стужа на Аляске измеряется только в фаренгейтах. Но ни фаренгейты, ни реомюры нынешнему отечественному читателю непонятны. Автор застал старые комнатные термометры, где с одной стороны капилляра с окрашенным спиртом были градусы Цельсия, а с другой – градусы Реомюра.

[20] Автор, убей Бог, не может вспомнить, в каком именно рассказе был описан этот случай. Да и вообще, Марк Твен ли это рассказ написал!?

[21] Основа мировой энергетики – теплоэнергетика. Рабочим телом циклов ТЭС и АЭС является, как правило, вода и водяной пар.

[22] Читатель, не вникай в суть задачи – вникай в механизм использования размерностей!

[23] Так было до установки на Mathcad 2000 первой «заплатки» PROmc2k1.exe (3.5 MB). Подправленная («заплатанная») версия Mathcad 2000, номер которой стал оканчиваться буквой A, со степенями единиц измерения стал работать правильно – перестал округлять их до целого.

[24] Точнее, суперкалькулятор кроме выполнения привычных математических действий, Mathcad способен вычислять интегралы и дифференциалы, работать с векторами и матрицами, а также вести аналитические преобразования (символьная математика).

[25] Многое другое – это справочник по основным математическим и физическим формулам и константам, броузер Internet, обучающая система и многое другое.

[26] Здесь следовало бы написать 12 вершков, но вершок и вершков (вершка) это одинаковые единицы измерения в среде русского языка, но разные в среде Mathcad. Это еще один довод против использования русских имен переменных в программировании.

[27] Он велся не только в справочниках, но и в сети Internet.

[28] Автор закладывает в статью ошибку 2000-го года. Читатель, знакомясь со статьей в 2001-м году, решит, что воображаемая сцена имела место в 20-м, а не в 19-м веке.

[29] В среде Mathcad кроме стандартной лошадиной силы (hp) есть и другие «лошадиные» единицы мощности, имеющие хождение в Великобритании и в Северной Америкеbhp («котловая» лошадиная сила), ehp («электрическая» лошадиная сила), mph («метрическая» лошадиная сила), hpUK (британская лошадиная сила), whp («водяная» лошадиная сила) и др.

[30] В среде Mathcad кроме единицы BTU есть и другие тепловые единицы, имеющие хождение в Великобритании и в Северной АмерикеBTU15 (единица, привязанная к воде при 15 градусах Цельсия), CBTU (канадская тепловая единица), IBTU (тепловая единица международной организации стандартов – ISO), mBTU («основная» тепловая единица) и tBTU («термодинамическая» тепловая единица). Кроме стандартной калории cal, в Mathcad встроены и другие тепловые единицы – cal15 (единица, привязанная к воде при 15 градусах Цельсия), cal20 (единица, привязанная к воде при 20 градусах Цельсия), dcal («диетическая» калория), mcal («основная» калория) и tcal («термодинамическая» калория).

[31] В прилагательных к названиям научных дисциплин таится некая ущербность, которая хорошо иллюстрируется гипотетическим диалогом на Шаболовке: «Папа, кто построил эту башню?» «Инженер Шухов». «Это как наша мама инженер?» «Нет, сынок, наша мама старший инженер». С другой стороны, «настоящие» научные дисциплины не боятся прилагательного «занимательный»: занимательная математика, занимательная физика и т.д. Но… «Занимательный научный коммунизм» — как вам это понравится?.. Ладно, не будем пинать издыхающего льва «Занимательная астрология». Прилагательное «занимательный» можно рассматривать как некий пробный камень. Приложил его (прилагательное) к названию дисциплины и сразу понял, что там, где нет занимательности (юмора), нет и настоящей науки. Но четкую грань между наукой и лженаукой провести не так просто: математика, физическая математика (в смысле «физико-математические науки»), физическая химия, химическая химия, химия теоретическая, химия прикладная и, наконец, алхимия (метафизика). Так плавно можно перейти от науки к лженауке.

[32] Есть единица измерения силы звука децибел (одна десятая бела), но она не вошла в СИ и не считается единицей измерения. Это некий логарифмический множитель («недоединица»).

[33] Менделеев, конечно, великий ученый, но зачем же стулья, пардон, язык («менделевий») ломать.

[34] Есть такая цепочка для запоминания устаревших единиц измерения длины: винтовка-трехлинейка имеет калибр 7.62 мм; в дюйме десять линий, в пяди 7 дюймов или 4 вершка, в аршине 16 вершков, а в сажени 3 аршина. Даниил Хармс говорил, что его телефон запомнить очень просто – 32-08: тридцать два зуба и 8 пальцев… Читатель, автор надеется, почувствовал все прелести (без кавычек) метрической системы.

[35] Знаменитая в свое время ПЭВМ «Искра-226» могла работать с радианами, градусами и градами (в прямом угле 90 градусов и 100 град – одна из попыток частичной «десятеризации» угловых измерений). Встроенный язык Бейсик «Искры» был настроен на радианы, но это умолчание можно было нарушить, выполнив команду SELECT D (работа с градусами) и SELECT G (работа с градами). Была такая первоапрельская шутка. Работающий на компьютере отлучался, а кто-то другой выполнял оператор SELECT G. Программа выдает не то, что от нее ждут, и нельзя понять, в чем ошибка.

[36] На рубеже ХVIII-XIX веков, если быть точным, то с 1793 по 1805 г., в той же революционной Франции были попытки «десятиризации» времени: день (вернее, сутки – «день, ночь – сутки прочь!») был поделен на 10 часов, которые, в свою очередь, состояли из 100 минут каждый. В году, правда, оставили 12 месяцев, но радикально их «перекрестили»: vendémiaire, breemaire, frimaire (осень), nivôse, pluviôse, ventôse (зима), gveminal, floréal, prairial (весна), messidor, thermidor, fructidor (лето).

Из этого списка в памяти всплывают только жерминаль, термидор и реомюр (хотя реомюр уже «из другой оперы»): «Жерминаль» – это еще и роман Золя, а термидор прославился своим переворотом и стал в политике символом чего-то вероломного. Со временем (точнее, с единицами измерения времени) история обходилась еще круче, чем с длиной и массой (весом). Если последние (длина и вес-масса) резко менялись географически (от места к месту, от страны к стране), но плавно во временном измерении, то с часом, например, в средние века делали, что хотели. День, например (вернее, свтовой день) длился, как и сейчас, от рассвета до заката и делился на 12 часов. Из-за этого «летний» час был намного длиннее «зимнего». У нас сейчас так на рынках меняется масса продавемого товара: утром покупателя обычно обвешивают, а к вечеру, когда нужно побыстрее распродать товар, ему могут тех же яблок дать несколько больше, чем то, что показано на весах и за что заплачено.