Инструкция разработчику on-line расчетных методик для Интернет в среде Mathcad

Содержание:

  стр.
1. Mathcad и MAS – что это такое?! (вместо предисловия) 1
2. Подготовка Mathcad-документа к работе на Mathcad Application Server 8
   WebControls 9
   О комментариях 21
   О вставках других программ 23
   Об именах переменных и функций 24
   Проблема объемных исходных данных (Suggested solution for a large volume input data) 25
   Задачи на MAS для сферы образования 27
   Доступ к расчетам через пароль 29
   Итак, что нужно сделать, чтобы Ваш Mathcad-документ стал доступен в сети 30
3. О кнопке Submit из набора WebControls пакета Mathcad 30
Приложения 34
Содержание MAS МЭИ на март 2004 г. 34
ИНФОРМАЦИОННОЕ ПИСЬМО № ИП-10-2004 (ТП) 37
Литература 39
Предложения по исправлению и доработке MAS 39
   

1. Mathcad и MAS – что это такое?! (вместо предисловия)

Очень часто посетители разного рода компьютерных форумов (рис. 1.1) задают вопросы, касающиеся выбора программ для расчетов, просят дать сравнение математических пакетов и отметить их сильные и слабые стороны. Такие вопросы инициируют всплески дискуссий, где спорящие быстро забывают о спросившем и о его «расчетных» потребностях и начинают бурно обсуждать качественные и количественные характеристики пакетов, которые у всех на слуху: Mathcad, MatLab, Mathematica, Maple и др. (рис. 1.1).

Рис. 1.1. Форумы сайта www.exponenta.ru

Своеобразная попытка «количественного» сравнения этих пакетов была предпринята, например, на сайте пользователей MatLab (www.matlab.ru). Там велся онлайновый опрос посетителей – спрашивалось, какой пакет они используют для расчетов.

Естественно, полоска, визуализирующая процент приверженцев того или иного пакета, у слова «MatLab» всегда была самая длинная – ведь на этот форум в основном и заходят пользователи MatLab. Остальные либо заблудились, либо зашли на «чужой» форум из любопытства – что, мол, там обсуждают – такие же проблемы, с какими я сам сталкиваюсь в своем пакете, или что-то другое… Но все прекрасно понимают, что это никакой не опрос, а чистой воды пиаровская акция, а в это, увы, превращаются почти все опросы. С таким же успехом можно судить о доходах и потребительских предпочтениях россиян по результатам опроса москвичей у входа в дорогой супермаркет. Упоминаем же мы об этом опросе лишь потому, что там опять фигурировали «Mathcad, MatLab, Mathematica, Maple и др.» – «великолепная четверка» компьютерной математики.

Но в ряду перечисленных на рис. 1.1 программ нет самой востребованной программы расчетов на персональных компьютерах – электронных таблиц. А ведь, более 90% всех компьютерных расчетов проводятся в среде этого неотъемлемого компонента электронного инженерного офиса. Мы пока не будем говорить о степени сложности решаемых задач, об их особой специфике. Но даже если в нашей статистике учитывать некий коэффициент сложности задач (Excel – 1, Mathcad – 2… Mathematica – 10, к примеру, и т.д.), то все равно Excel «забьет» все остальное. Даже без учета бухгалтерских расчетов. Mathcad же займет в этом рейтинге «почетное» второе место. С количеством «разобрались». А теперь поговорим о качественной стороне вопроса.

Можно утверждать, что беда пакета Mathcad (беда в том смысле, что его все время пытаются сравнить с пакетами MatLab, Maple, Mathematica, а самих пользователей Mathcad непрерывно уговаривают перейти на более «серьезные» пакеты) в… его названии – в этом самом «Math», вернее только в «Ma». Пакет Mathcad (и на этом настаивают его разработчики) нужно сравнивать не с пакетами MatLab, Maple, Mathematica, а с электронными таблицами. Mathcad создавался как программное средство, альтернативное электронным таблицам. И не электронным таблицам современным, а тем, какие были на момент создания первых версий Mathcad. Хотя органические недостатки электронных таблиц, которые попытались обойти (нивелировать) разработчики Mathcad, так и остались в последних версиях Excel. Обрисуем их вкратце.

Электронные таблицы подкупают своей простотой, и это одна из причин их высокой популярности: берем содержимое двух ячеек (щелкнем по ним курсором мыши), сложим их, а ответ (сумму) поместим вот тут! На клавиатуре при этом нажимается всего лишь пара клавиш – «равно» и «плюс» (рис. 1.2).

Рис. 1.2 Сложение двух чисел в электронной таблице Excel  Ячейкам A2 и  A3 можно дать имена a и b, например.
 Тогда формула в ячейке
A4 будет выглядеть
 так:  =
a + b. В среде Mathcad знак равенства
 переместился в конец формулы
a + b =. Кроме того,
 в ячейке
Excel видима либо формула, либо результат.
 В
Mathcad-документе можно видеть формулу
 и результат одновременно

Рис. 1.2. Сложение двух чисел в электронной таблице Excel

Но эта простота, как это часто случается, оказывается «хуже воровства»: в расчетах, созданных с помощью электронных таблиц, не сможет разобраться не только другой человек, желающий развить их или просто проверить правильность заложенных методик и формул, но зачастую и сам разработчик. Этот недостаток пытались исправить, интегрированием в электронные таблицы языков программирования (VBA для Excel, например) и других полезных инструментов. Но при этом получалось так, что «от чего ушли – к тому и пришли»: электронные таблицы, как, впрочем, и сам Mathcad создавались как прямая альтернатива языкам программирования – тому же языку BASIC, например. Но закрытость расчетов в электронных таблицах очень мешает их активному использованию (активному в смысле возможности изучения, проверки и модернизации) в первую очередь в сфере образования. А это основной потребитель математических пакетов. Бухгалтеру или инженеру, если он не создает свои собственные расчетные методики, достаточно ввести данные и считать ответ. Преподавателям же и студентам ответ, как правило, не очень и нужен – важно изучение пути к ответу. Написать одной строкой в текстовом режиме более-менее сложную формулу в ячейку Excel или строку VBA еще можно, но проанализировать ее, показать ее студентам для иллюстрации физического явления или технологического процесса, связанного с этой формулой, крайне трудно. В среде Maple, например, формула вводится тоже в текстовом режиме, но тут же переводится в вид, к которому человечество привыкло задолго до появления компьютеров (рис. 1.3).

 Пользователь в среде Maple вводит
 формулу одной строкой, пользуясь
 «текстовой» нотацией встроенных
 операторов и функций

Рис. 1.3. Ввод формулы в среде Maple

В среде Mathcad этап текстового ввода формул исключен – пользователь сразу набирает («набивает», как говорят студенты) и редактирует «многоэтажную» формулу со всеми привычными математическими символами (рис. 1.4).

 Букву n охватывает курсор, который можно
 двигать п о формуле и редактировать ее,
 оставаясь на этой «многоэтажной» конструкции.
 Зону охвата курсора  можно увеличивать,
 нажимая клавишу «пробел»

Рис. 1.4. Редактирование формулы в среде Mathcad

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

«Ахиллесова пята» пакета Mathcad в его названии, которое как бы авансом приписывает эту программу к «элитному клубу» математических пакетов. Вторая беда в том, что разработчики Mathcad, может быть, из-за желания отработать этот аванс все время «подтягивали» эту программу к математическим пакетам, встраивая в него все новые и новые математические инструменты. Многие из них оказались очень полезными и востребованными, а другие же только отягощали пакет. Так, например, в Mathcad 11 вставлены инструменты решения дифференциальных уравнений в частных производных (см. http://twt.mpei.ac.ru/mas/worksheets/pde_Temperature.mcd, например), хотя все понимают, что сколько-нибудь сложную задачу этими инструментами не решить. Можно только показать студентам, что это такое дифференциальное уравнение в частных производных и как можно подойти к его решению. Для сложных и реальных задач нужно брать другие пакеты или даже (и скорее всего) разрабатывать индивидуальные алгоритмы, что, кстати, можно прекрасно делать и в среде Mathcad. Вот и начинают сравнивать пакет Mathcad с Maple или MatLab, где эти инструменты более развиты. И сравнение это, конечно, не в пользу Mathcad. Ввключением в Mathcad специализированных, а не общематематических инструментов разработчики Mathcad как бы сами подставляют себя под огонь критики и толкают пакет на тупиковый путь развития – на путь, который уже давно прошли «настоящие» матпакеты. Бьет это и по традиционным пользователям Mathcad, которые не так сильны в математике, да и не чувствуют особой нужды в ней для решения своих рутинных задач. Новые сложные инструменты новых версий Mathcad часто только смущают таких пользователей, лишний раз как бы упрекая их в незнании каких-то специальных разделов математики. Да и накладно все это в финансовом плане – новые версии Mathcad с несущественными изменениями появляются чуть ли не каждый год.

Здесь представляется оптимальным не подключать к Mathcad все новые и новые специализированные инструменты (для решения ДУ в частных производных, например, – см. выше), а идти уже опробованным путем создания отдельных специализированных приложений, которые пользователи при необходимости могли бы приобретать отдельно. Перечень таких приложений можно найти на сайте http://www.mathcad.com/library/Electronic_Books.asp. Еще раз подчеркнем, что некоторые специфические функции Mathcad открывают некий «ящик Пандоры» и вынуждают этот пакет претендовать на то, что ему никогда не принадлежало. В реальной практике инженера сложных задач не так уж много (к счастью, а может, к сожалению). Но очень много рутинных небольших задач, связанных, например, с использованием различных норм и правил. Так, по Интернет-адресу http://twt.mpei.ac.ru/mas/worksheets/Izol_Trub_Teploset.mcd хранится Mathcad-документ по расчету толщины теплоизоляции труб согласно СНиП («Строительные нормы и правила» – см. http://docinfo.ru/docs.html, например). И таких примеров множество. Особо сложной математики в них нет из-за того, что они ориентированы на ручные расчеты. С ними часто мучаютсясчитают каждый раз заново, ошибаются… Mathcad хорош тем, что расчет, выполненный с его помощью, может читать человек, ничего не знающий об этом пакете.

У фирмы MathSoft Engineering & Education. Inc, – у разработчика Mathcad есть, кстати, программный продукт без особых «математических» претензий, но со всеми достоинствами популярной и востребованной программы для рутинных инженерных расчетов на компьютере. Это пакет StudyWorks (www.studyworksonline.com), который широко используется в старших классах школ США. Успех этого пакета объясняется и тем, что в него интегрированы электронные учебники по всем базовым школьным дисциплинам: математика, физика, химия, информатика и т.д. Возможности пакета во многом покрывают и программу высшей школы, по крайней мере, для тех вузов и специальностей, которым не нужна «особая» математика. Так, в меню Algebra (рис. 1.5; в среде Mathcad оно называется Symbolic) собраны необходимые команды символьной математики (решение уравнений, взятие производной, поиск первообразной и др.), но убраны специфические – интегральные преобразования, например. Ядро пакета небольшое, но при необходимости его можно «нарастить» электронными учебниками (см. рис. 1.5: курс математики находится на отдельном диске). Кроме того, пакет StudyWorks, как и Mathcad дополнен справочным материалом. Если этого не хватает для решения задачи (домашнего задания по математике, например), то есть on-line выход в Интернет (StudyWorksOn-line), включая и выход на специализированный форум (HomeworkHelp).

Рис. 1.5 Программа StudyWorks с открытыми электронными учебниками по школьным курсам биологии, науки о земле и океанографии, астрономии, химии, физики и другим предметам

Рис. 1.5. Программа StudyWorks с открытыми электронными учебниками по школьным курсам биологии, науки о земле и океанографии, астрономии, химии, физики и другим предметам

Сам же Mathcad, как отмечают многие пользователи и мы подчеркнули выше, очень перегружен, хотя до конца так и не «дорос» до «взрослых» математических программ. Если эту «перегрузку» снять – вынести, например, специализированные инструменты в обособленные пакеты (надстройки, электронные учебники), то и получится этот самый недорогой и неглючный StudyWorks, годный для ведения огромного количества рутинных научно-технических расчетов.

Судьба Mathcad довольно неопределенна и нестабильна. Вернее, скажем так – она очень волнует автора и многих других его коллег. Хорошо бы, если б этот пакет проглотила бы «всеядная» фирма Microsoft и сделала Mathcad, например, некой утилитой тех же электронных таблиц так, чтобы пользователь Excel мог в особом листе Excel-книги хранить сложные формулы, строить «научные» (а не «деловые») графики, работать с физическими величинами и т.д.

Другой сценарий: пакет Mathcad должен вернуться на рынок после существенной переработки и с новым названием – без ко многому обязывающей приставки «Math».

Третий сценарий. Разработчики Mathcad освободят основную массу пользователей от обязанности и потребности покупать сам пакет и регулярно обновлять его, а заодно обновлять (заменять) операционную систему и даже сам компьютер. Этот сценарий уже частично реализуется. Речь идет о так называемом Mathcad Application Server (см. www.mathcad.com/server, www.vpu.ru/mas), на котором проводятся расчеты разной степени сложности в режиме удаленного доступа. Связь же с этим сервером осуществляется через Internet: пользователь (клиент сервера) шлет на сервер свои данные и получает ответ. При этом у пользователя сохраняется полная иллюзия, что он открыл Mathcad-документ и работает с ним. Значительному количеству пользователей Mathcad нужен не для разработки собственных сложных алгоритмов, а для решения рутинных математических задач: построение графиков, решение уравнений и систем (алгебраических, дифференциальных), несложная статистика и т.д. и т.п. (см. раздел Разное в Приложении «Содержание MAS»). Такие задачи не должны требовать разработки собственных программ – они давно уже разработаны и основательно протестированы. Основная проблема тут – доступ к этим программам, что является основной целью MAS.

Некую нестабильность пакета Mathcad в его настоящем виде ощущают даже его разработчики. Они, конечно, в этом открыто не признаются и даже обидятся на утверждающих это. Но эта нестабильность чувствуется по косвенным признакам. Главный из них – уже отмеченное неоправданно частое обновление версий Mathcad и посылаемые вдогонку «заплатки».

Но основное преимущество Mathcad  (как, впрочем, и Excel) по сравнению с другими расчетными пакетами состоит в том, что Mathcad  не требует особой компьютерной и математической подготовки для решения задач средней сложности. Если с пакетом Mathcad долго не работать, то навыки работы с ним не забываются и при необходимости можно сразу приступить к решению возникшей расчетной задачи. «Конкуренты» же Mathcad, реальные и мнимые требуют непрерывного тренажа иначе восстановить навыки будет довольно трудно.

Итак. Пакет Mathcad оторвался от несовершенных и примитивных, но, тем не менее, (или «тем самым») очень популярных электронных таблиц и стал «дрейфовать» в сторону «элитных» математических программ, но так и не добрался до них. Продолжая «корабельные» аналогии, можно утверждать, что у Mathcad есть свой собственный «курс» и довольно многочисленные «пассажиры», которые не собираются пересаживаться на другие корабли. Смущает этих «пассажиров» (не всех, конечно) и пассажиров других судов (судов другого класса) только то, что на корабле вывешен флаг с буквами «Math».

Mathcad Application Server – это начало реализации третьего сценария.

2. Подготовка Mathcad-документа к работе на Mathcad Application Server

Как правило, Mathcad-документы имеют структуру, состоящую из трех частей – ввод исходных данных, расчет и вывод ответа, в предельно упрощенном виде показанных на рис. 2.1. Эти части нередко выделяют в три областиAreas, в которых возможны сепаратные действия – защита от редактирования (Lock-Unlock) и/или скрытие (Collapse-Expand).

Рис. 1. Структура простейшего Mathcad-документа

 Структура реального документа, как правило,
 не имеет четких границ между этими тремя областями.
 Если область расчета занимает несколько страниц,
 то при отладке ее «захлопывают» (команда
Collapse)
 для того, чтобы одновременно видеть исходные данные
 и результат. Можно разбить расчет на несколько
 областей и открывать их поочередно. При желании в
 области можно создать новую область и выстроить
 расчет по иерархии (недокументированный прием)

Рис. 2.1. Структура простейшего Mathcad-документа

 В документе, показанном на рис. 2.1, пользователь может изменить значения переменных а и/или b и считать результат – значение переменной с, равной сумме а и b. Пользователь может также усложнить и развить этот документ – ввести новые переменные и формулы, построить графики и т.д. и т.п. Но это будет уже не пользователь, а разработчик  ехнология MAS четко делит людей на эти две категории). Первый этап подготовки документа и публикации на MAS – это выделение операторов присваивания (не только операторы := или ≡  (глобальное присваивание), но и так называемые Controls, введенные в Mathcad 2001), через которые будущий Интернет-пользователь может менять исходные данные. Эти операторы присваивания должны быть заменены на так называемые WebControls – «сетевые элементы интерфейса» (рис. 2.2), с аналогами которых читатель уже давно знаком, вводя информацию по различным Интернет-запросам или запуская приложения, созданные с помощью Visual Basic или Visual С или просто форматируя текст в Word.

WebControls

WebControls есть не у любой версии Mathcad, а только у Mathcad 11.1 Enterprise Edition (и выше; у автора на компьютере стоит Mathcad 11.2а – с диска была установлена версия 11.0, а «заплатка» 2а была «скачана» с сайта  http://www.mathcad.com/download).

Рис. 2.2 Вызов диалогового окна вставки сетевых элементов интерфейса Mathcad

Рис. 2.2. Вызов диалогового окна вставки сетевых элементов интерфейса Mathcad

WebControls отличаются от своих несетевых аналогов (Controls – см. их список над словом WebControl в центре рис. 2.2, а также панель правее слова Go) главным образом тем, что для функционирования WebControls не надо писать или редактировать программы на языках, поддерживающих технологию Active Scripting (JScript и VBScript – см. рис. 2.15). Такие программы в сети нежелательны, т.к. через них в основном переносятся компьютерные вирусы. Из-за этого многие разработчики не вставляют в свои программы Controls, а по-прежнему используют только операторы := или ≡ . В среде Mathcad 2001i появилась возможность фиксации таких «скриптов» в открываемом документе, как это делается в среде Word или Excel. По этой причине можно рекомендовать вставлять WebControls не только в Mathcad-документы, подготавливаемые к открытию в сети, но и в обычные, несетевые. Следует только помнить, что Mathcad-документ с WebControls может работать только в среде Mathcad 11.2 Enterprise Edition – в самой последней (февраль 2004) и самой дорогой версии этого вычислительного пакета.

Документ, показанный на рис. 2.1, после подготовки и публикации на MAS должен выглядеть как на рис. 2.3.

  При открытии этого документа на MAS линии
  и комментарии, отмечающие границы областей,
  не будут видны. Но при необходимости их
  можно прописать комментарием – цепочкой
  тире, например, чтобы будущий пользователь
  расчетного документа, знал, что тут находится
  выделенная область. Целесообразно таким
  комментарием помечать скрытую область,
  где запрятан расчет

Рис. 2.3Простейший Mathcad-документ, подготовленный к публикации на MAS

Из рис. 2.3 видно, что операторы а:= и b:= (сравните с рис. 2.1) заменены на текстовые окошки (поля)Text box. Дополнительно вставлена кнопка Submit, переименованная в «Пересчитать». Но о ней мы расскажем позже – в главе 3.

Границы областей, маркированных нами как «Исходные данные», «Расчет» и «Вывод ответа», как уже отмечено, на MAS не будут видны. Можно «захлопнуть» область «Расчет» и оператор с:= a + b не будет виден. Это очень важно – разработчик может скрыть от пользователя часть Mathcad-документа, опубликованного в сети, предоставляя возможность только счета. А можно, наоборот, открыть и выделить цветом наиболее интересные и важные части расчета, например, для проверки как самой методики расчетов так и исходных данных. Кстати, о проверке. Если в нашем примере на рис. 2.1 и 2.3 переменные а и/или b могут принимать значения только в оговоренных интервалах (0 < a < 3, например), то будет полезно вставить в Mathcad-документ некий «КПП» (контрольно-пропускной пункт: a := if(0 < a < 3, a, “Ошибка!”), блокирующий дальнейшие вычисления, если пользователь ненароком или специально ввел неверные исходные данные. Здесь важно не только правильно записать формулы, но и защитить документ «от дурака». Такие же «кпп» хорошо установить  перед выводом ответа. Они должны блокировать вывод результата, если исходные данные дают несовместимое сочетание. Так по адресу http://twt.mpei.ac.ru/mas/worksheets/Calc_Q_VPU.mcd хранится программа расчета проектной производительности водоподготовки для электростанции, которая возвращает не число, а текст «Ошибка в данных!», если пользователь ввел ошибочное сочетание параметров проектируемой станции.

Название «Text box» не совсем правильное. Через этот элемент интерфейса можно вводить не только (и не столько) текстовые константы, но и числа – простые (как на рис. 2.3), так и комплексные (-5+3i, например). При этом приходится опираться на старую (DOS-овскую) запись формата чисел: не 103, а Е3 (е3) – см. рис. 2.4. Если введенная строка символов не «похожа» на число, то она воспринимается как текст. В несетевом аналоге текстового окошка любая цепочка символов воспринимается как текст, который нужно было конвертировать в число функцией num2str (см. рис. 2.15, например) из группы встроенных функции «String».

 В первых трех случаях введенная
 информация воспринимается как
 числовая константа (число –  простое
 или комплексное), а в четвертом – как
 текстовая константа (цепочка символов
 в кавычках)

Рис. 2.4. Ввод констант через текстовые окошки

Автором совместно с Томом Гудманом (Tom Gudmantom_gutman@compuserve.com) разработана методика ввода через текстовое окошко (так и хочется сказать «игольное ушко») массивов (векторов и матриц), а также функций пользователя, что отображено на рис. 2.5, 2.6 и 2.7.

Рис. 5 Ввод вектора через текстовое окошко  Первый оператор if в программе
 выбирает из введенной строки
 цифры 0…9 или (булевый оператор
 или
V) точку с минусом

Рис. 2.5. Ввод вектора через текстовое окошко

На рис. 2.5 показано, как цепочка символов, введенная  в текстовое окошко, преобразуется в вектор с помощью пользовательской функции Str2VMat. При этом разделителями чисел в текстовом окошке могут быть любые символы, отличающиеся от 0…9, точки (десятичный разделитель) и знака «минус». В нашем случае  разделителями чисел служат пробелы.

Матрицу можно ввести построчно или по столбцам, несколько усложнив метод, показанный на рис. 2.5, – вводя отдельные строки. Но если матрица квадратная и произвольного размера, то можно ввести ее в виде вектора размером n2, а затем «упаковать» в квадратную матрицу (рис. 2.6).

Рис. 6 Ввод квадратной матрицы через текстовое окошко   Таким же образом
  можно ввести и
  неквадратную матрицу,
  оговорив число строк
  и столбцов в ней

Рис. 2.6. Ввод квадратной матрицы через текстовое окошко

По адресу http://twt.mpei.ac.ru/mas/worksheets/lsolve.mcd можно открыть в Интернет решатель системы линейных алгебраических уравнений вида А·х = В, где массивы А (квадратная матрица коэффициентов при неизвестных) и В (вектор свободных членов) вводятся по технологии, показанной на рис. 2.5 и 2.6.

Частично решена и проблема ввода через текстовое окошко функции пользователя. Так, на рис. 2.7 показан «текстовый» ввод функции пользователя с одним аргументом, по которой строится график. Сам алгоритм перевода текста в формулу довольно громоздок (его можно скачать тут ), и на рис. 2.7 не показан – спрятан в захлопнутой области (пояснения по вводу функций через текстовое окошко). Этот же алгоритм может быть использован и для ввода значения переменной не константой (1.25, например), а арифметическим выражением (45/12+11), включающим и ранее введенные и встроенные переменные (PI/4*d^2, например). Если необходимо, чтобы у пользовательской функции аргументы были собраны в вектор, то прибегают к дополнительному оператору f(X):=f(X0,X1,...). Так, к примеру, реализован расчет глобального минимума по генетическому алгоритму – см. http://twt.mpei.ac.ru/MAS/Worksheets/Minimum.mcd.

Рис. 7 Ввод функции через текстовое окошко  Частичность этого решения
 в том, что к  данной функции
 нельзя применить символьную
 математику и использовать
 в ней переменные, заданные
 ранее, хотя список аргументов
 функции
y можно изменять и
 расширять
м. пример по адресу
 http://twt.mpei.ac.ru/mas/worksheets
/Fit_f_x_a_b_c.mcd
)

Рис. 2.7. Ввод функции через текстовое окошко

Пример работы с функцией, введенной через текстовое окошко http://twt.mpei.ac.ru/mas/worksheets/F_X_Y_Plot.mcd.

Очень полезной особенностью Mathcad является его работа с физическими величинами. На рис. 2.8 показано, как оператор Р:= 123·mm заменяется на текстовое окошко.

Рис. 8 Ввод размерной величины через текстовое окошко  Волнистая черта под буквой P указывает,
 что эта переменная определяется повторно.
 Но это не ошибка (а такие ошибки стал
 отмечать
Mathcad 11.1), а прием «досылки»
 в переменную единицы измерения

Рис. 2.8. Ввод размерной величины через текстовое окошко

 На рис. 2.8 через текстовое окошко в переменную Р вводится безразмерная величина, но при этом справа от текстового окошка стоит комментарий, указывающий, что переменная Р тут же станет размерной – Р:= Р·mm. Радиокнопки (или списки), о которых будет сказано чуть ниже, позволяют выбирать единицы измерения – см. рис. 2.9 и 2.10.

Рис. 2.9 Ввод размерной величины с выбором единицы измерения (область открыта)

 

 

 

 

Здесь показан аргумент у радиокнопок (UnitP).
 Но его можно и нужно скрыть, что сделано
 на рис. 2.10. Для этого вызывается
 соответствующая команда из меню
 «правой кнопки»

Рис. 2.9. Ввод размерной величины с выбором единицы измерения (область открыта)

Рис. 2.10. Ввод размерной величины с выбором единицы измерения (область захлопнута)  Переменную P можно вывести
 многократно с различными
 единицами длины

Рис. 2.10. Ввод размерной величины с выбором единицы измерения (область захлопнута)

Очень часто единицы измерения в расчетах фигурируют лишь как комментарии, а не множители, упрощающие и контролирующие сам расчет. Это связано с тем, что: 1) многие встроенные функции Mathcad не приспособлены к работе с размерными аргументами (см. статью по этому поводу – http://twt.mpei.ac.ru/ochkov/Unit_MC_MP/Unit_MC_MP.htm); 2) массивы (вектора и матрицы) Mathcad могут хранить только безразмерные величины или величины, одной физической величины – длина, давление и т.д. и 3) в расчетах фигурируют так называемые эмпирические формулы – формулы, где переменные связаны с конкретными единицами измерений, а не с физическими величинами. Если единица измерения (мг/л, например) фигурирует в расчете не как переменная, а как комментарий, то рекомендуется вставлять ее в расчет, как единичный коэффициент, завершающий оператор вывода числового значения –  мг/л: = 1  C=25 ■ ← мг/л. В этом случае единица измерения станет «плавающей» – будет перемещаться оставаться на нужном месте при изменении длины выводимого числа (см. пример http://twt.mpei.ac.ru/mas/worksheets/Comp_procent.mcd).

На рис. 2.11-2.14 показаны диалоговые окна формирования (и форматирования) сетевых элементов управления, перечисленных на рис. 2.2: Text box (текстовое окошко), Check box (галочка), List box/combo box (список), Radio button group (радиокнопки). О кнопке Submit разговор особый – см. раздел 3.

Если число вариантов ввода информации ограничено, то можно (нужно) ее вводить не через текстовое окошко (через клавиатуру), а через выбор из предложенного списка (мышкой). Мы это уже делали (см. рис. 2.10), прося пользователя не набирать единицу длины на клавиатуре, а выбрать ее из трех вариантов – m, mm и cm. Если в списке всего две позиции (да или нет – альтернативный вопрос), то обычно используют «галочку», три и более – радиокнопки и/или список. Список отличается от радиокнопок лишь тем, что в списке часть позиций может быть скрыта и выведена на экран прокруткой. (Если же из списка нужно выбрать не одну, а несколько позиций, то его заменяют на группу галочек см. пример http://twt.mpei.ac.ru/mas/worksheets/Tests/Test_Cone.mcd). В принципе, галочки более универсальный инструмент, чем радиокнопки, хотя  требуют более сложного программирования. В радиокнопках всегда должна быть активирована одна из кнопок, и этим как бы пользователю подсказывается одно из решений, которое может быть и ложным. Галочки же могут быть все пустыми, что оставляет пользователю полную свободу выбора. Кроме того, расстояние между галочками может быть любым и расположены они на листе могут в любом порядке, а не только вертикально как радиокнопки. Дополнительно можно запрограммировать так, что галочки будут перемешиваться перед каждым обращением к документу. Это также будет исключать какое-либо предпочтение при выборе варианта. Выбранных позиций в группе галочек может быть больше чем одной, что может быть задумано разработчиком при создании данной расчетной или проверочной методики.

Рис. 2.11 Диалоговое окно форматирования текстового окошка  18 – это
 ширина окошка
 (не менее 5

 символов),
 а 255 –
 
максимальное
 число вводимых
 символов

Рис. 2.11. Диалоговое окно форматирования текстового окошка

Это и ему подобные диалоговые окна (см. рис. 2.12 – 2.14) возникают после нажатия кнопки «Далее >», отмеченной в правом нижнем углу рис. 2.2.

Через диалоговое окно, показанное на рис. 2.11, пользователь может изменить ширину самого текстового окошка и/или максимальную длину вводимого текста. При этом подчеркивается, что нажатие на клавишу Enter будет сигналом на передачу измененных данных на MAS. Повторяем, кнопка «Пересчитать», показанная на рис. 2.3, может быть лишней. Но в этом случае не будет лишним вставить в документ соответствующий комментарий. Иначе пользователь может не дождаться ответа – глобус в верхнем правом углу браузера не будет крутиться.

Рис. 2.12 Диалоговое окно форматирования «галочки»  Русские буквы в
 ярлыке галочки
 могут быть
 
искажены.
 В этом случае
 ярлык можно приписать
 отдельной картинкой

Рис. 2.12. Диалоговое окно форматирования галочки

В диалоговом окне форматирования галочки (рис. 2.12) есть собственная «галочка», «постановка» которой создателем MAS-приложения будет означать, что изменение в «галочке», поставленной в самом Mathcad-документе, будет тут же передаваться на MAS. Такие же галочки имеются и в диалоговых окнах форматирования радиокнопок (рис. 2.13) и списка (рис. 2.14).

Рис. 2.13 Диалоговое окно форматирования «радиокнопок»

Рис. 2.13. Диалоговое окно форматирования радиокнопок

Рис. 2.14. Диалоговое окно форматирования списка

Рис. 2.14. Диалоговое окно форматирования списка

Как видно из сравнения рис. 2.13 и 2.14 в диалоговом окне списка (рис. 2.14) есть окошко (правый верхний угол), фиксирующее число элементов, которые будут одновременно показаны в списке. Если это число меньше числа элементов в списке, то они будут показаны с прокруткой. В «радиокнопках» всегда показаны все элементы (кнопки). В этом, как мы уже отметили, и состоит единственное отличие списка от радиокнопок.

На рис. 2.13 и 14 зафиксированы два способа настройки радиокнопок и списка – см. «галочку» с надписью «Values equal Names – значения равны именам». В первом случае (рис. 2.13) переменная, связанная с блоком радиокнопок или списком (у нас это UnitP), принимает текстовое значение, хранящееся в соответствующей ячейке колонки NamesValues equal Names»), а во втором (рис. 2.14) – значение (числовое или текстовое) из ячейки в колонке Value. К сожалению, пользователь не может записать туда встроенные или пользовательские переменные и выражения, а только константы. В несетевых аналогах радиокнопок и списка вышеописанное форматирование велось через чистое программирование на язык Basic – см. рис. 2.15.

Внимание! Элементы управления интерфейсом «Список» и «Радиокнопки» могут работать неправильно, если в них введены некоторые спецсимволы – символ градусов (°), например. Это относится (увы) и к буквам кириллицы. Поэтому пример на рис. 2.14 более предпочтителен, чем пример на рис. 2.13. Но тут одно неудобство – нужно помнить, что 1 – это килограммы, 2 – граммы и т.д.

Рис. 15 Пример программы, поддерживающей список

Рис. 2.15. Пример программы, поддерживающей список

Программа (макрос), вшитая в Mathcad-документ, как отмечено выше, и была причиной отказа от Controls и перехода к WebControls. Из-за этого в списке WebControls не оказалось такого удобного элемента интерфейса как «бегунок» (Slider). Зато сетевые радиокнопки устроены более правильно, чем их несетевые аналоги. В несетевых элементах интерфейса нет радиокнопок, а есть радиокнопка. А это ошибка – радиокнопок может быть три и более, но никак не одна или две.

«Бегунок» удобен тем, что он позволяет мышкой выставить нужное значение переменной в заданном диапазоне и с заданной размерностью. Но бегунок можно сымитировать (рис. 2.16), отформатировав определенным образом список – оставив в окне только один элемент, а в таблице форматирования (NameValue: см. рис. 2.13 и 2.14) записав нужное количество дискретных значений, присваиваемой переменной: 0.1, 0.11, 0.12…0.2, например, как на рис. 2.16.

Рис. 2.16 Имитация слайдера (бегунка) через список  Высота выпадающего списка не должна
 превышать высоту экрана дисплея.
 В противном случае работать с таким
 списком становится неудобно и его
 приходится заменять на текстовое окошко.
 Правее свернутого списка можно указать,
 что в нем будет раскрыто: диапазон и шаг
 дискретных значений. Если вводятся
 тексты, то их следует отсортировать по
 алфавиту

Рис. 2.16. Имитация слайдера (бегунка) через список

В идеале можно (и нужно!) так спроектировать интерфейс для пользователя MAS, что он не будет касаться клавиатуры, а будет работать только с мышкой.

Мы говорили о том, что в сетевом Mathcad-документе, может и не быть кнопки Submit. Но в документ можно вставить и несколько таких кнопок, если документ объемный и исходные данные нужно менять в разных местах. В этом случае такие места нужно «отмечать» такой кнопкой Submit (пример с двумя такими кнопками показан на рис. 2.18). Хорошим решением будет разбивка расчета на отдельные блоки, окончание которых фиксируется кнопкой Submit. Расчеты по последующему блоку будут заблокированы до тех пор, пока пользователь не введет нужные исходные данные в предыдущих блоках, не проверит правильность решения и не нажмет очередную клавишу Submit.

Те, кто проектировал интерфейс пользователя на языках программирования (Visual C, Visual Basic, Delphi и др.), отметят, что интерфейс MAS довольно скудный. Мы уже отмечали, что там нет Combo box – окошка, совмещающего текстовое окошко и список. Не предусмотрена возможность «гашения» некоторых элементов интерфейса, если какая-либо переменная принимает определенное значение (частичное решение этой проблемы http://twt.mpei.ac.ru/MAS/Worksheets/Smart_Input.mcd) и т.д. Но здесь нужно принимать во внимание, что WebControls – это не разработка MathSoft, а стандартные средства передачи данных в Интернет, которые пока не очень богатые. Это некие заготовки (полуфабрикаты), которые можно доработать.

Фокус здесь в том, что значение
в текстовом окне, присваивается
одной переменной, а значение,
выбранное из списка, – другой
(она скрыта). Итоговой переменной
присваивается либо первое,
либо второе значения

Рис. 2.17. Имитация Combo box’а  через список  и текстовое окошко

Так, на рис. 2.17 показано, как можно скомбинировать текстовое окошко и список, и получить Combo box. Такое комбинированное окошко, сочетающее текстовое окошко и список, задействовано в документе по адресу http://twt.mpei.ac.ru/mas/worksheets/VPU_4_1.mcd –  пользователь имеет возможность выбрать значения диаметра фильтра из списка (1.0, 1.5, 2.0, 2.6, 3.0 и 3.4 м) или ввести свое значение.

О комментариях

Все знают, что, составляя Mathcad-документ, нужно не лениться – не скупиться на комментарии: текстовые и графические вставки, не влияющие на сам расчет, но помогающие в нем разобраться не только другому человеку, но и самому разработчику.

Это правило требует существенной коррекции при подготовке Mathcad-документа к работе в сети. Дело в том, что объемный документ с большими графическими вставками будет «тормозиться» в сети. Поэтому основные комментарии (история создания документа, его подробное описание, инструкция по работе и др.) целесообразно поместить в отдельный (не Mathcad) документ (в html-файл, созданный в Word’е, например), а в самом Mathcad-документе поместить только минимум комментариев и ссылку на «большие», дополнительные комментарии, которые открываются в отдельном окне браузера. По этой же причине не рекомендуется перегружать Mathcad-документ сложными графиками. С другой стороны, следует помнить, что в Mathcad-документе, открытом на MAS, нет возможности мышкой вращать трехмерный график, например. Поэтому следует дублировать такой график в разных ракурсах. Другое решение: можно запрашивать углы ориентации графика вокруг осей и делать пересчеты перед выводом трехмерного графика на дисплей – см. пример на сайте http://twt.mpei.ac.ru/mas/worksheets/3D_Plot_Rotate.mcd.

Следует отметить, что технология MAS, предоставляя пользователю возможность доступа к операторам и функциям Mathcad, отсекает он него команды меню.

Публикуя документ в Интернете, следует думать и о его многоязычности. Для этого, во-первых, все комментарии можно продублировать на нескольких языках – по-русски, по-английски и т.д. Есть и другое решение – давать пользователю возможность выбора языка (рис. 2.18).

Рис. 2.18 Многоязычный Mathcad-документ  Если пользователя английский
 язык (умолчание) не устраивает, то
 он может перед началом расчета
 выбрать из списка другой и нажать
 на клавишу
Choose. Документ
 вернется с комментариями на
 выбранном языке.
 Операторы, выводящие ответ,
 стоит отметить цветом, как это
 сделано на рис. 2.17 и 2.18.
  Другим цветом можно
 выделить
WebControls,
 через которые меняются
 исходные данные

Рис. 2.18. Многоязычный Mathcad-документ

Решение, приведенное на рис. 2.18, такое: разноязычные комментарии вводятся в вектор, элементы которого выводятся на дисплей в зависимости от выбранного языка (первый язык – первый элемент, второй язык – второй элемент и т.д.). Есть и третье решение – дать возможность пользователю открывать несколько вариантов одного расчета (несколько файлов) с комментариями  и переменными (Vinput и Vвх, например) на различных языках. Так построены документы http://twt.mpei.ac.ru/mas/worksheets/Tests/Test_Cone.mcd  и http://twt.mpei.ac.ru/mas/worksheets/Tests/Test_Cone_Eng.mcd, например.

И последнее. При открытии MAS-приложений в Интернете могут возникать проблемы с показом букв кириллицы не только в WebControls, но и в простых текстовых комментариях Mathcad-документов. Поэтому можно рекомендовать заменять текстовые комментарии именами переменных, где спецсимволы вставлены после взятия аккорда «Ctrl + Shift + j», помня о том, что их должно быть минимальное количество (см. выше). Здесь будет одно ограничение – нельзя использовать точку, т.к. она становится невидимой и выделяет последующую часть имени переменной в нижний индекс Vвх, например.

О вставках других программ

В Mathcad-документ можно внедрить фрагменты Excel, MatLab, LabView и обмениваться данными с этими программами. Excel, например, часто внедряют, чтобы удобнее было вводить и выводить таблицы (вектора и матрицы) или задействовать специфические функции электронных таблиц (рис. 2.19).

Рис. 2.19 Диалоговое окно вставки в Mathcad-документ других приложений Windows  После
 нажатия
 клавиши
 «
Next
 будут
 запрошены
 переменные,
 значения
 которых
 передаются
 в
Excel  
и
 переменные,
 которые
 принимают
 значения
 из таблицы

Рис. 2.19. Диалоговое окно вставки в Mathcad-документ других приложений Windows

Список, показанный на рис. 2.19, зависит от программ, которые установлены на компьютере. Mathcad-документ с «чужепрограммными» вставками можно размещать на MAS только после решения лицензионных вопросов с разработчиками соответствующих программ. Ведь программы приобретались для использования только на рабочей станции, а не для открытия в Интернете. Если вообще приобретались.

В Mathcad-документе, подготовленном для публикации в сети, могут быть сделаны Mathcad-вставки, дублирующие некоторые фрагменты расчетов. Дело в том, что часто у графика могут находиться операторы глобального присваивания переменным, значения которых «закидываются» в начало расчета. Глобальное присваивание, к сожалению, невозможно в Controls и WebControls. В этом случае приходится часть Mathcad-документа дублировать и скрывать этот дубль в захлопнутой области.

Об именах переменных и функций

При подготовке Mathcad-документа к публикации в сети может оказаться так, что имя переменной или функции, нормально работающее в среде Mathcad, дает сбой при открытии этого документа в сети. Обычно это случается, если используются русские буквы в именах. Вообще-то в именах объектов программирования русские буквы нежелательны не только в «работающих» именах переменных, функций, файлов и т.д., но даже и в комментариях (см. выше). Тем не менее, их приходится использовать особенно в специфических расчетах, где те или иные объекты уже давно получили русские имена, которым пользователи давно привыкли. У многих этих переменных есть латинские аналоги, но у некоторых нет. Если русские буквы необходимы в формулах, то можно посоветовать прием нивилирования «русскости» этих переменных. Автор заметил, что, например, переменные ч (час), мг-экв (миллиграмм-эквивалент) и некоторые другие – Ц. баз (базовая цена, где баз – это нижний текстовый индекс) при открытии Mathcad-документ в сети дают сбой – переменные «краснеют» с сообщением об ошибке «Переменная или функция не определена». «Подлечить» такие переменные можно, поставив первым их символом пробел. Вид переменной не изменится (она только чуть сдвинется вправо), а расчет восстановится. «Лечить» переменные также можно заменой (подправкой) их имени через команду Edit/Replace, проставив галочку у слова Math в диалоговом окне настройки замены.

    Следует помнить, что Mathcad по-настоящему поддерживает только латинские и греческие буквы. Наши хитрости, связанные с «лечением» покрасневших имен переменных, содержащих спецсимволы, (пробел в начале имени) не является документированным. Следовательно можно ожидать, что в новой версии Mathcad данный прием не будет работать. Если все же без русских букв не обойтись, то можно порекомендовать накрывать латинские «поганые» названия картинкой с русскими символами - см. совет 214 из книги «Советы пользователям Mathcad». Пример специальных переменных http://twt.mpei.ac.ru/mas/worksheets/Spec_Var.mcd.

Проблема объемных исходных данных (Suggested solution for a large volume input data)

При работе с Mathcad-документом, открытым в сети на MAS или в самой оболочке Mathcad, может возникнуть проблема ввода большого изменяющегося массива данных (пример по адресу http://twt.mpei.ac.ru/mas/worksheets/Exp_Steam_K_300_240_LMZ.mcd, где пользователь должен просмотреть и при необходимости изменить значения в нескольких десятках текстовых окошках, прежде чем нажать на кнопку Recalculate). Ввод таких данных через обычные (Web)Controls (текстовые окошки) очень трудоемок и неудобен. При работе вне сети (в самой оболочке Mathcad) эта проблема обычно решается записью исходных данных файлом на диск и считыванием их в массивы Mathcad (функция READPRN и др.). При работе с MAS такая технология затруднительна, но можно рекомендовать другую. Пользователь перед тем, как работать с МАS, в электронных таблицах, например, готовит новые исходные данные – см. рис. 2.20.

Рис. 2.20 Таблица исходных данных для MAS (показана часть данных)

Рис. 2.20. Таблица исходных данных для MAS (показана малая часть данных)

После того, как данные готовы (это могут быть подправленные данные предыдущего сеанса связи с MAS, например, хранящиеся в архиве пользователя), они простым копированием (Ctrl+InsertShift+Insert) переносятся в «длинное» текстовое окошко Mathcad-документа, открытого в сети (см., например, рис. 2.5 и 2.6) – в одно окошко или несколько, если длина копируемой цепочки символов превышает 256 знаков. После этого нажимается кнопка Submit (или клавиша Entercм. комментарий на рис. 2.11) и расчет ведется с новыми исходными данными. Если ответ также объемен, то можно порекомендовать выводить его не отдельными скалярными величинами, а таблицей, которую также можно скопировать из сетевого Mathcad-документа – перенести в документ пользователя для дальнейшего анализа и обработки. При этом следует помнить, что вертикальные и горизонтальные прокрутки объемных массивов (векторов и матриц) в сети не работают. Кроме того, там не будет возможности раскрытия составных массивов (Nested Array).

Рис. 2.21 Меню и диалоговое окно создания, открытия и сохранения расчетных проектов

Рис. 2.21. Меню и диалоговое окно создания, открытия и сохранения расчетных проектов

Предложенное решение проблемы архивации и ввода в сетевой Mathcad-документ объемных исходных данных в принципе должно быть встроено в MAS, и об этом автор сообщил разработчикам (см. п. 15 в Приложении «Содержание MAS»). Во многих несетевых расчетных программах – приложениях Windows в меню File есть специальные команды (New [Project], Open [Project] и Save [Project]), позволяющие работать с архивом исходных данных – см. рис. 2.21, где эти команды показаны (меню и диалоговые окна одного приложения Windows-программы с именем расчета водоподготовительной установки, где данные по отдельным проектам (сеансам работы с программой) хранятся на диске в файлах с именами Sample1.rod, Sample2.rod, ... Sample8.rod).

    Готовя Mathcad-документ для публикации в сети, нужно решить вопрос о стартовых значениях исходных данных. Как правило, разработчик сетевого расчета, продолжая традицию Mathcad с его основным оператором интерфейса «:=», строит документ так, что в расчете даны некие типовые исходные данные, которые пользователь может (но не обязан!) изменить, отредактировать. С одной стороны, это удобно – можно сразу просмотреть расчет, ничего в нем не меняя или меняя отдельные данные. С другой стороны, это чревато и ошибками, связанными с тем, что пользователь может где-то не изменить нужные данные и получить неправильный ответ. Поэтому можно рекомендовать записывать в текстовое окошко, например, не стартовое (типовое) значение, а прочерк («–»), блокирующий расчет и требующий тем самым от пользователя обязательного ввода нужных исходных данных. По этой же причине можно рекомендовать использовать группу «галочек», а не список или радиоточки при организации выбора варианта исходных данных.

Задачи на MAS для сферы образования

Задачи, выложенные на MAS, направлены, в основном, на решение практических задач и построены следующим образом. Обратившемуся к MAS предлагается через WebControls ввести исходные данные, нажать на кнопку Recalculate и получить ответ. Но если такой документ как бы «вывернуть наизнанку», то его можно приспособить и для образовательных целей: допустимо генерировать исходные данные и просить пользователя (обучаемого, тестируемого) ввести нужные формулы, по которым высчитывается ответ, который сравнивается с истинным. На основании этого сравнения делается вывод о знании пользователем соответствующего процесса, аппарата и/или технологии. Это может делаться и в рамках контроля или самоконтроля при изучении учебного материала, а также при организации практических занятий. При этом необходимо либо в самом расчетном документе, либо в документах, на которые сделаны ссылки из расчетного документа, дать все необходимые теоретические и справочные материалы, «подталкивающие» обучаемого к правильному ответу. Пример такого документа хранится по адресу http://twt.mpei.ac.ru/mas/worksheets/Tests/Test_Cone.mcd. Там предлагается по заданным геометрическим размерам прямого круглого конуса определить его некоторые параметры – высоту и объем (рис. 2.22).

Рис. 2.22. Контроль знаний через MAS: выбор варианта и ввод выражения

Рис. 2.23. Контроль знаний через MAS: составление и решение уравнения

По документу, показанному на рис. 2.23 и хранящемуся по адресу http://twt.mpei.ac.ru/MAS/Worksheets/Chem/Chem_R_N26t.mcd, обучаемому предлагают составить самому и решить с помощью компьютера химическую задачу.

    В таких документах (рис. 2.22, 2.23) необходимо решить следующие проблемы.

  1. Необходимо генерировать исходные данные так, чтобы они находились в разумном диапазоне.

  2. Необходимо либо выбрать исходные данные из довольно объемной таблицы, либо генерировать эти данные, опираясь на генераторы псевдо- и/или истиннослучайных чисел, отбраковывая неверные исходные данные (см. пункт 1).

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

  4. Работа с формулами, по которым ведутся расчеты, может идти либо через выбор из предложенного списка (высота конуса – см. выше), либо через ввод формул через текстовые окошки (объем конуса). Эти два метода имеют плюсы и минусы. Выбор из предложенного списка подразумевает, что в нем есть и неверные результаты, а это очень спорный момент в методологическом плане. Считается, что обучаемый может запомнить неверный ответ в предложенном списке и не запомнить правильный. Ввод формулы через текстовое окошко не совсем удобен тем, что формулу при этом приходится вводить в текстовом режиме, опираясь не на общематематические, а на «компьютерные» варианты написания операторов – не , а sqrt(X), например. Но это не так уж и плохо – пользователь, изучая специальную дисциплину, заодно и осваивает некоторые приемы работы на компьютере. В формулах допустим ввод как числовых констант, так и переменных, их хранящих.

  5. При сравнении численных ответов пользователя, включая и те, какие были введены через формулы (см. пункт 4) с истинными результатами, необходимо принимать во внимание точность математических операций. Так, например, пользователь может ввести число π как 3.14, что будет несколько отличаться от истинного значения этой фундаментальной математической константы.

Более подробно эта сторона использования MAS описана в статье "Mathcad Application Server: новые возможности в сфере открытого образования" (http://twt.mpei.ac.ru/ochkov/Edu_MAS/index.html)

Доступ к расчетам через пароль

Проблему администрирования (допуска) к расчетным документам MAS можно решать традиционными средствами, используемыми в Интернет – регистрация, получение пароля и т.д. Эти инструменты можно приложить как ко всему сайту, хранящему расчетные методики, так и к отдельным расчетам. Так, на рис. 2.23 показан расчет температуры в конденсаторе (см. рис. 2.18). Расчет организован так, что при исходных данных, показанных на рис. 2.24 (Pv = 0.95 бар и В = 750 мм рт.ст.) ответ дается (tc = 32.8 ºС / 91.1 ºF). При других исходных данных расчет блокируется, а ответ не показывается. Чтобы все заработало, пользователю с именем Login необходимо получить от разработчика пароль и ввести его в соответствующее текстовое окно (Password).

Рис. 2.24. Пример документа с требованием ввода пароля

Итак, что нужно сделать, чтобы Ваш Mathcad-документ стал доступен в сети

1. Необходимо в среде Mathcad 11.2 Enterprise Edition отредактировать Mathcad-документ – вставить WebControls вместо операторов присваивания. Если данной версии Mathcad у пользователя нет, он может отметить, например цветом эти операторы присваивания и попросить администратора MAS сделать нужные замены (см. рис. 2.1 и 2.3).

2. Послать по электронной почте или передать при встрече данный Mathcad-документ администратору MAS – автору этого текста, например. Еще лучше, если WebSheet будет расположен на двух MAS. Дополнительно, например, на MA-сервере фирмы Софтлайн (http://mas.exponenta.ru). Администратор этого сайта - Ивановский Ростислав Игоревич (mas@exponenta.ru). Так на сайте фвтора можно увидеть слова (дубль). Это означает, что соответствующий расчет продублирован на запасном сервере.  Естественно, можно приобрести MAS и в индивидуальное пользование.

3. После установки Mathcad-документа на MAS проверить его работу и за несколько итераций (переписка с администратором сервера) отладить его.

3. О кнопке Submit из набора WebControls пакета Mathcad

В инструкции разработчику приложений для Mathcad Application Server (MAS – см. http://mas.mathsoft.com/mas/documentation/guide/guide.mcd) сказано, что кнопка Submit бесполезна в «нормальных» Mathcad-документах (в WorkSheets), а необходима только для WebSheetsMathcad-документов, подготовленных для публикации в Интернет посредством MAS. Эту информацию не поленились даже вставить в диалоговое окно Submit Button Properties – см. подчеркнутые автором строки на рис. 3.1 «Кнопка Submit бесполезна в несетевом Mathcad-документе».

Рис. 3.1 Последовательность вставки в Mathcad-документ кнопки Submit

Рис. 3.1. Последовательность вставки в Mathcad-документ кнопки Submit

Но информация, подчеркнутая на рис. 3.1, не совсем верна. Вернее, она дезориентирует пользователей Mathcad и отсекает от них очень интересный инструмент.

Во-первых,  в WebSheets и без этой кнопки в принципе можно обойтись. Кнопку Submit нажимают после того, как в Mathcad-документе сделаны нужные изменения и их необходимо передать (to submit по-английски «передавать, представлять на рассмотрение, экспертизу») на MAS-сервер для расчета в среде Mathcad, установленной на этом сервере. Но если в этом документе меняются данные лишь в одном WebControls, то можно так отформатировать этот «сетевой» элемент интерфейса, что изменение в нем и нажатие клавиши Enter будет сигналом для посылки данных на MAS-сервер и без нажатия на кнопку Submit, которая в этом случае становится лишней. Так в библиотеке фирмы MathSoft по адресу http://mas.mathsoft.com/mas/library/calc_DeltaP_A400.mcd хранится WebSheet, отправленный в эту библиотеку автором, и в который автор забыл вставить кнопку Submit. Тем не менее, расчеты по этому сетевому документу ведутся без особых трудностей.   В отношении элемента Text box (см. рис. 2.11) это свойство (окно ввода текста и кнопка Submit «в одном флаконе») устанавливается автоматически, а в остальных трех элементах через «галочку» – рис. 3.2.

Рис. 3.2. «Галочка» сигнала на передачу данных на сервер в WebControl «Галочка»

Здесь просматривается прямая аналогия с режимом ручного пересчета в среде Mathcad (Excel, Word, BASIC, Pascal и т.д.) кнопку Submit можно сравнить с кнопкой F9, которую нажимают после того, как в WorkSheet сделаны нужные изменения через операторы «:=» или сетевые или несетевые Controls и необходимо, чтобы были сделаны нужные пересчеты.

Во-вторых, кнопка Submit может быть очень полезна не только в WebSheets, но и в WorkSheets – в традиционных (несетевых) Mathcad-документах. Дело в том, что нажатие на эту кнопку увеличивает на единицу значение переменной, связанной с кнопкой Submit (после запуска Mathcad-документа в сетевом или несетевом режиме значение этой переменной равно нулю). Эта переменная является своеобразным счетчиком нажатий на кнопку Submit – количества обращений к самому MAS. Эта особенность кнопки Submit может быть очень полезна и в Интернете и вне сети – формальная переменная может управлять самим Mathcad-документом, меняя, например, его вид. Так, на рис. 3.3 показан Mathcad-документ с графической иллюстрацией метода Ньютона (касательных) численного поиска нуля функции, где нажатие на кнопку Submit позволяет пошагово просматривать приближение к искомому нулю функции (рис. 3.4).

Рис. 3.3. Иллюстрация метода Ньютона (касательных) с использованием кнопки Submit (начальное состояние)

Алгоритм метода Ньютона прост. От точки первого приближения (x) проводится касательная, пересечение которой с осью абсцисс дает второе (следующее) приближение (x1).

Рис. 3.4. Иллюстрация метода Ньютона (касательных) с использованием кнопки Submit – второе приближение к нулю

Здесь опять же можно провести аналогию, но уже не с кнопкой F9 (см. выше), а с переменной FRAME, управляющей анимацией. Теперь в среде Mathcad можно делать некую псевдоанимацию, кадры которой в прямом и обратном порядке можно менять, нажимая кнопки Submit.

На MAS-сервере МЭИ (http://www.vpu.ru/mas) можно найти пошаговые иллюстрации (псевдоанимации) следующих классических методов численного решения задач с опорой на кнопку Submit:

·        вышеописанный метод Ньютона – http://twt.mpei.ac.ru/mas/worksheets/newton.mcd

·       метод золотого сечения – http://twt.mpei.ac.ru/mas/worksheets/Gold_Ratio.mcd

·        методы Эйлера и Рунге-Кутта решения обыкновенного дифференциального уравнения – http://twt.mpei.ac.ru/mas/worksheets/Euler.mcd   

Приложения

Содержание MAS МЭИ на июнь 2004 г.

Общая теплоэнергетика

Термодинамическая поверхность воды и водяного пара

Цикл Ренкина (вариант 1  вариант 2: 3D диаграммы)

Давление в конденсаторе (пример многоязычного расчета)

Температурные шкалы

Расчет расширения пара в турбине К-300-240 ЛМЗ

Расчет подогревателя низкого давления турбины

Расчет подогревателя высокого давления турбины

Расчет испарителя

Расчет сетевого подогревателя

Расчет толщины теплоизоляции труб теплосети

Расчет содержания кислорода во влажном воздухе

Расчет газотурбинной установки

Расчет газотурбинной установки STIG

(Далее в разработке)

Тепломассообмен

Расчет коэффициента теплоотдачи от стенки трубы к воде в экономайзере парового котла

Температурное поле в остывающем стержне

Термогидравлика градирни

Задачи электронного курса по тепломассообмену в энергетических установках

(Далее в разработке)

Водная химия

Кривая титрования буферного раствора (углекислота)

Пересчет жесткости в различных единицах

Пересчет концентраций

Удельная электропроводность растворов

Таблица значений коэффициента активности иона

Задачи из решебника по химии для 7-11 классов

(Далее в разработке)

Водоподготовка

База данных по водным источникам

Выбор проектной производительности ВПУ для электростанции (в отладке)

Расчет равновесных концентраций ионов в воде после известкования и коагуляции

Расчет реальных концентраций ионов в воде после известкования и коагуляции

Расчет перепада давления на фильтре с анионитом Пьюролайт A400

Проектная рабочая емкость сильнокислотного катионита Пьюролайт C100 по водоумягчению и расчет остаточной жесткости

Расчет умягчения воды на катионите Пьюролайт C100

Расчет анионирования воды на второй ступени обессоливания   Обессоливание для ТЭС с барабанными котлами

Фронт фильтрования в фильтре

Задачи из учебного пособия "Водоподготовка в энергетике"

Расчет объема серной кислоты для приготовления разбавленного раствора

Расчет водного режима систем охлаждения конденсаторов турбин по СНиП 11-31-74 (в разработке)

Опрос химцехов на предмет модернизации ВПУ (в разработке)

Карбонатный индекс и теплосеть

(Далее в разработке)

Экология, охрана труда и энергосбережение

Расчет вредных выбросов ТЭС в атмосферу по РД 34.02.304-95 (разработке)

Расчет шумового воздействия на обходчика турбины

Примеры решения задач по энергосбережению  

(Далее в разработке)

Экономика

Модель финансовой пирамиды

Расчет себестоимости выработки электроэнергии на ТЭС (в разработке)

Расчет себестоимости обессоленной воды на ТЭС (в разработке)

Технико-экономическое сравнение методов водоподготовки на ТЭС (в разработке)

(Далее в разработке)

Водный режим

Трехступенчатое испарение в барабанном котле

Расчет оптимальной температуры уходящих газов из котла

Диаграмма Пурбе для системы Fe-H20

(Далее в разработке)

Аналитическая химия

Калибровка ФЭК

Проверка принадлежность двух серий экспериментов к одной выборке

Расчет промаха

(Далее в разработке)

Топливо и масла

Оптимизация перевозки топлива

(разработке)

АСУ ТП

Расчет оптимальных параметров и анализ динамики АСР с ПИД-регулятором

Построение переходной характеристики объекта и переходных процессов в одноконтурной АСР с ПИ законом регулирования и с оценкой качества

(Далее в разработке)

Разное

Решение нелинейного алгебраического уравнения  Решение системы линейных алгебраических уравнений   Решение дифференциального уравнения (остановка автомобиля)  Задача нелинейного программирования

Построение графиков функций y(x) и f(x,y)   Задача о краске (целочисленное программирование)

Сложный процент        Транспортная задача        График f(x,y)=0        Задача о козе

Задача о пожарном ведре        Поиск минимума функции методом золотого сечения

Поиск нуля функции методом Ньютона        Цена подержанного автомобиля

Поиск нуля функции методом половинного деления   Интегрирование методом прямоугольников

Интегрирование методом трапеций

Решение ОДУ методами Эйлера и Рунге-Кутта

Стрельба из пушки (решение системы двух ОДУ)   Решение дифференциального уравнения в частных производных

Сглаживание табличных зависимостей

Предсказание        Интерполяция f(x,y)

Построение поверхности f(x,y) с вращением

Маленький экзамен по геометрии

Ханойские башни        Smart Input        Допуск по паролю

Поиск глобального минимума по генетическому алгоритму

Решение ОДУ методом Рунге-Кутта с переменным шагом

(Далее в разработке) ■


Российское открытое акционерное общество

энергетики  и  электрификации

“ЕЭС  России”

ДЕПАРТАМЕНТ ГЕНЕРАЛЬНОЙ

ИНСПЕКЦИИ ПО ЭКСПЛУАТАЦИИ

ЭЛЕКТРИЧЕСКИХ СТАНЦИЙ

И СЕТЕЙ

г. Москва, просп. Вернадского, д.101, корп.3

тел  710 51 40  факс 710 48 23, e-mail bea@rao.elektra.ru

от 23.01.2004 г. ИП-10-2004 (ТП)

 

Руководителям АО-энерго, АО-электростанций,

АО ГВЦ "Энергетики",

проектно-изыскательских и

научно-исследовательских АО

Об организации научно-технических и инженерных расчетов энергетики в Интернет

ИНФОРМАЦИОННОЕ ПИСЬМО № ИП-10-2004 (ТП)

В настоящее время большое количество научно-технических расчетов в энергетике реализовано в программной среде  Mathcad, которая позволяет, с одной стороны, сохранить естественную форму записи формул расчета, а с другой – вставить в них мощный математический аппарат (решение уравнений и систем – алгебраических и дифференциальных – обыкновенных и в частных производных, работа с векторами и матрицами, решение статистических задач, плоская и объемная графика, аналитические преобразования, анимация, создание сложных пользовательских функций средствами встроенного языка программирования, работа с единицами измерения и др.). Кроме того, в среде Mathcad возможен вызов функций по теплофизическим свойствам воды и водяного пара WaterSteamPro (см. www.wsp.ru и информационное письмо №  ИП-14-27-2001 от 03.08.2001 г.). В среду Mathcad могут быть интегрированы также такие широко распространенные современные программные среды как Excel, MatLab и LabView. Все это делает программу Mathcad одним из самых популярных средств выполнения инженерно-технических расчетов инженерами-энергетиками.

В декабре 2003 г. в Московском энергетическом институте (ТУ) введен в пробную эксплуатацию так называемый Mathcad Application Server (MAS), позволяющий запускать на нем Mathcad-документы и обращаться к ним дистанционно – через Интернет. Интернет-адрес уже установленных на MAS расчетных методик, связанных с энергетикой – http://www.vpu.ru/mas.  Там же можно найти ссылки на документы, касающиеся технологии работы с MAS.

Технология MAS позволяет решить следующие проблемы:

          нет необходимости ставить на компьютеры пользователей (инженеров-энергетиков и научных работников) саму программу Mathcad, искать, проверять на отсутствие вирусов и запускать прикладной файл; достаточно только подключить компьютер к Интернет и обратиться к MAS  через браузер (Internet Explorer 5.5 и выше); при этом сохраняется полная иллюзия того, что на компьютере открыт Mathcad-документ, в котором можно изменять исходные данные, просматривать промежуточные результаты расчетов, а также все формулы и считывать (распечатывать, сохранять на диске) ответ;

          новые расчетные методики моментально становятся доступными всем пользователям энергетики России и стран СНГ;

          любые ошибки, недоработки и допущения в программах, замеченные как самим автором расчетной методики, так и пользователями, могут быстро (и незаметно для пользователей) исправляться;

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

Технология MAS решает проблему лицензирования работы с программой Mathcad: пользователю (электростанциям и энергообъединениям) нет необходимости покупать саму дорогостоящую программу Mathcad или ставить на компьютер «пиратскую» копию программы, а также постоянно обновлять их – достаточно только обратиться к MAS и выполнить нужный расчет.

По вопросам установки расчетных методик энергетики на MAS обращаться к Очкову Валерию Федоровичу – mailto:OchkovVF@mpei.ru, тел./факс (095) 362-71-71.

В «Корпоративном образовательном и научном центре ЕЭС» планируется провести серию семинаров по технологии использования MAS в энергетике.

Начальник Департамента ГИЭС                                           И.Ш. Загретдинов

Литература

·        Русскоязычные книги по Mathcad http://www.exponenta.ru/soft/Mathcad/mathcad_book.asp

·        Англоязычные книги по Mathcad http://www.mathcad.com/library/Print_Books.asp

·        Статьи и книги В.Ф.Очкова по Mathcad http://twt.mpei.ac.ru/ochkov/work2.htm

Предложения по исправлению и доработке MAS

MAS suggestions and errors list from Valery Ochkov

  1. Необходимо предусмотреть возможность скрытия аргумента при выводе информации оператором «=» – see the picture Hide_Arg.png
  2. Необходима, возможность скрытия кавычек при выводе текстовой константы – see the picture Inv_Commas.png
  3. Необходимо, чтобы операторы «=» или «→» выводил не только константы, но и формулы с константами – see the picture 202.png
  4. Необходимо убрать слова /combo box – see the picture ComboBox.png. Хотя Combo box необходим в MAS – see the picture RightComboBox.png
  5. Хорошо бы в числах, вводимых через Text box, использовать не только точку, но и запятую – see the picture Comma.png
  6. Необходимо, чтобы MAS сам определял нужную кодировку  see the picture CyrCoding.png
  7. Необходимо предупреждать, что некоторые символы не передаются в Internet  see the picture degC_degF.png
  8. Хорошо бы из кнопки Submit также и управлять режимом счета (ручной или автоматический) – see the picture F9_Submit.png
  9. Ошибка! В WorkSheet русские буквы в надписях на графиках искажаются, но в WebSheet показываются правильно после смены кодировки – see the picture Lable_Cyr_Error.png
  10. Хорошо бы, если бы числа в Text box, разделенные пробелами (точкой с запятой), сразу превращались в вектор –  see the picture list_in_text_box.png. Это проблема автором решена через функцию пользователя – http://twt.mpei.ac.ru/mas/worksheets/lsolve.mcd.
  11. Хорошо бы на сервере MathSoft вести поиск и по WebSheets   see the picture  MAS_Search.png
  12. Хорошо бы, чтобы Text box воспринимал и простейшие арифметические действия –  see the picture Math_Text.png
  13. Хорошо бы, иметь возможность блокировки Text box по значению какой-либо переменной    see the picture Switch_on_off_Text_box.png
  14. Хорошо бы, чтобы Text box воспринимал и функции пользователя –  see the picture Function_tru_Text_box.png. Это проблема автором решена через функцию пользователя – http://twt.mpei.ac.ru/mas/worksheets/F_X_Y_Plot.mcd. Но есть ограничения – нельзя работать с символьной математикой и нельзя вызывать ранее определенные функции.
  15. Хорошо бы, чтобы пользователь MAS имел возможность сохранения новых данных на своем компьютере и вызова их при следующем обращении к MAS  see the picture Project_Control.png
  16. Ошибка! В WorkSheet длина комментария одна, а в WebSheet – другая – see the picture Len_Text.png. Приходится, искусственно удлинять область комментария – see the picture Len_Text_must_be.png
  17. Хорошо бы, чтобы переменные можно было использовать и в диалоговых окнах форматирования графиков –  see the picture R_T_T_on_Plot.png
  18. Хорошо бы иметь возможность менять расстояния между радиокнопками –  see the picture Radio_B_distance.png
  19. Хорошо бы иметь возможность вводить таблицу и слайдер через специальный WebControl  see the picture Table_Control.png
  20. Необходимо дописать /Number box у слов Text box – see the picture Tex_Number_Box.png
  21. Хорошо бы иметь возможность в Text box задавать минимальное и максимальное значения вводимых чисел –  see the picture Min_max_in_Text_box.png
  22. Хорошо бы иметь возможность в Text box вводить встроенные и пользовательские переменные –  see the picture Built_in_Vars_in Text_box.png
  23. Хорошо бы иметь возможность в кнопке Submit задавать направление изменения переменной, управляемой этой кнопкой, и обнулять ее –  see the picture Var_Var_Var_in_Submit.png
  24. Хорошо бы изменить порядок ввода текстового окошка (Text box) и переменной, с нею связанной – see the picture Def_Text.png
  25. Ошибка! Искажена печать WorkSheets, хотя WebSheets печатаются нормально – see the picture Print_Error.png
  26. Ошибка! Не проходят русские буквы у подписей 3D графика – see the picture 26_Lables_3D (ошибка исправлена)
  27. Ошибка! На MAS теряется порядок пересекающихся операторов in Front or in Back.
  28. Ошибка! В текстовое поле WorkSheet нельзя ввести русский текст – see the picture 27_Rus_In_Text_Box.gif.
  29. Желательно вводить через Text Box и многострочные тексты
  30. Желательно, чтобы пустой Text Box возвращал(а/о) не числовой нуль (0), а текстовый ("")