От таблицы к формуле

(добавление к главе 4 книги «Mathcad 12 для студентов и инженеров»)

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

Ниже будут приведены примеры создания, вернее, воссоздания[1] формул по табличным и графическим зависимостям в среде Mathcad.

Пример 1. Несколько параметров одного вещества

Рис. 1. Таблица свойств турбинного масла

На рис. 1 показана типичная таблица в виде матрицы с заполненными всеми элементами. Работа с такой таблицей сводится к указанию названия интересуемого параметра и температуры и считыванию значения искомого параметра. На рис. 2 показана  реализация этого алгоритма работы с данной матрицей в среде Mathcad.

Рис. 2. Mathcad-документ работы с полностью заполненной матрицей, хранящей табличную зависимость нескольких параметров от другого параметра

Таблица данных, показанная на рис. 1, в Mathcad-документе, показанном на рис. 2, присваивается в виде матрицы переменной D. Первый столбец матрицы – это дискретные значения температуры, пересылаемые в переменную Х (Х:=D<0>), а последующие, i-ые cтолбцы – это дискретные значения i-го параметра турбинного масла при данной температуре: Y: = D<i>. Значение переменной i (номер рассчитываемого параметра турбинного масла) задается постановкой «галочки» у одного из семи переключателей («флажков»), связанных с скрытыми переменными ch1-ch7. Здесь более «технологичными» были бы радиокнопки, а не группа переключателей, т.к. в радиокнопках можно выбрать только одну позицию из нескольких. Кроме того, радиокнопки не требуют написание программы с цепочкой «номерных» переменных ch1-ch7, связанных оператором and (^). Но группа переключателей в данном контексте имеет свои преимущества. Вот они:

  1. Группа переключателей позволяет осуществлять так называемую технологию «нулевого выбора», когда при открытии расчетного документа ни одна из позиций не выбрана. В радиокнопках одна из «кнопок» всегда должна быть нажата, что при большом количестве групп радиокнопок может привести к «ошибке выбора умолчания» – пользователь может оставить нажатой «начальную» кнопку, а не нужную в данном сеансе расчета. Кстати, при открытом нашем документе (рис. 2) в Сети (рис. 3) или в среде Mathcad[2] текстовое поле t (температура по шкале Цельсия) остается также пустым, а переменной t присваивается нулевое значение, что будет признаком не полностью завершенного диалога пользователя с расчетным документом: расчет блокирует оператор I :if(0 < ≤ 120, i, «Error»). Для получения ответа в документе, показанном на рис. 3, пользователь должен ввести в текстовое поле с именем и переменной t значение температуры по шкале Цельсия в диапазоне 0 < t ≤ 120[3], «щелкнуть» по одному из семи переключателей и нажать кнопку Recalculate. Ответ будет выдан числом, точкой на графике и коэффициентами полинома степени n, которую можно менять в диапазоне от 1 до 11[4]. Если нужно посмотреть ответ по другому параметру, то галочку нужно убрать («отжать») и проставить ее на другом переключателе. В случае радиокнопок это отжатие старой («отработавшей») клавиши велось бы автоматически.

Рис. 3. Расчет параметров турбинного масла в Интернете – начальный момент расчета (mas)

  1. Переключатели, входящие в группу можно размещать в расчете произвольно, а не только горизонтально, меняя расстояние между ними так, чтобы умещались комментарии с верхними и нижними индексами.
  2. Переключатели в группе в отличие от радиокнопок позволяют выбрать несколько параметров и дают возможность осуществлять сравнение разных параметров одного вещества – турбинных масел – см. рис. 4.

Рис. 4. Группы переключателей, собранных в матрицу: сравнение параметров разных турбинных масел (mas)

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

Пример. 2. Один параметр многих веществ

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

Рис. 5. Данные по температурам плавления различных веществ в зависимости от давления

На рис. 6 показан Mathcad-документ, автоматизирующий вычисления по таблице рис. 5.

Рис. 6. Mathcad-документ расчета температуры плавления индивидуальных веществ

Выбор вещества на рис. 6 ведется через сетевой элемент управления List (список), где переменной Com присваивается текстовое значение – название выбранного вещества. Альтернативный способ работы со списком – это когда он возвращает не текст (название вещества), а число – порядковый номер вещества в списке – см. рис. 7. Этот способ удобен тем, что можно произвольно менять название в списках – добавлять туда, например английские или латинские названия веществ, а также их химическое обозначение без необходимости менять эти названия в операторах if Com = “…”. Кроме того, числа не искажаются при передаче в Сети, что нельзя сказать о некоторых спецсимволах, которые могут оказаться в текстовых константах (символ градуса Цельсия, например). Привязка же к именам, а не к номерам более удобна при редактировании программы, стоящей за оператором М :=

Рис. 7. Два режима работы со списком, возвращающим либо название выбранной позиции, либо ее номер

Исходные данные в программе, показанной на рис. 6, хранятся не в матрице (см. рис. 2), а в отдельных вложенных массивах (Nested Array) – в матрицах-строках с двумя элементами, первый из которых – скаляр[5], а второй – матрица с двумя строками и с переменным числом столбцов, равным числу дискретных точек обрабатываемой зависимости температуры плавления от давления.

Выбор нужной позиции осуществляется не за счет задания номера переменной (переменной i, если говорить о рис. 2), а (рис. 6) цепочкой операторов if. Второе отличие технологий работы, показанных на рис. 2 и рис. 6. На рис. 2 мы задействовали аппроксимацию (регрессию) полиномом n-ой степени[6], а на рис. 2 – линейную интерполяцию (при двух точках) или интерполяцию сплайном (при трех точках и более).

Рис. 8. WebSheet расчета температуры плавления индивидуальных веществ (mas)

Пример 3. Функция двух параметров одного вещества

Исходными данными тут будут не числа таблицы, а линии графиков.

Точки на этих линиях можно оцифровать и вручную, но лучше воспользоваться специальными программами, работа одной их которых[7] оказана на рис. 9.

Рис. 9. Оцифровка графика

Для оцифровки графика его сначала нужно отсканировать и сохранить данный графический файл в bmp-формате, а потом открыть график с помощью программы, показанной на рис. 9. Далее необходимо установить на график две контрольные точки – щелкнуть мышью по двум точкам с известными координатами и занести эти координаты в специальные появляющиеся диалоговые окна. После этого щелчок мышью по любой точке графика будет отображать эту точку в окнах «Координаты X и Y». Эти координаты нужно копировать и переносить в Mathcad-документ (см. рис. 10) для дальнейшей статистической обработки.

Рис. 10. Двойная сплайн-интерполяция для получения функции двух аргументов (mas)

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



[1] Нередко таблицы строились по формулам, которые затем были утеряны.

[2] В этом случае Mathcad-документ нужно защитить через команду Tools/Protect, предварительно сняв защиту с сетевых элементов управления.

[3] Наши точки для интерполяции расположены в интервале от 10º С до 120º С. В интервале от 0º С до 10º С будет вестись не интерполяция, а экстраполяция, что подчеркивается пунктирной , а не сплошной линией, показанной на рис. 2.

[4] При n:= 11 линия проводится строго по точкам – аппроксимация переходит в интерполяцию.

[5] Если этой величины нет, то вместо нее ставится системная переменная NaN (Not a Number).

[6] Для вязкости масла, например, (рис. 2) подходит не полином n-ой степени, а, например, выражение a + b·ecx, а для плоскости – линейная зависимость a + bx (полином при n = 1).

[7] Ее можно скачать из Сети по адресу… Автор программы В.Писков.