Вы находитесь на странице: 1из 15

28-02-2011 МПиС_л2.doc из Mathcad.

doc

Пакет MathCAD

Лекция 1. Введение
Пустой Mathcad-документ – это «волшебный» лист бумаги, на котором пользователь с
помощью клавиатуры и\или мыши может писать математические выражения в виде, принятом
научным миром задолго до появления компьютера. В этом одна из причин популярности
Mathcad. Ниже рассмотрены: «базовая версия» – Mathcad 7, а также возможности версий,
начиная с 8 Pro. До 2010 года наиболее популярна «студенческая», но тоже не бесплатная
версия Mathcad-2000. Портабельная версия Mathcad14.exe работает под WinXP и, co скрипом,
под Win7. Ново-модную версию Mathcad Primиспользовать не рекомендуется. О причинах –
поговорим в конце следующей лекции. Дома желательно инсталлировать (не портабельную)
стабильно работающую версию М005 Mathcad 15.

Рисунок 1.1. Экран дисплея при работе в среде Mathcad 8 Pro

Создать математические выражения помогают специальные панели (палитры) кнопок.


Нажав на кнопку «=» (пальцем на клавиатуре или мышкой на панели Arithmetic – см. рисунок
1.2), пользователь получит на пустом месте экрана дисплея (в Mathcad-документе) заготовку
оператора вывода числового значения.

█=██
В левый пустой квадратик (placeholder, «держатель места») записывается выражение,
численное значение которого появится во втором (среднем) квадратике, если увести курсор
(автоматический режим расчета, включенный по умолчанию после запуска Mathcad, – см. слово
AUTO внизу рис. 1.1) или нажать F9 (автоматический и/или ручной режимы). В правый
квадратик можно записать нужную размерность, если обсчитывается какая-либо физическая
величина. Если величина безразмерная, а пользователь все-таки вставит в правый квадрат букву
m (метры), например, то Mathcad ругаться не будет, а превратит m в m  m-1, то есть в ничто.
Как правило, показанной выше заготовки пользователь не видит, а просто нажимает «=» после
набора математического выражения. Кнопка «=», повторяем, есть и на клавиатуре вверху
справа. Нажимать можно и ее. Таким же образом продублированы и основные арифметические
1
28-02-2011 МПиС_л2.doc из Mathcad.doc
действия: сложение, вычитание, умножение, деление – на панели Arithmetic есть и цифры 1, 2, 3
и т.д. Считать в среде Mathcad можно и не касаясь клавиатуры, а только двигая мышку и
щелкая по ее кнопкам.

Рисунок 1.2
Mathcad-документ– это почти одни комментарии. Они записываются в прямоугольную
область, которую можно вставить в любом свободном месте Mathcad-документа: например,
выше комментируемого выражения левее или правее него (см. тексты на рис. 1.3 и 1.4).
Комментарии, как правило, имеют шрифт, отличный от шрифта переменных и констант. Кроме
того, на дисплее комментарии выделяются цветом. По умолчанию фон экрана белый, цвет
выражений – черный, а цвет комментариев – синий. Но пользователь вправе поменять эту
палитру, приспособив ее под свои особенности цветового восприятия. На рис. 1.3 белый фон
только у областей комментариев и формул, остальное залито серым цветом. Это достигается
переключателем Regions (регионы, области) в меню View (просмотр). Пользователям Mathcad,
особенно начинающим, полезно работать в этом режиме, так как он позволяет четко
фиксировать границы областей формул и комментариев. По умолчанию весь фон документа
белый (белый лист бумаги!). Кроме того, на некоторых рисунках показаны панели, кнопки
которых помогают создавать Mathcad-документ и решать поставленные задачи, а также другие
ремарки и сообщения Mathcad.
По умолчанию, нажимая кнопки, пользователь вводит математические выражения
(пишет черным по белому). Ввод комментария предваряется нажатием на клавишу «”»
клавиатуры. Можно поступить и по-другому – набрать, например, букву С, а потом нажать на
клавишу пробела: переменная С превратится в первую букву комментария, автоматически
поменяет свой цвет с черного на синий, а шрифт – со шрифта переменных на шрифт

2
28-02-2011 МПиС_л2.doc из Mathcad.doc
комментариев. В портабельных версиях, даже русифицированных, бывают проблемы с
кириллицей.
Для вычислений можно использовать не только оператор «=», но и оператор «» –
оператор вывода не числового, а символьного значения.
До включения переменных в выражения им необходимо задать какое-либо числовое
значение. Эту работу в среде Mathcad выполняют два оператора:
█ := █ ██
Первый оператор появляется на экране дисплея после нажатия соответствующей кнопки
«калькулятора» (см. левый нижний угол на панели Arithmetic рис. 1.2) или после нажатия
клавиши «:» клавиатуры (второй символ – «=» Mathcad добавит сам). Второй оператор – «»
хранит панель Evaluation. Кроме того, символ «» можно напечатать, нажав клавишу «~».
В левом квадрате операторов присвоения указывается имя переменной или функции, а в
правом – значение, которое ей присваивается. Оператор «:=» распространяет свое «влияние»
вниз и вправо, а оператор «» – на все четыре стороны. Тогда исходные данные компакно
вводятся рядом с формулой и ответом. Такая структура данных удобна в объемных документах:
пользователь меняет исходные данные и получает ответ без прокрутки самого документа. Еще
одно отличие оператора «» от оператора «:» – правый операнд оператора «» может хранить
системные переменные и константы, но не переменные, введенные пользователем. Условно
считается, что оператор «:=» служит для задания значений переменным, а оператор «» –
константам, то есть переменным, не меняющим свои значения в процессе решения задач.
Формулы могут быть вставлены в концы текстовых полей (вопросов) командой Math
Region меню Insert. Это очень удобно – формула и комментарий к ней составляют одно целое,
которое не рвется при перемещении фрагмента документа на новое место.
Все переменные хранят конкретные числовые значения. На имена переменных накладываются
некоторые ограничения. В частности, в них недопустимы пробелы (их можно ставить только в
комментариях), которые обычно заменяют на символ подчеркивания. Сокращение имен
оттеняет «вспомогательность» соответствующих переменных
Ниже рассмотрены два этюда – задача о покупке сукна разных цветов из школьного
задачника по алгебре и задача о равновесии балки. Абстрагируясь от содержания задач,
рассмотрим их реализацию средствами MathCad. Нужно только задать начальные значения
переменных.(см. Рис.1.3) Пусть они будут равны первому предположению: 540 разделить на
138. За ключевым словом Given (дано) пользователь должен записать анализируемую систему,
связывая левые и правые части уравнений знаком «эквивалентно»: жирным знаком «равно» из
панели Evaluation (аккорд Ctrl + =). Решить записанную систему поможет встроенная функция
Find (найти). Это немного странная функция – она возвращает свое значение, зависящее не
только от значений ее аргументов (здесь переменные Синее и Черное), но и от того, что около
данной функции написано. Это «около» распространяется вверх (или влево) от выражения,
использующего функцию Find, до ключевого слова Given и даже дальше – до начального
приближения. Функция Find возвращает и заносит в переменную Ответ (это не скаляр, а вектор
– матрица с одним столбцом и двумя строками) значения переменных Синее и Черное,
превращающие наши два уравнения в тождества. Значения, хранящиеся в векторе Ответ,
можно вывести на дисплей, поставив после имени переменной «светлый» знак равно (оператор
вывода числового значения). Внимание: Mathcad различает строчные и заглавные, русские и
латинские ( имеющие одинаковое написание ) буквы в идентификаторах.

3
28-02-2011 МПиС_л2.doc из Mathcad.doc

Рисунок 1.3
Числа 63 и 75 охвачены скобками, подчеркивающими, что переменная Ответ – это
вектор, по умолчанию – столбец. В среде Mathcad есть богатый набор функций и операторов
работы с векторами и матрицами (см. рис. 1.3 ), позволяющий легко и изящно решать довольно
сложные задачи. В среде Mathcad нет принципиальной разницы между вектором и матрицей:
вектор — это матрица с одним столбцом.

В конце рис. 1.3 представлен и второй вариант вывода результата – не распечаткой


значения вектора Ответ, а распечаткой значений элементов вектора Ответ: переменных с
индексом Ответ0 и Ответ1. По умолчанию в среде Mathcad первый элемент вектора имеет
нулевой номер. Далее перепишем задачу в матричном виде: AX=B. Матрица A – это
квадратная матрица порядка 2 (с двумя строками и двумя столбцами), хранящая коэффициенты
при неизвестных системы двух линейных алгебраических уравнений, вектор X – вектор
неизвестных системы, а вектор B – вектор свободных членов. Итак (см. рис. 1.4), в среде
Mathcad пишем A:. Машина приписала знак равно так, чтобы получился оператор присваивания
(«A:= »), и ждет значение переменной A. Нажимаем на кнопки с изображением матрицы на
панелях инструментов Mathcad (Math и Matrix). После этого на экране дисплея возникает окно
работы с матрицами Insert Matrix.

В этом окне два поля и четыре кнопки. В первом поле пользователь задает число строк
(Rows) создаваемой матрицы, а во втором – число столбцов (Columns). По умолчанию в этих
полях записаны тройки: считается, что квадратная матрица порядка 3 – самая распространен-
ная. Но наша матрица А имеет порядок 2, поэтому меняем на двойки. На каждой из кнопок окна
работы с матрицами есть надписи: OK (Создать матрицу и закрыть окно), Insert (Вставить),
Delete (Удалить) и Cancel (отмена). Матрицу мы создаем, поэтому щелкаем по кнопке OK. Две
остальные кнопки предназначены для изменения размеров ранее созданных матриц: заданное в
полях число столбцов и/или строк вставляется (удаляется) правее и ниже отмеченного курсором
элемента уже созданной матрицы.
После щелчка по кнопке OK справа от выражения А:= появляется каре четырех
вакантных мест для ввода информации, обрамленное скобками. Заполняем вакансии числами 1,
1, 5 и 3 и приступаем к формированию вектора В. Набираем В:= и снова вызываем окно работы
4
28-02-2011 МПиС_л2.doc из Mathcad.doc
с матрицами. Если при создании матрицы нажимать не OK, а Insert, то окно работы с
матрицами будет оставаться на экране дисплея.
Во втором поле меняем двойку на единицу, щелкаем по кнопке OK и получаем
заготовку для ввода информации в вектор В. Заполняем вакантные места числами 138 и 540
Матрица и вектор коэффициентов системы линейных алгебраических уравнений заполнены.
Для решения инвертированную (обратную, т.е. возведенную в минус первую степень) матрицу
A умножаем на вектор-столбец B, а ответ заносим в вектор X. Если мы теперь введем с
клавиатуры Х=, то машина выдаст ответ – числа 63 и 75 в скобках.
Через окно Insert Matrix можно ввести матрицу, у которой число элементов не может
превышать ста. Считается, что большее число элементов матрицы неразумно вводить вручную.
Более объемные матрицы вводятся в Mathcad-документ тремя способами:
1. Элементы матрицы хранятся файлом на диске и вводятся в матрицу функцией
READPRN.
2. Две матрицы сливаются в одну функциями stack (матрицы ставятся одна на одну)
или augment (матрицы ставятся бок о бок).
3. Двумя циклами формируется объемная вспомогательная матрица (M1), хранящая
единицу или что-то другое, а потом ее содержимое копируется в создаваемую
матрицу M и редактируется.

На рис. 1.4 правее Mathcad-выражений помещены комментарии, показывающие, как


задача о купце и сукне решается с помощью языка BASIC, имеющего «матричные» операторы,
начинающиеся с ключевого слова Mat. В языках программирования векторам и матрицам
соответствуют массивы, хранящие переменные с индексом, которые подсказывают нам второй
вариант «матричного» решения задачи о купце и сукне (пункт 2 на рис 1.4) без обращения к
окну работы с матрицами, а через ввод индекса переменной: Аi , j, Bi и Хi. Индекс к имени
переменной добавляется либо нажатием на кнопку Хn панели Matrix, либо на клавишу «[»
(открывающаяся квадратная скобка). Запомнить эту клавишу просто: на языках Pascal и C в
квадратные скобки помещаются индексы переменных A[i, j], B[i], Х[i] и т.д. Можно отметить
еще одну особенность второго варианта «матричного» решения задачи о покупке сукна: отказ
от умножения инвертированной матрицы А на вектор В, а использование вместо этого
встроенной функции lsolve, возвращающей решение (to solve – решать) системы линейных (l –
эль) алгебраических уравнений.

В версиях Mathcad, начиная с 8 появились дополнительные возможности решения


систем алгебраических уравнений конструкцией Given-Find, проиллюстрированные на рис. 1.5.
Система уравнений, решаемая на рис. 1.5, имеет два корня, которые хорошо видны на графике
(см. пункт 1, как он строится  см. ниже главку «Великолепная семерка Mathcad»). Функция
Find возвращает одно решение вблизи точки начального приближения. Но если начальное
приближение дать не в виде скаляра, как на рис. 1.3, а в виде вектора (см. пункт 2 на рис. 1.5),
то ответ будет содержать все корни системы. Элементы вектора Ответ  уже не скалярные
величины, а новые векторы. Кроме того, в среде Mathcad 8 появилась возможность переменные
системы алгебраических уравнений объединить в вектор. Этот прием проиллюстрирован в
пункте 3 на рис. 1.5. Внимание! В некоторых версиях, начиная с Mathcad 11, эта возможность
не работает, либо дает неверный результат.

В среде Mathcad, начиная с версии 8, нет необходимости делать число уравнений


большим или равным числу неизвестных системы.

5
28-02-2011 МПиС_л2.doc из Mathcad.doc

Рисунок 1.4

Еще одно новшество Mathcad 8: если поместить курсор мыши на функцию Find и нажать
правую кнопку мыши, то выпадает так называемое контекстное меню, в котором реализована
возможность выбора метода решения системы алгебраических уравнений (см. конец рис. 1.8).
Система Mathcad 8 по умолчанию сама выбирает метод решения (AutoSelect). Но пользователь
при необходимости может скорректировать метод и детали расчета. В среде Mathcad 8 Pro
можно решить систему, состоящую из 200 нелинейных алгебраических уравнений.
Но для решения одиночных алгебраических уравнений лучше использовать не
конструкцию Given-Find, а встроенную функцию root (а root, по-английски, корень).
Функция root имеет два аргумента: выражение и переменная, найденное значение
которой делает выражение равным нулю. Для работы функции root также необходимо первое
приближение, вблизи которого ищется корень. Если корней много, то возвращается один –
ближайший к первому приближению
Систему уравнений проходится сводить к одному уравнению и решать через функцию
root в том случае, если задействовано программирование в среде Mathcad. Дело в том, что
ключевое слово Given не «запихивается» в программы.

6
28-02-2011 МПиС_л2.doc из Mathcad.doc

Рисунок 1.5.
7
28-02-2011 МПиС_л2.doc из Mathcad.doc

Рисунок 1.6. Поиск корней полинома

Мы знаем, что если система алгебраических уравнений линейна, то ее лучше решать не


конструкцией Given-Find, а с помощью функции lsolve (сравните рис. 1.3 и 1.4). Подобная
конкретизация наблюдается и при решении одиночных алгебраических уравнений. Если левая
(ненулевая) часть уравнения – это полином n-й степени, то для поиска его корней (всех,
включая и комплексные) предназначена встроенная функция polyroots. Ее работа показана на
рис. 1.6.
Функция polyroots (корни полинома) не требует начального приближения, а в качестве
аргумента имеет вектор коэффициентов (они могут быть и комплексными): нулевой элемент
вектора  это свободный член, первый коэффициент при x, второй  при х2 и т.д.
На качество работы функции root влияет значение системной переменной TOL. На рис.
1.6 эта переменная по умолчанию была равна 10-3: мы не свели уравнение к тождеству 0 = 0, а
сделали так, чтобы правая и левая части по модулю отличались не более чем на 10-3.
Между функциями Find и root наблюдается своеобразный спор. С одной стороны, Find
позволяет искать корни как уравнений, так и систем. С этих позиций функция root
как бы не нужна. Но с другой стороны, конструкцию Given-Find невозможно вставить в
Mathcad-программы. В программах приходится подстановками сводить систему к одному
уравнению и использовать функцию root.

8
28-02-2011 МПиС_л2.doc из Mathcad.doc
Все словесное описание задачи можно внести в Mathcad-документ ремарками
(комментариями), которые подобны ремаркам в тексте пьесы: действующие лица их не
произносят, но они помогают лучше понять мысли автора. Пакет Mathcad оборудован
текстовым процессором, позволяющим оформить, например, научную статью, не прибегая к
специализированным средствам (текстовые процессоры Word, Scientific Word и др.). Кроме
того, буфер обмена ClipBoard поможет перенести фрагменты Mathcad-документа в Word-
документ и там дооформить их. В седьмой и восьмой версиях этой функцией нагружена
команда Save as... Кроме того, Mathcad-документ можно внедрить в Word-документ (и
наоборот), используя технологию OLE. В среде Word, например, можно проверить орфографию
и грамматику ремарок. В среде Mathcad 7 и выше допустимы не только числовые, но и
текстовые переменные. Единицы измерения в среде Mathcad – это своеобразные встроенные
символы, к которым применяются простейшие символьные преобразования. Она позволяет
автоматически отслеживать «физические» ошибки. Если, к примеру, пользователь сложит
секунды с метрами, то Mathcad «заругается» и выдаст протестующее сообщение об ошибке:
несовместимые единицы измерения.
Нужно помнить, что более-менее сложная система нелинейных уравнений окажется не по
зубам не только пакету Mathcad, но и другим мощным пакетам – Mathematica, Maple, Gauss и
др. Пакет Mathcad в такой ситуации выдаст сообщение Did not find solution (Решение не
найдено), заставляя пользователя поневоле переходить к полуавтоматическому режиму –
менять значения начального приближения и (или) величину точности TOL (TOLerance –
точность, погрешность), а также метод поиска решения (Mathcad 8) – рис. 1.5. Функция Find
решает систему так, чтобы левые и правые части входящих в нее уравнений отличались на
величину, не превышающую значения TOL ( В среде Mathcad 8 уже две системные переменные,
влияющие на точность расчета: привычная TOL и новая CTOL).. Это предопределенная
(системная) переменная среды Mathcad, хранящая по умолчанию значение 0.001, которое
можно изменить, записав в Mathcad-документе выражение TOL:=0.0000001, например. Но и это
часто не помогает. Только при хорошо подобранных начальных условиях пакет Mathcad
находит правильное решение. Малейший отход от начальных условий, и слово Find «краснеет»
и появляется соответствующее сообщение об ошибке. Но эта же задача в неограниченном
диапазоне исходных данных прекрасно решается последовательными приближениями с
поиском в цикле корня одного-единственного уравнения.

9
28-02-2011 МПиС_л2.doc из Mathcad.doc

Рисунок 1.7.

Великолепная семерка Mathcad


Типов графиков в Mathcad, конечно, намного больше, но на панели инструментов
имеется ровно семь кнопок для создания семи типов графиков. Графики очень помогают
решать поставленные задачи. На рис. 1.5, например, начальные приближения к корню системы
брались вблизи точек пересечения линий на графике. К сожалению, графики, помещенные в
печатном варианте, черно-белые. Их можно было бы расцветить, как это имеет место на
экране дисплея.
Если нажать соответствующую кнопку панели инструментов (см. рис. 1.1 и 1.2), то
раскроется панель графики с девятью новыми кнопками (см. рис. 1.8 справа внизу). Нажимая на

10
28-02-2011 МПиС_л2.doc из Mathcad.doc
них, можно построить семь типов графиков. Сделаем это для иллюстрации решения задачи о
балке.

Рисунок 1.8. Декартов график (X-Y Plot)


Самый распространенный график: декартов график ( X-Y Plot), иллюстрирующий связи
между двумя (одна кривая на графике) или несколькими (две или более кривых) векторами-
наборами значений переменных с мелким шагом. На оси ординат графика можно было бы
написать не , а , , , отмечая тем самым связь линий с парами векторов x-, y- и P-. Но
по умолчанию (которое нередко находится в противоречии с пониманием) мы пишем только
одну букву .
Первый вектор (у нас это значение угла наклона балки ) будет аргументом. Второй,
третий и последующие векторы – реакции опор x, y и P. Их значения вычисляются через
функциональные зависимости пункта 2 на рис. 1.8 во время построения графика. Декартов
график строится, как правило, в три шага:
 шаг 1: задание вида функций одной переменной; они у нас уже есть – x(), y() и
P();
 шаг 2: формирование вектора значений аргумента; у нас он меняется от нуля до 360
градусов с шагом 5 угловых градусов;
 шаг 3: построение графика.

Третий шаг, в свою очередь, состоит опять же из трех шагов;


 шаг 1: рисование на экране дисплея заготовки графика – прямоугольника с черными
квадратиками у левой и нижней сторон; заготовка графика появляется в отмеченном
11
28-02-2011 МПиС_л2.doc из Mathcad.doc
курсором месте после того, как пользователь нажмет на одну из кнопок панели
инструментов Graph или выберет соответствующую команду в меню Insert;
 шаг 2: заполнение пользователем двух черных квадратиков заготовки графика
(«вакантных мест») именем функции (или вектора) и именем аргумента. Если
функций больше одной, то их имена вводятся через запятую. В заготовке есть и
другие черные квадратики, которые можно не заполнять. Среда Mathcad, например,
сама рассчитает диапазон изменения Y. График появляется на дисплее после вывода
курсора из зоны графика (автоматический режим расчетов) или после нажатия
клавиши F9 (ручной или автоматический режим расчетов). Параметры графика
задаются стандартными по умолчанию;
 шаг 3 необходим, если параметры графика, установленные по умолчанию на
предыдущем шаге, пользователя не устраивают и он хочет их изменить, вызвав
соответствующее диалоговое окно (см. например, рис. 1.10 ). Размеры графика
изменяются обычной протяжкой окна-области графика, принятой в среде Windows.

В среде Mathcad 7 и выше допустима быстрая (двухшаговая) технология построения


графика (QuickPlot): пользователь набирает функцию (sin(x), например) и сразу дает команду
построения декартова или иного графика. График будет построен с разбросом аргумента от
минус 10 до плюс 10 и с пятьюдесятью точками внутри. Если это пользователя не устраивает,
то график форматируется.

Рисунок 1.9.
На рис. 1.9 показан так называемый параметрический декартов график –
взаиморасположение двух векторов в зависимости от значения третьего параметра. Он часто
применяется для построения фазовых кривых дифференциальных уравнений. Если аргумент
представляет собой угол, изменяющийся от 0 до 360 градусов, а значения функции x(), y() и
P() имеют период, целесообразно получить полярный график ( Polar Plot – рис. 1.10):

12
28-02-2011 МПиС_л2.doc из Mathcad.doc

Рисунок 1.10

13
28-02-2011 МПиС_л2.doc из Mathcad.doc

Рисунок 1.11

На рис. 1.11 проиллюстрирована работа Мастера трехмерных диаграмм, введенного в


Mathcad 8. Он существенно помогает строить графики и диаграммы, показанные ниже:
пользователь по шагам строит график (кнопка «Далее»), откатываясь при необходимости назад
(«Назад»).

14
28-02-2011 МПиС_л2.doc из Mathcad.doc

Рисунок 1.12

На рис. 1.12 графически отображается функция уже не одного, а двух аргументов –


правого плеча балки b и угла ее наклона. График поверхности ( Surface Plot), как правило,
строится не в три (см. выше), а в семь шагов (тоже красиво).
 шаг 1: задание вида функций двух переменных; она у нас уже есть – x(b, )  см.
пункт 5 на рис. 1.11;
 шаг 2: нумерация узлов сетки-поверхности по первому аргументу – i := 0.. 40;
 шаг 3: формирование вектора первого аргумента – bi := -5  м + 0.25  м  i (м – это
метры);
 шаг 4: нумерация узлов сетки-поверхности по второму аргументу j := 0.. 40;
 шаг 5: формирование вектора второго аргумента – j := 9°  j (° – это угловые
градусы);
 шаг 6: заполнение матрицы (здесь она носит имя M) значениями функции x(b, ) в
узлах сетки;
 шаг 7: построение и форматирование графика поверхности.
Такая последовательность построения поверхности рекомендована в документации
Mathcad. Но читатель может познакомиться и с другими, более удобными методиками –
задание координат углов сетки поверхности и задание центра квадрата сетки.

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

15