Формируя пользовательскую интерполирующую функцию, необходимо
Формируя пользовательскую интерполирующую функцию, необходимо сразу освободиться от размерностей аргументов, приведя их к безразмерной величине относительно данных в боковике (у нас это температура) и шапке (давление) таблицы узловых (опорных) точек. Размерность функции, соответствующая данным в таблице, приписывается к возвращаемой величине в конце формируемой функции.
Все это позволяет иметь в качестве аргументов функции величины с любой допустимой размерностью температуры и давления и получать удельную энтальпию также с различной размерностью (см. рис. 4.10).
Интерполяция, как правило, ведется в оговоренном диапазоне значений аргументов. Поэтому будет целесообразно вставить в функцию пользовательские сообщения об ошибке – о выходе за пределы разумных значений аргументов[13]. Для этого предназначена встроенная в Mathcad функция error(“Сообщение об ошибке”), прерывающая выполнение вычислительной процедуры и своим комментарием призывающая пользователя исправить оплошность. Если пользователь «подсунет» функции hss(T, P), к примеру, не температуру и давление, а массу и длину, то заработает уже встроенное сообщение об ошибке “The units in the expression do not match” (Единицы в выражении не соответствуют правилам – см. рис. 4.11):
Методика двухмерной сплайн-интерполяции, реализованная в Mathcad, требует, чтобы табличные значения двух аргументов хранилась в матрице с двумя столбцами, а табличные значения функции – в квадратной матрице. Для лучшего обзора и редактирования табличные данные можно временно объединить в одной квадратной матрице (у нас ее имя M, а размер (порядок) 19 на 19 – см. рис. 4.10), где первый столбец без первого элемента – это табличные значения температуры (первый аргумент формируемой функции), а первая строка без первого элемента – табличные значения давления (второй аргумент). Последующие манипуляции функцией submatrix раскладывают все «по полкам» – матрица TP с двумя столбцами и с 18 строками хранит табличные значения аргументов, а квадратная матрица H с порядком 18 – табличные значения удельной энтальпии. Так можно добиться компромисса между требованиями Mathcad и требованиями наглядного размещения данных.
Для лучшего обзора исходных данных и для разделения их на функциональные группы в исходной матрице можно записывать числовые константы (элементы матрицы) с различным видом и размером шрифта – см. рис. 4.10 (непронумерованный совет).
Никогда не стоит опираться на конкретное значение системной переменной ORIGIN (номер первой строки и первого столбца матриц) и на конкретный размер матриц. В функции hss(T, P) записан оператор «вырезания куска» из матрицы M – вектора табличных значений температур:
TP<ORIGIN>¬submatrix(M, ORIGIN + 1, rows(M) - 1, ORIGIN + 1, cols(M) - 1),
а не
TP<0>¬submatrix(M, 1, 18, 1, 18)
Два эти выражения эквивалентны только при ORIGIN=0 (умолчание Mathcad) и при порядке матрицы M, равном 19. При других значениях переменной ORIGIN и при других размерах матрицы M второе выражение при вызове функции hss даст сбой.
Очень часто табличные данные, отображающие значения какой-либо физической величины (удельной энтальпии водяного пара, как в нашем случае), не укладываются в отведенные им в среде Mathcad сугубо квадратные рамки. На место отсутствующих данных (левый нижний и правый верхний угол нашей квадратной матрицы) можно записать что-то, резко отличающееся от «настоящих» данных. У нас это минус единица. Возврат значения функции нужно предварить оператором error (см. предпоследнюю строку на рис. 4.10), прерывающим расчет, если возвращаемое значение «не лезет ни в какие ворота» в смысле порядка величины. В нашем случае с функцией hss(T, P) значение энтальпии не может быть меньше, чем 1930.8 кДж/кг – наименьшее «разумное» значения матрицы энтальпий. Если так получилось, то это означает, что при интерполяции «захвачена» минус единица и решение неверно.
При подготовке Mathcad-документа к публикации стоит переместить копию экрана дисплея (клавиша PrtSc) в среду какого-либо графического редактора (Paintbrush, например) и там его доработать. Основные направления доработки, которыми автор воспользовался, готовя иллюстрации к этой книге:
- вертикальная линия, отмечающая начало и конец процедуры формирования функции пользователя hss(T, P) на рис. 4.10, изогнута, что позволило сделать листинг более компактным;
- для этой же цели были убраны столбцы, хранящие энтальпию пара при 8, 10, 12, 15, 20 и 22 МПа;
- в среде графического редактора в Mathcad-документ можно внести то, что в среде Mathcad не внесешь, например, вертикальный комментарий на месте стертых столбцов и другие пометки – см. рисунки книги;
- копируя экран дисплея, можно захватить информацию, которая при простой распечатке Mathcad-документа (команда Print в меню File) пропадает. Это, во-первых, встроенные и пользовательские сообщения об ошибках – см. рис. 4.11. Можно из разных копий экрана дисплея, фиксирующих различные моменты диалога пользователя с компьютером, собрать один: на рис. 4.11 выведены все три сообщения об ошибках, хотя на экране дисплея одновременно можно видеть лишь одну – ту, которая выпадает из «покрасневшей от ошибки» функции, когда пользователь наводит на нее курсор мыши.
На рис. 4.12 проиллюстрирован вызов функции hss(T, P) при различных значениях и различных размерностях аргументов. Размерность возвращаемой функцией удельной энтальпии пользователь также вправе менять.