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