Решение инженерно-технических задач в среде Mathcad
Математический пакет Mathcad [23, 42, 44] позволяет специалистам в конкретной научно-технической области быстро освоить работу на компьютере и реализовать на них математические модели, не вдаваясь в тонкости программирования. Mathcad – это зарегистрированная торговая марка фирмы MathSoft, Inc. (http //www.mathsoft.com), представляющая собой сокращение английской фразы Mathematical Computer Aided Design – математическое проектирование с помощью компьютера.
Ниже приведены три примера решения типовых задач теплоэнергетики [68], которые дают представления об особенностях работы в среде Mathcad.
Задача 1. Расчет термодинамических свойств воды и водяного пара. Ниже представлено формирование функции пользователя vw(p), предназначенной для определения удельного объема кипящей воды на линии насыщения (vw) от давления (p), и функции hss(T, p), предназначенной для определения удельной энтальпии перегретого пара (hss) от температуры (T) и давления (p).
Расчет удельного объема кипящей воды на линии насыщения сводится к интерполяции (здесь задействована встроенная Mathcad-функция interp) кубическими сплайнами (cspline) табличных данных, хранящихся в двух векторах P – табличные значения давления и V – табличные значения удельного объема. Элементы векторов – величины размерные давление измеряется в мегапаскалях (106Pa), а удельный объем – в литрах на килограмм (m3/1000kg). В векторах P и V (они транспонируются из векторов-строк в вектора-столбцы) показаны только крайние элементы (далее будут показаны экраны дисплея, отображающие работу в среде Mathcad)
Интерполяция сплайном для определения удельного объема кипящей воды ведется в диапазоне давлений от 611 Па до 22,088 МПа. Функция error отслеживает значение аргумента p, прерывает выполнение вычислительной процедуры и выдает пользовательское сообщение об ошибке (“Давление низкое” или “Давление высокое”), если значение аргумента не попадает в оговоренный диапазон (эту работу выполняет оператор if).
Созданную функцию с одним аргументом можно вызвать в традиционном виде (функция), а также в виде префиксного и постфиксного операторов.
При этом в расчетах возможны различные размерности давления, объема и массы (здесь kgf – килограмм силы, galUK – британский галлон, lb – фунт и lbf – фунт силы и ft – фут). Далее представлено решение обратной задачи через встроенную Mathcad-функцию root (поиск корня уравнения) – определение давления при заданном значении удельного объема кипящей воды.
Расчет удельной энтальпии перегретого пара ведется также через кубический сплайн, но уже двухмерной интерполяцией. Табличные значения энтропии (килоджоули на килограмм) заносятся в матрицу M, «боковик» которой (без первого элемента) значения температуры (градусы Цельсия), а «шапка» – давления (мегапаскали). Далее эти значения с помощью встроенной функции submatrix разносятся по матрицам TP (у нее два столбца и 18 строк) и M (квадратная матрица с порядком 18). Так достигается компромисс между требованиями наглядного представления табличных данных и спецификой двумерной сплан-интерполяции в среде Mathcad.
К пользовательским сообщениям об ошибках ввода неверных значений аргументов (температура и давление пара) добавлено новое – “Ошибка измените p и/или T”. Ошибка возникает в том случае, если рассчитанное значение энтальпии окажется меньше наименьшего табличного значения (1930,8 кДж/кг), что может случиться на границах матрицы H, где вместо отсутствующих термодинамических табличных данных записано -1.
Пользовательскую функцию hss(T, p) с двумя аргументами можно вызывать в традиционной форме (функция), а также инфиксным и древовидным оператором.
Аналогичным образом построены и другие функции термодинамических свойств воды и водяного пара удельная энтальпия кипящей воды на линии насыщения hw(p), удельная энтальпия сухого пара на линии насыщения hs(p), удельная энтропия кипящей воды на линии насыщения sw(p), удельная энтропия сухого пара на линии насыщения ss(p), удельная энтропия перегретого пара sss(T, p) и др. Соответствующий самораскрывающийся архивный файл с именем WaterSteamPro.exe хранится на FTP-cервере по Internet-адресу http //twt.mpei.ac.ru/orlov/watersteampro/. Этот файл можно по сети Internet скопировать на компьютер конкретного пользователя, разархивировать файл и задействовать его в термодинамических расчетах, что и будет сделано при решении второй задачи.
Особенности Mathcad, проиллюстрированные примерами
1. Интерфейс пользователя в среде Mathcad опирается на операторы ввода и операторы вывода значений переменных и выражений.
В среде Mathcad три оператора ввода
A ¬ ■ – ввод значения локальной переменной, область видимости которой ограничена местом ввода переменной и концом вычислительной процедуры, отмеченной вертикальной чертой, фиксирующей начало и конец программного блока (см. выше программу формирования функции vw(p));
A = ■ – ввод значения полуглобальной переменной, область видимости которой – это часть Mathcad-документа, расположенная правее и ниже места ввода переменной;
A є ■ – ввод значения глобальной переменной, область видимости – весь Mathcad-документ.
Кроме того, в Mathcad-документе возможны ссылки на другой Mathcad-документ (на соответствующий Mathcad-файл на диске – файл с расширением mcd), переменные и пользовательские функции которого, становятся видимыми в текущем Mathcad-документе.
В среде Mathcad два оператора вывода
A = ■ ■ – вывод численного значения переменной или выражения на месте первого операнда появляется числовая константа, а на месте второго ѕ соответствующая размерность (см. табл. 5.17), если константа размерная; пользователь вправе менять размерность по умолчанию на любую другую, определенную к данному моменту;
A ® ■ – вывод символьного значения переменной или выражения.
Переменные в среде Mathcad могут хранить скалярное, векторное и матричное значения.
Скаляром, а также элементом вектора (V) и матрицы (M) может быть число (целое, вещественное или комплексное – см. элементы вышеприведенного вектора V), текст, а также новый вектор или матрицу (механизм составных массивов). Булевы значения «True» (Истина) и «False» (Ложь) в среде Mathcad имеют значения 1 и 0, соответственно. Рассчитанные значения могут быть выведены в десятеричном (умолчание), двоичном, восьмеричном или шестнадцатеричном формате.
Переменные в среде Mathcad подразделяются на пользовательские и встроенные (предопределенные ѕ табл. 5.16).
Таблица 5.16. Встроенные переменные Mathcad
Имя встроенной переменной и ее значение по умолчанию
Описание переменной
p = 3.14159 …
Число p. В численных расчетах Mathcad использует значение p с учетом 15 значащих цифр. В символьных вычислениях p сохраняет свое точное значение
e = 2.71828 …
Основание натуральных логарифмов. В численных расчетах Mathcad использует значение e с учетом 15 значащих цифр. В символьных вычислениях e сохраняет свое точное значение
Ґ
Бесконечность. В численных расчетах это заданное большое число (10307). В символьных вычислениях – бесконечность
% = 0.01
Процент. Используется его в выражениях, подобных 10 Ч % или как масштабирующий множитель в поле, отводимом для единиц размерности
TOL = 10-3
Допускаемая погрешность для различных алгоритмов аппроксимации (интегрирования, решения уравнений, поиска минимумов и максимумов и т.д.)
СTOL = 10-3
Допускаемая погрешность для равенств и неравенств, входящих в решение оптимизационных задач с ограничениями
ORIGIN = 0
Определяет индекс первого элемента векторов и матриц
PRNCOLWIDTH = 8
Ширина столбца, используемая при записи файлов функцией WRITEPRN
PRNPRECISION = 4
Число значащих цифр, используемых при записи файлов функцией WRITEPRN
FRAME = 0
Используется в качестве счетчика кадров при создании анимационных клипов
inn=0, outn=0
Переменные ввода и вывода в Mathcad-компонентах в среде MathConnex (инструмент, входящий в состав Mathcad и позволяющий интегрировать Mathcad, MatLab и Excel, а также реализовывать динамические модели)
CWD
Текстовая переменная, хранящая адрес текущего документа на диске
Имена переменных в среде Mathcad могут содержать пробелы, буквы латиницы, кириллицы и (чего нет в традиционных языках программирования) греческого алфавита. Кроме того, в именах переменных допустимы нижние индексы и штрихи. Все это позволяет делать Mathcad-документ максимально «читабельным» – давать переменным и функциям те имена, которые закрепились за ними в процессе формирования той или иной научной дисциплины задолго до появления компьютеров.
2. В работе с Mathcad есть особенность, позволяющая называть Mathcad не просто математическим, а физико-математическим пакетом. Часто решая физическую задачу, пользователь делает ошибки не в формулах и не в счете, а в размерностях физических величин. Пакет Mathcad поддерживает основные системы физических величин (СИ, килограмм-метр-секунда, грамм-сантиметр-секунда и британскую систему единиц) и ведет контроль за соответствием размерностей (табл. 5.17).
Для присваивания величине размерности за числовой константой ставится знак умножения (но его можно и не ставить) и вводится название соответствующей размерности. – L = 5 Ч m (или L = 5 m, что более соответствует общепринятой норме записи размерностей).
Таблица 5.3.2. Список единиц измерения физических величин, встроенных в Mathcad
Физическая величина
Единица
Активность (activity)
Bq (беккерель)
Время (time)
day (день), hr (час), min (минута), s (секунда, sec и yr (год)
Вязкость динамическая (dynamic viscosity)
poise (пуаз)
Вязкость кинематическая (dynamic 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 (лошадиная сила) или 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 (британская тепловая единица), cal (калория), erg (эрг), J (джоуль), joule (джоуль) и kcal (килокалория)
Для ввода размерностей предусмотрено диалоговое окно «Ввод размерности» («Insert Unit»), определяющее физическую величину (Dimension), размерность (Unit) и систему единиц (System).
3. В пакет Mathcad интегрирован мощный математический аппарат, позволяющий численно и аналитически решать разнообразные задачи. Перечень групп встроенных функций Mathcad приведен ниже
функции Бесселя (Bessel);
функции комплексных чисел (Complex Numbers);
функции решения дифференциальных уравнений и систем (задача Коши, краевая задача, уравнения в частных производных – Differential Equation Solving);
функции типа выражения (Expression Type);
функции работы с файлами (File Access);
функции преобразований Фурье (Fourier Transform);
гиперболические функции (Hyperbolic);
функции обработки образов (Image Processing);
функции интерполяции и экстраполяции (Interpolation and Prediction);
логарифмические и экспоненциальные функции (Log and Exponential);
функции теории чисел и комбинаторики (Numbers Theory/Combinatorics);
функции ступенек и условия (Piecewise Continuous);
функции плотности вероятности (Probably Density);
функции распределения вероятности (Probably Distribution);
функции случайных чисел (Random Numbers);
функции регрессии и сглаживания (Regression and Smoothing);
функции обработки сигналов (Signal Processing);
функции решения алгебраических уравнений и систем, а также решения оптимизационных задач (Solving);
функции сортировки (Sorting);
специальные функции (Special);
статистические функции (Statistics);
текстовые функции (String);
тригонометрические функции (Trigonometric);
функции округления и работы с частью числа (Truncation and Round-Off);
функции работы с векторами и матрицами (Vector and Matrix);
функции волнового преобразования (Wavelet Transform).
Для функции предусмотрено диалоговое окно «Ввод функции» («Insert Function»), показывающее группы функций (Function Category), имя функции (Function Name), ее синтаксис и краткую аннотацию.
В систему Mathcad, кроме того, интегрированы средства символьной математики, что позволяет решать поставленные задачи (этап задачи) не только численно, но и аналитически ѕ см. третью задачу.
Кроме математических функций в Mathcad-документе можно работать с математическими операторами, которые вводятся через нажатие соответствующих кнопок панелей инструментов.
Одна из причин популярности Mathcad заключается в том, что пользователь вправе вставлять в документы либо функцию, либо оператор в зависимости от того, к чему он привык, изучая математику в школе или в институте. Благодаря этому Mathcad-документ максимально похож на лист с математическими выкладками, написанными от руки или созданными в среде какого-либо текстового процессора (MS Word, Scientific Word, ChiWriter и др.).
4. Математические выражения в среде Mathcad записываются в их общепринятой нотации числитель находится сверху, а знаменатель – внизу, в интеграле пределы интегрирования также расположены на своих привычных местах. Казалось бы, это все мелочи, никак не влияющие на вычислительный процесс. Но!.. Программа должна быть понятной не только для компьютера, но и для человека. Пользователь, анализируя Mathcad-документ на экране дисплея или на бумаге принтера, видит, что данная величина записана в числителе и ее рост приводит к возрастанию всего выражения. А это очень важно при анализе математических моделей, форма и содержание которых едины.
5. В среде Mathcad процесс создания программы идет параллельно с ее отладкой и оптимизацией. Пользователь, введя в Mathcad-документ новое выражение, может не только сразу подсчитать, чему оно равно при определенных значениях переменных и в выбранной системе размерностей, но и построить график или поверхность, беглый взгляд на которые может безошибочно показать, где кроется ошибка, если она была допущена при вводе формул или при создании самой математической модели. Отладочные фрагменты можно оставить в готовом документе для того, чтобы, например, еще раз убедить воображаемого или реального оппонента в правильности модели. Система Mathcad оборудована средствами анимации, что позволяет реализовать созданные модели не только в статике (числа, таблицы, графики), но и в динамике (анимационные клипы).
6. Пакет Mathcad дополнен справочником по основным математическим и физико-химическим формулам и константам, которые можно автоматически переносить в документ без опасения внести в них искажения, нередкие при ручной работе. К пакету Mathcad можно приобрести те или иные электронные учебники по различным дисциплинам решение обыкновенных дифференциальных уравнений, статистика, термодинамика, теория управления, сопротивление материалов и т.д. Прежде чем решать возникшую проблему, пользователь может изучить электронный учебник и перенести из него в свой документ нужные фрагменты, отдельные формулы и константы.
7. Не выходя из среды Mathcad, возможно открывать новые документы на других серверах и пользоваться теми преимуществами информационных технологий, предоставляемых Internet. Ниже приведено диалоговое окно, открываемое из среды Mathcad, с помощью которого пользователи Mathcad могут обмениваться информацией и вести совместные проекты по таким разделам математика и статистика, астрономия и навигация, электроэнергетика, физика, химия и химическая промышленность и т.д.
Пользователи пакета Mathcad (или пакета Mathcad Explorer ѕ свободно распространяемой в Internet укороченной версии Mathcad) могут послать на сервер свое сообщение (кнопка Post…) или вступить в дискуссию (Post Reply…) по интересующему его вопросу.
Задача 2. Расчет параметров цикла Ренкина. Ниже представлен расчет в среде Mathcad термического КПД простейшего цикла Ренкина1[1]
Расчет предваряется заданием (п. 1) пользовательских размерностей физических величин (МПа, бар, мм рт ст, м, кг, кДж и ат), которые связываются со встроенными в Mathcad – Pa, torr, m, kg, J, kgf и cm (см. табл. 5.17).
Расчет КПД цикла ведется двумя способами
в режиме суперкалькулятора (п.п. 2 и 3 ѕ см. выше);
в режиме программного формирования функции пользователя, возвращающей кпд цикла (п. 4 ѕ см. ниже).
Режим суперкалькулятора удобен при отладке расчета (при поиске в нем ошибок) и при подготовке его протокола к проверке (например, к оппонированию рецензентом). Значение введенной переменной или переменной, рассчитанной по заданной пользователем формуле, там же выводится на экран дисплея и/или бумагу принтера с выбранной пользователем размерностью и точностью.
Функции, возвращающие термодинамические параметры воды и водяного пара, вводятся в расчет ссылкой (Reference – см. начало п. 3) на соответствующий Mathcad-документ (см. выше задачу 1). После ссылки на документ, где задаются функции пользователя по свойствам воды и водяного пара) в рабочем документе становятся доступны (видимы) функции, возвращающие нужные термодинамические свойства. Далее расчет ведется по рутинным формулам, задающим основные параметры цикла степень сухости пара, выходящего из турбины (x2), удельную работу турбины (lT), удельную работу насоса (lн), теплоту, подводимую в цикле (qk), и, наконец, сам термический КПД цикла (hт).
В п.4 (см. ниже) программно формируется функция пользователя hт(p1 ,p2,T1), возвращающая значение КПД цикла Ренкина в зависимости от значений трех аргументов исходное (p1) и конечное (p2) давления в турбине и температура острого пара (T1). В функцию hт встроено пользовательское сообщение об ошибке (оператор error) при расчете подразумевается, что в конденсатор поступает влажный пар (допущение расчета)
При формировании функции h т все промежуточные значения оператором ■ ¬ ■ заносятся в локальные переменные, область видимости которых ограничена самой программой-функцией. Вертикальные линии отмечают начала и концы соответствующих операторных блоков.
Функция пользователя hт(p 1, p 2, T 1) позволяет средствами Mathcad построить табличные (п. 4.3) и графические (п. 4.4) зависимости, связывающие КПД цикла с его параметрами
Задача 3. Оптимизация ступенчатого испарения в барабанном котле. Ниже представлен протокол решения средствами символьной математики Mathcad задачи об оптимальном парораспределении в барабане котла со ступенчатым испарением. Рассматривается трехступенчатое испарение необходимо определить доли пара, генерируемые в первом (переменная x) и втором (y) отсеках, при которых концентрация примеси в паре, выходящем из котла, была бы минимальна.
Исходные данные расчета (см. п. 1) величина продувки из котла (переменная Пр), суммарные коэффициенты выноса примеси по отсекам (отношение концентрации примеси в паре к концентрации примеси в котловой воде – K p) и концентрация примеси в питательной воде (C в – формальный параметр, не влияющий на результат, но участвующий в промежуточных выкладках).
Ключевое место расчета – аналитическое формирование функции Cп(x, y), возвращающей концентрацию пара в зависимости от парораспределения в отсеках
Формируется функция Cп(x, y) с помощью оператора символьных преобразований ■ ■ ®, где первый операнд – это преобразуемое выражение, а второй – ключевое слово (или вертикальная цепочка ключевых слов), задающее направление преобразования (решение уравнения или системы как в задаче 3, упрощение выражения, раскрытие скобок, факторизация и т.д.). Данные операторы вводятся через нажатие соответствующих кнопок панели символьных преобразований.
В задаче 3 в п. 2 аналитически решаются относительно отмеченной переменной (параметр ключевого слова solve) составленные пользователем уравнения материального баланса примеси по отсекам поступающая в отсек примесь (произведение концентрации на расход воды) частично уносится с паром, остальная часть продувается в соседний отсек. Возможное отложение примеси на внутренних поверхностях котла, равно как и вымывание примеси с поверхностей котла, в расчете не учитывается. Решения упрощаются (simplify) без вывода промежуточного результата и вручную (с некоторой модификацией) переносятся пользователем в оператор задания функции Св1(x) = ■. Так формируются три функции с именами Свi, где i – номер отсека. После этого по уравнению материального баланса составляется целевая функция Cп(x, y).
Поиск минимума функции Cп(x, y) предваряется ее графическим анализом (п. 3)
График линий уровня показывает, что при x ~ 0.9 и y ~ 0.1 находится минимум, который уточняется (п. 4.1) через аналитическое решение системы двух алгебраических уравнений, составленных из частных производных функции Cп(x, y) и приравненных к нулю. Система Mathcad выдала восемь решений – координаты точек, где обе частные производные функции Cп(x, y) равны нулю (это могут быть минимумы, максимумы, седла). Один из корней системы (x = 0.891, y= 0.0912) – решение оптимизационной задачи.