Советы тем, кто работает с Mathcad

(другие статьи В.Ф.Очкова о Mathcad – http://twt.mpei.ac.ru/ochkov/work2.htm)

Валерий Очков

Подобные рубрики можно встретить практически в любом компьютерном журнале (см., например, “Советы тем, кто программирует на Visual Basic” или “офисные” советы во вкладке “Решения Microsoft” данного издания).

Такие советы условно делятся на три группы:

    1. Уточняются рекомендации, которые в документации и в help’e прописаны “петитом”.
    1. Разработчики программы задним числом (после завершения работы над документацией) сообщают о ее новых полезных свойствах и/или о способах нейтрализации недостатков.
    1. Пользователи сообщают о результатах экспериментов над программами. Здесь речь может идти о так называемых недокументированных свойствах программ, на которые разработчики убедительно просят не опираться, но ...

Естествоиспытатель, желающий познать окружающий мир, не может прямо обратиться к Создателю — к Богу или к Природе, кто как для себя считает, а должен задавать вопросы самому объекту исследования. Для этого проводится эксперимент — вносятся в объект возмущения и фиксируется реакция на них: “щелкни кобылу по носу и она махнет хвостом”.

У программы есть автор. Его имя, как правило, не увидишь на коробке с дистрибутивом и в документации, но оно есть. Следовательно, какие-либо эксперименты над программами излишни. Возникающие вопросы нужно адресовать либо документации, либо самому автору. Но! Если пользователю, к примеру, потребуется уточнить, в градусах или в радианах должен быть аргумент синуса, то он не будет рыться в документации, а просто напишет X:=sin(90) и посмотрит, чему будет равна переменная Х. Подобные “эксперименты” пользователи ставят ежечасно, обращаясь к документации только в особо сложных случаях и часто... не находя там ответа. Обращение же к Создателю проблематично. На hot-line сидят не авторы, а продавцы программ, что далеко не одно и тоже. На фирме, поддерживающий продукт, скорее всего вас попросят перезвонить через пару дней, за которые там проведут свой эксперимент над программой, и попытаются найти ответ. Да и обращение к автору часто ничего не дает, так как он еже забыл свое детище и всецело поглощен новым проектом. Даже если это не так, то автор может и не помнить всех свойств и нюансов своего творения. Более того, создавая программу, программист сам непрерывно экспериментирует над ней, удивляясь ее новым неожиданным свойствам, не все из которых фиксируются в документации.

Из-за этого пользователь часто забывает, что Программа — это творение ума и рук человеческих (Вторая Природы), полагая, что это плод работы анонимного и недоступного Создателя (Первая Природа), к которому нет hot-line. Здесь, по-видимому, и кроется одно из объяснений (но ни в коем случае не оправдание) широкому распространению нелегального копирования программ. Имеются ввиду не CD типа “Все для офиса” — воровство есть воровство. Речь идет об относительно честных людях, ставящих на свой компьютер программу с того же пиратского диска, чтобы познать Природу и передать свои знания студентам.

Можно считать, что не человек открыл законы механики, а Создатель, бросив сверху яблоко и угодив им по ньютоновой голове, приоткрыл нам одну из тайн своего Божественного Замысла. Заслуга гения (Ньютона) здесь лишь в умении оказаться в нужном месте в нужное время. Программы как бы тоже падают к нам сверху. Отсюда и живучесть идеи shareware, которой противятся в первую очередь продавцы, а не авторы программ. Как говаривали в старые времена, есть мнение, что Бог (Абсолютный Всемирный Разум) создал по своему образу и подобию не только человека, но и компьютер. Написание для него программы — это вдыхание души в безжизненное нагромождение железок. Торговля телом (трансплантация органов, переливание крови, проституция) — реалия наших дней. Покупка и продажа души встречается только в сказках и преданиях (история Фауста, например). Приобретая программный продукт, мы опять же покупаем только “тело” — диски, документацию, информацию и скидки по новым версиям, а главное — послепродажный сервис.

Но вернемся к советам, еще раз отметив, что из-за неизбежных экспериментов над программами деление советов на “правильные” и “неправильные” (вредные) весьма условно.

Совет 1

В среде Mathcad есть два оператора вывода на дисплей значения переменной или функции: оператор вывода числового значения “=” и оператор вывода символьного значения “® ”. В ряде случаев целесообразно при численных расчетах использовать оператор вывода символа, а не числа.

Замена оператора вывода числа на оператор вывода символа

1. Увеличение точности расчетов

2. Достижение предела точности

3. Сохранение констант пользователя (красный цвет — константа не определена)

Рис.1

Оператор “® ” позволяет:

Совет 2

В среде Mathcad комментарии пишутся текстом с синим (по умолчанию — см. выше) шрифтом. Комментарии “живут” как бы отдельно от объекта комментирования (формулы, графики и прочее). Из-за этого нередко пользователь, перетаскивая объект на новое место, теряет комментарий. Это особенно неудобно при программировании (а в программе без комментариев через некоторое время не разберется сам автор).

Вот решение этой проблемы в среде Mathcad 7 Pro, где есть текстовые переменные.

Вспомогательная функция

Рис.2

В среде Mathcad-6.0, где нет текстовых переменных, можно завести числовую переменную-пустышку (Rem:=0), в которую затем записывать “комментарии”:

Это_комментарий ¬ Rem

На рис.2 показан и третий объект с комментарием: см. текст “Вспомогательная функция, в конце которого с помощью команды Math Redion из меню Insert (Mathcad 7) вставлено математическое выражение Зол_сеч(a, b):=... Теперь такой конгломерат проще перетаскивать с места на место.

Совет 3

В программировании есть хорошее правило: отдельная функция или процедура должна полностью помещаться на экране дисплея. И не только потому, что “краткость сестра таланта”, но и по сугубо практическим и эстетическим причинам — такую функцию легче отлаживать, такой функцией удобнее любоваться. Самый простой способ сделать программу более компактной — это размещение на одной строке нескольких операторов с разделением их спецсимволами (“:” — Basic, “;” — Pascal). В среде Mathcad для такой работы годится запятая — см. программные строки на рис рис.2.

Совет 4

Программируя и столкнувшись с альтернативой, пользователь должен нажать кнопки “if” и “otherwise” на панели программирования. Так было сделано при написании программы на рис.2. Но если плечи альтернативы простые операторы, то можно использовать старую функцию if.

Рис.3

Функция If может присутствовать в программах и в своем первозданном виде:

E ¬ if (A > B, C, D)

Совет 5

В среде Mathcad нет встроенных булевых функций AND, OR, широко используемых в программировании. Вместо них можно использовать встроенные операторы “умножить” (логическое умножение, AND) и “сложить” (логическое сложение, OR).

AND(a, b) := a × b

OR(a, b) := a + b

Но более разумно в данных случаях использовать встроенные Mathcad-функции min и max, которые расширяют сферу применения булевых операторов и на нечеткие множества [1]:

                       

Функции min и max могут иметь более двух булевых аргументов, объедтненных в вектор.

Совет 6

Решая в среде Mathcad задачу и присваивая новой переменной какое-либо значение, используйте не оператор “:=” (присвоить), а оператор “=” (вывести численное значение). Этим приемом пользователь убеждается, что переменная, которой присваивается значение, по-настоящему новая и ей до этого ничего не было присвоено ни пользователем ни системой Mathcad. Этот прием необременителен в среде Mathcad 7, т.к. там оператор “а=” автоматически превращается в оператор “а:=”, если переменная а пустая.

Совет 7

Совета 6 особо нужно придерживаться при работе с размерностями. Дело в том, что при включении в работу физических величин (это делается по умолчанию) большое количество переменных система Mathcad нагружает размерностями (A — амперы, s —секунды и т.д.). В таком расчете невинный оператор “m:= 2” может все поломать: метры станут безразмерными. Суть совета 7 в том, что решая физическую задачу (школьную или вузовскую задачу по физике, например) мы часто путаемся не в формулах (все формулы, лежащие в основе мироздания, просты: F=a× m, E=m× c2 и т.д.) и не в счете (под рукой персональный компьютер или, на худой конец, калькулятор), а в размерностях. Система физических единиц, встроенная в Mathcad, в этом смысле будет очень полезна.

Совет 8

Если же пользователь Mathcad по каким-либо причинам отказывается от использования размерностей физических величин, то их целесообразно отключить до начала работы. Но и в этом случае совет 6 пригодится. Представим себе такую ситуацию. Пользователь ввел оператор “е:=3”, а потом об этом забыл, но, тем не менее, хочет ввести в формулу основание натурального логарифма. Что из этого получится, можно представить. Совет 6 предостережет пользователя от поломки одой из фундаментальных констант математики.

Совет 9

В систему единиц Mathcad встроены далеко не все размерности. Тем не менее, отсутствующие размерности в расчетах использовать можно. Вот как можно в среде Mathcad решить известную задачу из рассказа Чехова “Репетитор”. “Купец купил 138 арш. черного и синего сукна за 540 руб. Спрашивается, сколько аршин купил он того и другого, если синее стоило 5 руб. за аршин, а черное 3 руб.?”.

 

Вопрос 1. Сколько заплатил бы купец,

если бы все сукно было черное?

Вопрос 2. На сколько больше пришлось

заплатить за синее сукно?

Вопрос 3. На сколько синее сукно

дороже черного?

Вопрос 4. Сколько куплено

синего сукна?

Вопрос 5. Сколько куплено

черного сукна?

Рис.4

Совет 9 перекликается с советом 1, рекомендующим в ряде случаев использовать не оператор “=”, а оператор “® ”.

Совет 10

Очень часто на декартовом графике двух и более функций одной переменной одна из кривых “ложится” на ось x из-за малого значения соответствующей функции. В среде Mathcad невозможно иметь две оси y с различными шкалами (так решается данная проблема в среде Excel, например). В среде Mathcad “упавшую” функцию можно перемножить на коэффициент, значение которого подбирается экспериментально.

Анализируемая функция

                          

(Продолжение следует)

Контакт с автором ochkov@twt.mpei.ac.ru

Литература:

  1. “Mathcad и теория нечетких множеств”. КомпьютерПресс, 1’1998

Данные советы “размазаны” по книге В.Ф.Очкова “Mathcad 8 Pro для студентов и инженеров” (Компьютер Пресс, 1999). Кроме того, они присутствуют в CD-ROM версии книги (издательство МультиМедиа Технологии (тел. (095) 362-74-86, факс 362-70-23, e-mail mmt@glas.apc.org, http:/www.glasnet.ru/~mmt), создатель популярных компьютерных курсов изучения иностранных языков (EnglishGold и др.) и программных сред (Word, Excel, Internet и др.).