Совет 64. Работа с градусами Цельсия

   

Рис. 64. Работа с градусами Цельсия

В совете 16 давались рекомендации по работе с единицами измерения физических величин, отсутствующих в списке встроенных в Mathcad. Здесь нет ничего сложного: пользовательские единицы измерений привязываются к встроенным через соответствующие множители (MPa := 106 Pa и т.д.). Но это правило нельзя применить к температуре. Дело в том, что существует два понятия, относящиеся этой физической величине, – единица измерения температуры (градус Кельвина, или просто кельвин, градус Цельсия, градус Фаренгейта и т.д.) и шкала измерения температуры (шкала Кельвина, шкала Цельсия, шкала Фаренгейта и т.д.).

Шкала Цельсия (или Фаренгейта, если говорить о британской системе измерений) – внесистемная шкала, которая, тем не менее, широко используется для отображения значения температуры[1]. Однако в научно-технических расчетах, как правило, оперируют температурой, выраженной по абсолютной шкале Кельвина (или Ренкина в британской системе измерений). Формулы перевода температуры из одной шкалы в другую довольно просты (см. «Совет дня» №74), но в них не работает описанная в совете 16 технология ввода пользовательских единиц измерения.

На рис. 64 показано одно из решений этой проблемы на примере простой задачи – даны две температуры: необходимо найти разницу между ними. Понятно, что это не арифметическая, а скорее метрологическая задача: все величины здесь имеют размерность температуры, причем пользователь вправе вводить и выводить значение температур в любой из четырех единиц измерения и шкалах: градусы (шкалы) Кельвина, Ренкина, Цельсия и Фаренгейта. Если с градусами (шкалами) Кельвина и Ренкина проблем нет (они встроены в Mathcad: = 1.8 K), то в отношении градусов (шкал) Цельсия и Фаренгейта приходится идти на некоторые хитрости, составляющие суть совета.

В расчет вводятся восемь объектов с именами °C и °F:

·        две функции с именем °C (у первой °C(t) := (t+273.15) K стиль – Variables, а у второй °C(t) := (T/K-273.15)Units 1, причем шрифт имени второй функции окрашен в белый цвет: она невидима на экране дисплея[2])[3];

·        две константы с именем °C (у первой °C := 1 стиль – Units 2, а у второй °C := KUnits 3);

·        две функции с именем °F (у первой °F(t) := (t+459.67) R стиль – Variables, а у второй °F(T) := (T-459.67)Units 1, причем шрифт имени второй функции имеет белый к этой физической величине: она невидима на экране дисплея);

·        две константы с именем °F (у первой °F := 1 стиль – Units 2, а у второй °F := RUnits 3).

Имена у объектов совпадают, но это разные объекты, т.к. у них разные стили (Variably, User 1, User 2 и User 3).

При работе с температурой возникают три ситуации, правильно отреагировать на которые помогут вышеописанные функции и константы:

Ситуация 1. В расчет необходимо ввести значение температуры по шкале Цельсия (или Фаренгейта). Для этого первая функция °С (или °F) со стилем Variables вызывается в виде постфиксного оператора: t1 := 0 °C (или t2 := 212 °F). При этом переменной t1 (или t2) присваивается значение температуры по абсолютной шкале измерений.

Ситуация 2. Необходимо вывести значение температуры по шкале Цельсия (или Фаренгейта). Для этого в операторе «=» выводимую на печать переменную нужно сделать операндом префиксного оператора, имя (символ) которого °С (или °F) – вторая функция из определенных ранее: °F t1 = 32 (или °С t2 = 100). Если при этом имя функции сделать невидимым (см. совет 19), а к числовой константе в ответе припечатать первую константу пользователя °F (или °С), то иллюзия вывода значений абсолютной температуры по относительной шкале будет полная:  t1 = 50 °F и   t2 = 100 °С.

Ситуация 3. Необходимо вывести значение разности температур: t2t1, например, как на рис. 64. Здесь можно применить обычное правило Mathcad замены единицы измерения К (или R) на °С (или °F) – на вторую определенную нами константу.

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

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

Относительная шкала применяется, например, и в измерении длины. В старой России рост взрослого человека измерялся в вершках (вершок:=7/4 дюйма). Но когда говорили, что некий человек обладает ростом в 12 вершков, то имели в виду два аршина и 12 вершков (1 аршин=16 вершков). Дело в том, что рост взрослого человека, как правило, укладывался в диапазон от 2 до 3 вершков (от 142 до 213 см). Поэтому два аршина обычно опускали, пользуясь относительной (относительно двух аршин) шкалой измерения длины (эта задача более подробно описана в этюде «Mathcad и некоторые тайны художественной литературы» – http://twt.mpei.ac.ru/ochkov/Gerasim/Gerasim.htm).

«Трюки» при работе с градусами Цельсия и Фаренгейта (пре- и постфиксный операторы, невидимый символ оператора) можно применить и для работы с децибелами (см. рис. 64a).

Рис. 64a. Работа с децибелами

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



[1] Шкала Цельсия не просто широко используется, в основном ее лишь и используется в «человеческой шкале измерения «холодно – тепло – горячо».

[2] Чтобы она была видима на экране дисплея, можно, например, поменять цвет фона с белого на голубой.

[3] Символ «°» (градус) вводится путем нажатия Alt+0176.