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

Ю. Е.

ВОСКОБОЙНИКОВ,
А. Ф. ЗАДОРОЖНЫЙ

Î СНОВЫ ВЫЧИСЛЕНИЙ
И ПРОГРАММИРОВАНИЯ
В ПАКЕТЕ
MathCAD PRIME

РЕКОМЕНДОВАНО
Новосибирским региональным отделением УМО
вузов РФ по образованию в области строительства
в качестве учебного пособия для студентов,
обучающихся по направлению «Строительство»

САНКТПЕТЕРБУРГ
МОСКВА
КРАСНОДАР
2016
ББК 32.973.26#018.2я73
В 76

Воскобойников Ю. Е., Задорожный А. Ф.


В 76 Основы вычислений и программирования в пакете Math#
CAD PRIME: Учебное пособие. — СПб.: Издательство «Лань»,
2016. — 224 с.: ил. — (Учебники для вузов. Специальная ли#
тература).

ISBN 9785811420520

В книге изложены основы работы в пакете MathCAD версий PRIME


для создания документов, построения графиков, матричных и векторных
операций, программирования основных типов вычислительных алгорит#
мов (линейных, разветвляющихся и циклов) и формирования файлов дан#
ных. Подробно рассматривается модульное программирование и его реали#
зация в пакете MathCAD PRIME.
Учебное пособие содержит большое количество примеров и копий фраг#
ментов документов MathCAD PRIME, которые позволят читателям не толь#
ко лучше понять и усвоить учебный материал, но и эффективно использо#
вать пакет MathCAD при выполнении курсовых и дипломных работ, а так#
же при работе над магистерскими и кандидатскими диссертациями.
Книга рекомендуется студентам технических специальностей при изу#
чении учебных дисциплин, включающих вычисления различной сложно#
сти, в том числе решение алгебраических и дифференциальных уравнений,
обработку экспериментальных данных, корреляционный, регрессионный
анализ данных. Книга будет также полезна магистрантам, аспирантам,
инженерам и научным сотрудникам, использующим в своих расчетах ма#
тематический пакет MathCAD PRIME.
ББК 32.973.26#018.2я73

Рецензенты:
М. С. СОППА — доктор физико#математических наук, профессор, зав. ка#
федрой физики НГАСУ (Сибстрин); А. А. ВОЕВОДА — доктор технических
наук, профессор кафедры автоматики НГТУ; Е. М. ГРИГОРЬЕВ — канди#
дат технических наук, доцент кафедры высшей математики НГАВТ.

Обложка
Е. А. ВЛАСОВА

Охраняется Законом РФ об авторском праве.


Воспроизведение всей книги или любой ее части
запрещается без письменного разрешения издателя.
Любые попытки нарушения закона
будут преследоваться в судебном порядке.

© Издательство «Лань», 2016


© Ю. Е. Воскобойников,
А. Ф. Задорожный, 2016
© Издательство «Лань»,
художественное оформление, 2016
ВВЕДЕНИЕ

П ри использовании вычислительной техники встает про


блема реализации необходимых алгоритмов в виде так называемых про
грамм. Для решения этой проблемы в различные годы использовались сле
дующие средства:
§ программирование в машинных кодах (включая языки типа Ассемблер);
§ программирование на языках высокого уровня (включая объектноори
ентированное программирование);
§ системы компьютерной математики.
Разработка программы (даже с использованием языков высокого уровня
с приставками Visual) требует и соответствующей подготовки (назовем ее
«программистской»), и достаточно большого количества времени. И то и
другое часто отсутствует у «обычного» пользователя, который является спе
циалистом в своей предметной области, но не в программировании. Поэтому
начиная с 90х годов прошлого века широкую известность и заслуженную
популярность приобрели так называемые системы компьютерной матема2
тики или, проще, математические пакеты.
Для выполнения научноинженерных расчетов любой сложности в на
стоящее время широко используется пакет MathCAD версий 14 и 15, несмот
ря на существующие новые версии этого пакета, разработанные фирмой PTC.
Так в 2012 г. была представлена новая версия этого пакета — MathCAD
PRIME 2.0, которая имеет принципиально новый интерфейс и новые функ
циональные возможности. Затем появились версии MathCAD PRIME 3.0,
MathCAD PRIME 3.1, имеющие практически одинаковый интерфейс и функ
ции с MathCAD PRIME 2.0. Однако эти версии получили слабое распростра
нение в научных и инженерных вычислениях, одной из причин этого явля
ется отсутствие системного изложения основ вычислений и программирова
ния в пакете MathCAD последних версий PRIME 2.0, PRIME 3.0, PRIME 3.1
(сокращенно MathCAD PRIME).
Поэтому данный учебник посвящен изучению основ вычислений и про
граммирования в пакете MathCAD PRIME. Авторы надеются, что пакет
MathCAD PRIME станет хорошим помощником при выполнении расчетов в
курсовом и дипломном проектировании, а также при выполнении различ
ных научных исследований.

ВВЕДЕНИЕ 3
РАЗДЕЛ ПЕРВЫЙ

ВЫЧИСЛЕНИЯ
В ПАКЕТЕ MathCAD
ТЕМА 1. МАТЕМАТИЧЕСКИЕ ПАКЕТЫ.

ТЕМА
ОБЩАЯ ХАРАКТЕРИСТИКА
ПАКЕТА MathCAD

Вэтой теме делается краткое сравнение математических па


кетов. Рассматриваются возможности, структура, программное окно пакета
MathCAD версий PRIME 2.0 и PRIME 3.0.

1.1. СОВРЕМЕННЫЕ
МАТЕМАТИЧЕСКИЕ ПАКЕТЫ
В настоящее время существует множество систем компью2
терной математики или, проще, математических пакетов.
Наиболее популярными из них являются Maple, MatLab, MathCAD. Для
выполнения научноинженерных расчетов любой сложности в настоящее
время часто используют пакет MathCAD. Чем объяснить популярность этого
пакета?
Пакет MathCAD является мощной системой компьютерной математики,
сочетающей в себе визуально ориентированный входной язык, удобный ре
дактор текста и формул, численный и символьный процессоры. Пакет доста
точно прост в изучении, а наличие большого числа электронных книг суще
ственно упрощает его применение для решения конкретных научноинже
нерных задач. В 2012 г. фирмой PTC разработана новая версия этого пакета —
MathCAD PRIME 2.0, которая имеет принципиально новый интерфейс и
новые функциональные возможности по сравнению с предыдущими версия
ми: MathCAD 14, MathCAD 15. Затем появились версии MathCAD PRIME 3.0,
MathCAD PRIME 3.1, имеющие практически одинаковый интерфейс и функ
ции с MathCAD PRIME 2.0.
Замечание 1.1. В дальнейшем при изложении материала вместо длин
ных названий версий будем сокращено указывать либо MathCAD PRIME,
либо более кратко MathCAD. Если в изучаемых версиях будут отличия, то
это будет специальным образом отмечаться.
Для иллюстрации элементов визуальноориентированного программи
рования в пакете MathCAD PRIME приведем фрагмент документа, в котором

6 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 1.1
Вычисление интеграла в пакете MathCAD PRIME
1
1
осуществляется вычисление определенного интеграла вида 2 dx
0 11 x
2

(рис. 1.1). Из рисунка видно, что запись операторов для вычисления опреде
ленного интеграла в пакете MathCAD PRIME (как и в более ранних версиях
пакета) очень близка к стандартному языку математических расчетов.
MathCAD позволяет записывать на экране компьютера формулы так, как
они представляются в печатном виде в книгах или как их записывают на
листе бумаги. Эта и другие рассматриваемые ниже особенности делают па
кет MathCAD почти идеальной вычислительной средой для решения науч
ных и инженерных задач различного уровня сложности.

1.2. ВОЗМОЖНОСТИ И СТРУКТУРА


ПАКЕТА MathCAD

Пакет MathCAD можно отнести к математическим универ


сальным системам. Объединение этих слов означает, что, помимо собствен
ных вычислений (как численных, так и символьных), MathCAD позволяет
подготавливать качественные тексты: дипломные и курсовые проекты, дис
сертации, статьи с наглядным графическим представлением результатов
вычислений (в том числе с анимацией).
Применение библиотек и пакетов расширений обеспечивает профессио
нальную ориентацию MathCAD на любую область науки, техники и образо
вания.
Пакет MathCAD, в отличие от других современных математических па
кетов, построен в соответствии с принципом WYSIWYG («What You See Is
What You Get» — «Что видите, то и получите»). Он прост в использовании
и по принципу обработки документа является программойинтерпретато
ром, т. е. после редактирования документа происходит его пересчет. Поэто
му отсутствуют этапы трансляции, компиляции и загрузки программы.

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 7


MathCAD является интегрированной системой программирования, ори
ентированной на проведение математических, инженернотехнических, ста
тистических и экономических расчетов. MathCAD содержит: текстовый ре
дактор, вычислительный, символьный и графический процессоры, справоч
ную систему.
Текстовый редактор служит для ввода и редактирования текстов.
Вычислительный процессор осуществляет численные вычисления по
заданным математическим формулам, имеет обширный набор встроенных
математических функций, обеспечивает вычисления рядов, сумм и произве
дений, определенных интегралов и производных.
Символьный процессор позволяет получать результаты вычисления в
символьном (аналитическом) виде. Второй интеграл на рисунке 1.1 вычис
лен в символьном виде, т. е. в виде формулы.
Графический процессор служит для создания графиков функций одной и
двух переменных.
Кроме того, уравнения и графики в MathCAD являются действующими.
При изменении любых данных, переменных или уравнений MathCAD не
медленно пересчитает математические выражения и перерисует графики.

1.3. ПРОГРАММНОЕ ОКНО


MathCAD
При запуске MathCAD PRIME (в дальнейшем — просто
MathCAD) открывается пустой документ, в который можно добавить текст,
уравнения, графики и изображения. Пример окна MathCAD приведен на
рисунке 1.1.
Программное окно содержит следующие элементы документа и интер
фейса пользователя: кнопка MathCAD, лента, панель быстрого доступа,
контекстные меню, рабочая область, строка состояния.
Кнопка MathCAD содержит команды для работы с файлами, такие
как: Открыть (Open), Сохранить (Save) и Печать (Print).
Лента содержит вкладки, на которых сгруппированы связанные коман
ды. Рабочую область можно настроить, уменьшив или увеличив ленту и
добавив часто используемые команды на панель быстрого доступа. Дополни
тельные сведения о командах ленты можно получить из всплывающих под
сказок и контекстной справки. На вкладках ленты отображаются контекст
ные меню, всплывающие подсказки и сочетания клавиш.
Панель быстрого доступа содержит часто используемые команды. Ко
манды можно добавлять и удалять с панели. Панель быстрого доступа может
находиться под или над лентой.
Контекстные меню — если щелкнуть документ правой кнопкой мыши,
можно получить доступ к часто используемым командам.
Строка состояния содержит номера страниц документа, цветной кру
жок, показывающий состояние кнопок: «Найти», «Заменить на», «Пара
метры поиска», «Регулятор масштабирования», «Представление страницы»
и «Режим черновика».

8 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 1.2
Позиции строки меню Help

Работа со справкой и информационным центром. Справочный центр


предоставляет доступ к справке и примерам MathCAD. Команды для работы
со справочной системой сосредоточены в меню Help (Справка), которое пока
зано на рисунке 1.2.
Центр помощи открывается щелчком значка в правом верхнем углу
ленты MathCAD или нажатием клавиши [F1]. Окно справочной системы
имеет четыре вставки: Книги, MathCAD PRIME 2.0, Учебники, Справочные
Таблицы.
Справочная система широко использует гиперссылки. При активиза
ции ссылки открывается связанная с ней часть справки. Если курсор вво
да установить на какуюлибо функцию, то при нажатии на клавишу [F1]
открывается окно справочной системы с информацией именно об этой
функции.
MathCAD содержит практические примеры, разработанные для того,
чтобы продемонстрировать использование MathCAD, а также встроенных
функций и операторов. Эти примеры позволяют лучше понять принципы
работы с функциями или изучить различные типы графиков, которые могут
улучшить визуализацию и анализ результатов расчета. Содержание подраз
дела Индекс тем примеров раздела Руководство по центру помощи MathCAD
PRIME 2.0 показано на рисунке 1.3. Аналогичное содержание имеют версии
MathCAD PRIME 3.0, MathCAD PRIME 3.1.
Справочные Таблицы — раздел, содержащий множество таблиц с данны
ми о различных химических элементах, их физических свойствах, сведения
о математических константах, таблицы производных и интегралов, форму
лы по механике, электротехнике, радиотехнике и т. д. На рисунке 1.4 пока
зано окно с перечнем доступных таблиц.

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 9


Рис. 1.3
Содержание подраздела Индекс тем примеров

Рис. 1.4
Окно списка справочных таблиц

10 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рабочее поле программного окна MathCAD находится под лентой, и в нем
располагается одно или несколько окон документов MathCAD. Можно от
крыть одновременно несколько документов. Каждый открытый документ
помещается на новую вкладку под лентой. Чтобы перейти в нужный доку
мент, необходимо щелкнуть его вкладку.
В нижней части программного окна располагается Строка состояний, в
которой при подведении курсора мыши отображаются подсказки о назначе
нии элементов на панели инструментов, режим вычислений MathCAD и но
мер текущей страницы.
Каждый документ MathCAD может содержать любое число математи2
ческих областей и текстовых областей.
Математическая область содержит конструкции пакета MathCAD,
необходимые для реализации того или иного алгоритма решения задачи.
В этой же области строятся графики. Курсор в математической области име
ет форму синего креста.
Текстовая область может включать любые символы (русские, латин
ские, греческие) в виде комментариев к вычислительным фрагментам. Для
создания текстовой области необходимо обратиться в ленте к пункту Доку2
мент (рис. 1.5).
В документ можно добавлять текст и изображения. Доступны следую
щие типы текстовых областей.
Блок текста. Располагается по всей ширине страницы. Эта область не
перекрывается с другими областями документа. При перемещении блока
текста или добавлении либо удалении строк другие области документа сме
щаются вверх или вниз. Блоки текста используются для вставки больших
параграфов содержимого на страницу.
Текстовое поле. Эту область можно перемещать по документу, и она
может перекрываться другими областями. Текстовые окна используются
для размещения кратких примечаний, аннотаций и подзаголовков для мате
матических выражений.

Рис. 1.5
Создание текстовой области

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 11


Если в документе содержится много страниц, можно воспользоваться функ
циями Найти и Заменить на для поиска текстовых и математических строк.
Работа в текстовой области осуществляется точно так же, как и в обычном
текстовом редакторе (операции редактирования, форматирования и т. д.).
Аналогичным образом строится работа с буфером обмена.

1.4. ЛЕНТОЧНЫЙ ИНТЕРФЕЙС


ПАКЕТА MathCAD
Ленточные интерфейсы версий MathCAD PRIME 2.0 и Math
CAD PRIME 3.0 имеют некоторые отличия и поэтому будем рассматривать
ленточный интерфейс этих версий раздельно.
Ленточный интерфейс версии MathCAD PRIME 2.0 содержит вкладки в
виде строки меню (рис. 1.6).
Каждая вкладка содержит разделы, которые объединены в группы. Раз
дел в свою очередь содержит операторы, значки и др., совокупность кото
рых, объединенных по функциональным признакам, будем называть па2
литрой инструментов.
Ленточный интерфейс версии MathCAD PRIME 3.0 показан на рисун
ке 1.7. На этом же рисунке графически определены введенные ранее поня
тия разделы, группы, операторы, значки и другие элементы оформления
ленточного интерфейса.
Отличие между лентами в этих версиях незначительное — в ленте Math
CAD PRIME 2.0 используются вкладки: Математика, Ввод/вывод, Мат2

Рис. 1.6
Вид ленточного интерфейса MathCAD PRIME 2.0

Рис. 1.7
Внешний вид ленточного меню MathCAD PRIME 3.0

12 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 1.8
Палитры инструментов раздела Операторы вкладки Математика

рицы/таблицы, Графики, Форматирование, Расчет, Документ (см. рис. 1.6),


в MathCAD PRIME 3.0 вкладка Форматирование разделена на Форматиро2
вание формул и Форматирование текста (см. рис. 1.7).
Вкладка Математика содержит пять разделов: Операторы, Символы,
Программирование, Константы, Символьные операции. Вид кнопок и на
звания палитр инструментов приведены на рисунке 1.7.
Раздел Операторы содержит математические операторы, которые рас
пределены по категориям: Алгебра, Векторы и матрицы, Математиче2
ский анализ, Определение и вычисление, Проектирование, Сравнение, ко
торые показаны на рисунке 1.8.
С помощью представленных знаков можно вводить в документы MathCAD
практически все известные математические символы и операторы.
Раздел Символы содержит прописные и строчные буквы греческого ал
фавита, математические символы и символы денежных единиц.
Раздел Программирование содержит операторы (рис. 1.9), используемые
при реализации модульного программирования.

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 13


Рис. 1.9
Операторы модульного программирования

Рис. 1.10
Содержимое раздела Символьные вычисления

Рис. 1.11
Фрагмент раздела Единицы измерения

14 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Раздел Символьные операции содержит оператор символьного вывода ,
ключевые слова, определяющие функции символьных вычислений, а также
модификаторы — специальные элементы, которые используются для изме
нения поведения ключевых слов (рис. 1.10).
Раздел Единицы измерения содержит полный набор единиц измерения
по международной системе СИ, американской системе единиц (USCS) и сис
теме «сантиметр — грамм — секунда» (рис. 1.11).

1.5. РАБОТА С ДОКУМЕНТАМИ


MathCAD
Создание документа в MathCAD может включать ввод и ре
дактирование математических формул, задание форматов отображения со
держимого документа, ввод текстовых описаний и т. д. Документ одновре
менно является и листингом MathCADпрограммы, и результатом выполне
ния этой программы, и отчетом, пригодным для распечатки на принтере или
публикации в Web. Ввод выражений в документ MathCAD осуществляется в
математические или в текстовые области.
Работа с текстовой областью документа. Отметим, что по умолчанию уста
навливается математическая область ввода. Текстовая область может быть
создана следующим способом: установите курсор в нужном месте документа;
нажмите [Ctrl + T], чтобы вставить текстовое поле, или [Ctrl + Shift + T],
чтобы вставить блок текста, либо на вкладке Математика в разделе Облас2
ти щелкните Блок текста или Текстовое поле.
Вводимый текст будет заключен в прямоугольник, отображающий тек
стовую область. Введите или вставьте текст в поле. Текстовая область расши
ряется по мере ввода текста. Для ввода пустой строки нажмите клавишу
[Enter], для перемещения на новую строку внутри текстового поля нажмите
[Shift + Enter].
Чтобы завершить режим ввода текста, необходимо щелкнуть мышью вне
текстовой области. Линии, отображающие границы текстовой области, ис
чезнут.
Перемещение и копирование. Выделенные рамкой текстовые области
можно переносить на другое место, зацепившись за рамку указателем
мыши. Чтобы скопировать часть документа MathCAD, необходимо выде2
лить одну или несколько областей, нажать [Ctrl + C] или [Ctrl + X], затем
щелкнуть на пустом месте того же или другого документа и нажать
[Ctrl + V], чтобы вставить области.
Кроме того, можно на вкладке Математика в разделе Буфер обмена
выбрать команду Копировать или Вырезать, а затем — Вставить.
Редактирование. Для редактирования текстовой области необходимо
щелкнуть на ней мышью. Появится курсор в виде вертикальной черты. Тип
шрифта, размер, стиль и цвет могут быть изменены с помощью вкладки
Форматирование текста (рис. 1.12).
В разделе Шрифт можно выбрать шрифт (например, вид шрифта или
цвет).

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 15


Рис. 1.12
Вкладка Форматирование текста

Рис. 1.13
Вкладка Форматирование текста

В разделе Параграф нажать требуемую кнопку, чтобы форматировать


текст различными способами, например используя маркированный список
или отступ.
Примечание. Настройки стиля шрифта, заданные на вкладке Формати2
рование текста, будут применяться ко всем новым текстовым областям в
документе.
Работа с математической областью документа. Математические форму
лы и выражения в документе MathCAD вводятся в математическую об2
ласть. Математическая область устанавливается по умолчанию. Поэтому
для ввода достаточно позиционировать указатель мыши в нужном месте
документа и щелкнуть левой кнопкой. На экране появится маркер ввода в
виде синего крестика. С этого места можно начинать набор формул.
При необходимости выражения и функции математической области мож
но редактировать и форматировать, используя вкладку Форматирование
формул (рис. 1.13).
Сохранение документа MathCAD. Для сохранения созданного документа
MathCAD в файле необходимо использовать кнопку MathCAD и далее ко
манду Сохранить как. В появившемся диалоговом окне выбрать папку, где
будет сохранен новый файл, и назначить ему имя.

& ВОПРОСЫ И ЗАДАНИЯ ДЛЯ САМОКОНТРОЛЯ


ПО ТЕМЕ 1
1. Основные особенности и возможности математического пакета MathCAD.
2. Что размещается в математической и текстовой областях документа MathCAD?
3. В каких форматах можно сохранить документ MathCAD?
4. Какие вкладки ленты присутствуют в пакете MathCAD PRIME 2.0 и PRIME 3.0?
5. Как можно поменять размер шрифта в документе MathCAD?
6. Выполните следующие операции:

16 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


§ загрузите пакет MathCAD;
§ откройте программное окно на весь экран;
§ расположите панели, как показано на рисунке 1.1;
§ присвойте файлу имя и сохраните его в заданной папке.
7. Выполните следующие операции:
§ загрузите два документа MathCAD;
§ расположите их на экране монитора один над другим, один с другим бок о бок.
8. Выполните следующие операции:
§ в справочнике найдите названия команд, выполняющих функции сортировки;
§ в справочном центре найдите электронный документ с описанием примене
ния этих команд;
§ найдите в справочном центре примеры использования команд сортировки.
9. Выполните следующие операции:
§ позиционируйте курсор на произвольном месте листа;
§ выполните действия Математика/Текстовое поле;
§ в текстовой области введите произвольный текст, содержащий несколько
строк;
§ измените размер, цвет и жирность текста;
§ переместите текстовую область, для чего:
– выделите область с текстом щелчком левой кнопкой мыши;
– подведите курсор мыши к границе области. В этот момент он принимает
форму перекрещенных стрелок;
– удерживая левую кнопку мыши, переместите область в нужное место и
отпустите кнопку мыши;
§ скопируйте текстовую область на первоначальное место, для чего:
– выделите область с текстом при нажатой левой кнопке мыши;
– удерживая курсор в выделенной области, нажмите клавиши [Ctrl + С], ус
тановите курсор в нужное место и нажмите клавиши [Ctrl + V];
§ удалите текстовую область, для чего выделите область текста и нажмите кла
вишу [Delete].

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 17


ТЕМА 2. ВЫЧИСЛЕНИЯ
ТЕМА
В ПАКЕТЕ MathCAD

В
этой главе будут рассмотрены основные (базовые) конст
рукции входного языка MathCAD для программирования простых вычисле
ний в документе MathCAD.

2.1. КОНСТАНТЫ, ПЕРЕМЕННЫЕ,


ОПЕРАТОРЫ ПРИСВАИВАНИЯ И ВЫВОДА
Константы. Входной язык предусматривает работу со сле
дующими часто используемыми типами констант:
§ целочисленные константы (например, 12, –52, 0 и т. д.);
§ вещественные числовые константы, которые могут записываться в од
ной из двух форм: с фиксированной точкой (например, 2.345) и с деся
тичным порядком (в экспоненциальной форме), записываемая в виде a
10p, где a — целочисленная константа или вещественная константа с
фиксированной точкой. Точка означает операцию умножения (клавиша
[*]). Для ввода порядка нажать [Ù] — операция возведения в степень;
§ комплексные константы, записываемые в виде z = a + bi, причем меж
ду величиной мнимой части b и мнимой единицей i не ставится знак умно
жения;
§ строковые константы — любая последовательность символов (в том
числе русские и греческие буквы), заключенные в кавычки (например,
«Это строковая константа»);
§ встроенные константы, которые разделяются на математические и
физические константы:

12345236748964
9 832 3

 832 32
2654 2 64
 274 64

5 72 6

11 234567387649
1 2 1231
11  121 7 313 7 1 9715637
1 1 1
31 1   1
1
18 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME
1232456725879
6
8
9
6
8 26
258 
45
258

3
12 12343567859
6 8989 2
8 1 1  2   8
4

518 

6 48 48 51 1  2  3 6 8

78 3563 8 2 8 89 23


7 1  2 3 !  4
8

18 4"9

 8#3563 8 2 8 89 23
1 1 $$ 2  3 !  4
8

89 23
82 3563 8%37&  8 8 1   2  3  8
4 2

89 23
328 '63  8
""& 8 558 3 1   2  3  8
4 2


38 ("538'93) 438 1  2   3 8

89 23
2 *34 8) 39 8#3563 8  1  ! 8
4 2
23


18 3563 8+",
4) 8 4 1 - 2 -  3 8

58 3563 863238564 26 48 5 1 - 8

68 3563 8
4 8.8* /
43"8 6 1 $-- 8

! 2 
718 * )"6 8#43"&
356789 2 8 7 1 $! 2  3  4 8
89 23

818 * )"6 8#43"&


35678593,330 8 1 $- 2  3 
89 23
8
)38#43564 569 8 4 2 

89
98 3563 816
1  8.8%37&  8 9 1 $- 2 3  8
4 2
!

218 39 68 )"63)38#3632 8 4 1  2 3$  8

1
Переменная. В пакете MathCAD можно использовать следующие пере
менные: простые, индексированные (массивы), дискретные, системные и
размерные.
Имя переменных в MathCAD — это набор латинских и греческих букв,
цифр, символов и знаков подчеркивания. Прописные (большие) и строчные
(малые) буквы определяют имена разных переменных. Начинаться имя долж
но только с буквы. Использование в имени русских букв и пробелов запрещено.
Греческий символ вводится из раздела Символы вкладки Математика,
либо можно ввести сначала латинский символ, а затем нажать сочетание
клавиш [Ctrl + G].
В MathCAD переменную не нужно предварительно описывать: ее тип
определяется автоматически при задании переменной конкретного значе
ния. Незаданные переменные выделяются на экране красным цветом.

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 19


Простая переменная — переменная, значение которой определяется од
ной величиной.
Оператор присваивания. Значение переменной можно задать с помощью
оператора присваивания (:=), имеющего следующий вид:
<Имя_переменной>:=<Выражение>
Для ввода знака присваивания «:=» необходимо нажать клавишу с сим
волом двоеточия [:]. Оператор присваивания, задающий значение некоторой
переменной, должен стоять в документе левее или выше точки использова
ния этой переменной. Оператор присваивания позволяет переназначить зна
чение переменной. До оператора присваивания переменная в документе мо
жет иметь одно значение, а после (правее или ниже) новое значение.
Оператор вывода. Для вывода на экран значения переменной или выра
жения достаточно после выражения нажать клавишу [=]. На экране после
знака [=] выведется численное значение.
Нижние индексы в именах простых переменных (например, xC, xA и т. д.)
вводятся после нажатия кнопки Подстрочный индекс группы Стиль вклад
ки Математика (рис. 2.1).

Рис. 2.1
Ввод нижних индексов имен переменных

Дискретная переменная (в литературе часто используется термин ран2


жированная переменная) — переменная, принимающая ряд значений, ме
няющихся по закону арифметической прогрессии. Дискретная переменная
определяется заданием начального значения, шага и конечного значения.
Если шаг не задан, он предполагается равным 1 или –1. Например,
Name := N1 .. N2,

20 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


где Name — имя переменной; N1 — начальное значение; N2 — конечное
значение. Символ многоточия «..» вводится двойным нажатием клавиши [.]
или матричным оператором 1..n . Если N1 < N2, шаг равен 1; если N1 > N2,
шаг равен –1.
Определение дискретной переменной с произвольным шагом имеет вид:
<Имя перем> := <Нач_знач>; <След_знач> .. <Кон_знач>
Шаг h задается неявно величиной следующего значения и вычисляется
как
h := <След_знач>  <Нач_знач>
Например,
x := 0.1, 0.3..1.5,
здесь шаг равен 0,2.
i := 1..5, j := 5..1,
здесь шаг переменной i равен 1, а шаг переменной j равен –1.
Шаблон дискретной переменной с произвольным шагом можно за
дать матричным оператором 1,3..n в категории Векторы и матрицы разде
ла Операторы вкладки Математика.
Системные переменные (встроенные переменные) задают параметры
работы MathCAD при вычислениях, при работе с файлами и массивами.
К системным переменным относятся:
§ TOL — определяет точность сходимости некоторых функций, таких как
интеграл, производная, odesolve и root (по умолчанию TOL=0.001);
§ CTOL — определяет, насколько точно должно выполняться ограниче
ние в блоке решения, чтобы решение считалось приемлемым при ис
пользовании функций find, minerr, minimize и maximize (по умолча
нию CTOL=0.001);
§ ORIGIN — определяет индекс первого элемента массива (по умолчанию
ORIGIN=0);
§ PRNPRECISION — задает число значащих цифр при записи в ASCII
файл данных с помощью функций WRITEPRN и APPENDPRN (по умол
чанию PRNPRECISION=4);
§ PRNCOLWIDTH — задает ширину столбцов в ASCIIфайлах, создавае
мых при помощи функций WRITEPRN и APPENDPRN (по умолчанию
PRNCOLWIDTH=8);
§ CWD — текущая рабочая папка в виде строки (например: “D:\Work\
Prime2\Data”).
Предустановленные значения системных переменных можно поменять в
любом месте документа. Кроме того, переопределение значения переменной
для всего документа производится в разделе Параметры документа вклад
ки Расчет.
Размерные переменные — числовые переменные и функции, обладаю
щие размерностью и содержащие значения в системе измерения физических

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 21


величин по международной системе СИ, американской системе единиц (USCS)
и системе «сантиметр — грамм — секунда» (СГС). Сделано это для упроще
ния инженерных и физических расчетов, которые MathCAD выполняет с
преобразованием единиц измерения физических величин.
Вставить единицу измерения можно с клавиатуры или из списка единиц
измерений. Для ввода единицы измерения из списка необходимо войти в
соответствующую категорию единиц измерения, которая находится в разде
ле ЕИ (Единицы измерения) вкладки Математика и щелкнуть по требуе
мой единице измерения (рис. 2.2). Помеченная единица измерения появит
ся после оператора масштаба.

Рис. 2.2
Диалоговое окно единиц измерения

Единицы измерения могут быть введены в математическое выражение и


с клавиатуры. Чтобы создать размерную переменную, определяющую, на
пример, длину в метрах, введите выражение, присваивающее переменной L
значение 10, и затем введите букву m либо с клавиатуры, либо из диалогово
го окна, изображенного на рисунке 2.2:
L:=10m.
Поскольку все символы, обозначающие единицы измерения, зарезерви
рованы и имеют предустановленные значения (связанные с размерностью),
то литера m будет распознана MathCAD как метр. Если ранее вы переопреде
лили переменную m, присвоив ей какоелибо значение, то она уже не будет
восприниматься как единица длины.
Индексированные переменные соответствуют массивам MathCAD. Они
будут рассмотрены в теме 3.

22 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


2.2. АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ
MathCAD

Арифметическими операциями в MathCAD являются: сло


жение, вычитание, умножение, деление и возведение в степень. Операции
можно либо вводить с клавиатуры, либо выбрать из категории Алгебра раз
дела Операторы. Обозначение некоторых операций на экране отличается от
обозначения клавиши, нажимаемой для ввода этой операции (табл. 2.1).
1 2 3 4 5 6 2 7 89
7

123456789
5 7 59  3 53  79594539
95459

123456758 9
8 8
8 8 8
8 8
76758 9 8 88 8 88 8
63456758 9 8  8 1 8
5256758 9 8  8  8
355675885568 92 8 2 8 18
1
Ввод математических выражений. Математические формулы и выраже
ния в документе MathCAD вводятся в математическую область. Математиче
ская область устанавливается по умолчанию. Поэтому для запуска формуль
ного редактора достаточно позиционировать указатель мыши в любом сво
бодном месте окна и щелкнуть левой кнопкой. Начальная точка вставки
помечается синим перекрестием . При вводе букв, чисел и операторов
появляется область формул с курсором в виде синей вертикальной линии в
точке вставки. Часть математических выражений можно выделить в группу
(фрагмент) с помощью клавиши пробела, клавиш со стрелками или мышью.
Математические элементы можно группировать по одному либо все одновре
менно. Расположение курсора с левой или правой стороны элемента может
повлиять на группировку.
Если курсор справа, то следующий вводимый символ или оператор ста
вится справа от группы. Например:

Когда курсор слева, то следующий вводимый символ или оператор ста


вится слева. Например:

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


операции или функции. Например, чтобы в выражении 2 + 34 – 16 ввести
оператор деления к сумме 2 + 34, необходимо выделить сумму элементов в
группу. Если курсор будет стоять слева от группы, то при вводе оператора
деления / выражение 2 + 34 станет знаменателем дроби:

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 23


Если курсор будет стоять справа от группы, то выражение 2 + 34 станет
числителем дроби:

Чтобы ввести дробную часть выражения под корень, выделим дробь так,
чтобы курсор стоял слева от нее. Для этого щелкнем мышкой слева от дроби
и нажмем клавишу [Пробел]:

Затем во вкладке Математика разделе Операторы щелкнем по опера


тору квадратного корня:

Пример 2.1. Выполнить программирование и вычисление арифметиче


ских выражений, приведенных в документе, показанном на рисунке 2.3.

Рис. 2.3
Программирование арифметических выражений

Решение. Первоначально зададим значения простых переменных a, b, c,


а затем запрограммируем нужные выражения и операторы.

Рис. 2.4
Использование размерных переменных

24 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Пример 2.2. Используя оператор присваивания и размерные перемен
ные, определить плотность стали (объем V = 2 см3, масса M = 15,7 гм). Опре
делить удельный вес стали.
Решение. Приведено в документе MathCAD на рисунке 2.4. Заметим, что
в операторе присваивания для вывода вычисленного значения можно ис
пользовать оператор вывода (вывод вычисленного значения удельного веса —
переменная g).

2.3. ВСТРОЕННЫЕ ФУНКЦИИ


И ФУНКЦИИ ПОЛЬЗОВАТЕЛЯ
Встроенные функции. Для вычисления значений наиболее
распространенных математических функций в MathCAD определены так
называемые встроенные функции (например, вычисление синуса, корня
квадратного и т. д.). Для обращения к функции необходимо задать ее обо
значение (ее имя или условный символ), а затем аргумент. Если аргументов
несколько, то они вводятся через запятую. Весь набор встроенных функций
разбит по категориям в соответствии с функциональным значением.
Обозначение функции можно ввести с клавиатуры или найти нужную
функцию во вкладке Функции в соответствующей категории. Полный спи
сок функций и их синтаксис можно получить, щелкнув по кнопке fx .
Чтобы найти требуемую функцию в списке, выполните следующие дей
ствия:
§ щелкните значок , чтобы функции отображались в списке в алфавит
ном порядке;
§ начните набирать слово для поиска в поле Функции поиска — в списке
будут отображаться подходящие функции;
§ чтобы увидеть все функции категории, которой принадлежит выбранная
функция, щелкните значок ;
§ щелкните имя функции, чтобы вставить ее в документ.
Функция пользователя. Несмотря на широкий набор встроенных функ
ций, очень часто возникает необходимость дополнить вычисления новыми
функциями. Такие функции будем называть функциями пользователя. Ис
пользование функции пользователя предполагает два момента: описание
функции и обращение к ней.
Описание размещается в документе перед обращением к функции и имеет
вид:
<Имя_функции>(<Список_аргументов>) := <Выражение>
Имя_функции — последовательность символов, удовлетворяющая тем
же правилам, что и имя простой переменной.
Список_аргументов — перечень используемых в выражении перемен
ных, записанных через запятую.
Выражение — любое выражение (не только арифметическое), содержа
щее операции над аргументами. Переменные, входящие в список аргумен
тов, по существу являются формальными параметрами, и их значения не
задаются до описания функции.

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 25


Рис. 2.5
Описание функции пользователя и обращение к ней

Пример 2.3. Составить описание функции пользователя, вычисляющее


расстояние между точками A, B на плоскости.
Решение. Описание приведено на рисунке 2.5. Нижние индексы в име
нах простых переменных (например, xC, xA и т. д.) вводятся после нажатия
кнопки Подстрочный индекс во вкладке Математика.
Для обращения к функции пользователя необходимо записать в каком
либо выражении имя функции и в круглых скобках указать конкретные
значения аргументов функции.
В качестве аргумента могут использоваться не только константы и ариф
метические выражения, но и имена переменных, значения которых должны
быть определены до обращения к функции (рис. 2.5).

2.4. ОПЕРАТОРЫ
МАТЕМАТИЧЕСКОГО АНАЛИЗА
В MathCAD имеется ряд операторов, позволяющих вычис
лить значения сумм, произведений, производных, определенного интегра
ла, пределов. Такие операторы часто называют расширенными арифметиче2
скими операторами, или операторами математического анализа. Обраще
ние к этим операторам (значок оператора) можно ввести в документ MathCAD
из категории Математический анализ раздела Операторы (рис. 2.6).

Рис. 2.6
Операторы математического анализа

26 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


При вводе оператора задается шаблон для последующего заполнения
числовыми или символьными значениями. Приведем операторы, часто ис
пользуемые при решении научноинженерных задач.
Для ввода оператора вычисление суммы в документ необходимо щелк
нуть по кнопке и заполнить поля в появившемся шаблоне (например,
10
2 k). Аналогичные действия необходимо выполнить и при вводе операторов
k 11
произведения , производной интеграла и предела .
Чтобы ввести двойной интеграл, надо щелкнуть по кнопке вызова опера
тора интеграла, установить курсор на поле шаблона, куда вводится интегри
руемое выражение, и повторно вызвать оператор интеграла (рис. 2.7).

Рис. 2.7
Ввод двойного интеграла

Пример 2.4. Используя рассмотренные операторы математического ана


лиза, вычислите суммы, произведения, производные и интегралы, приве
денные на рисунке 2.8.

Рис. 2.8
Операторы
математиче
ского анализа

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 27


Решение. Необходимые конструкции используются в документе Math
CAD, который показан на рисунке 2.8. Обратите внимание, что ряд вычисле
ний оформлен в виде функций пользователя. Это дает определенные удобст
ва при использовании операторов математического анализа.
Символьное вычисление с использованием операторов математическо"
го анализа. Используя операторы математического анализа, результат мож
но получать не только в виде чисел, но и в символьном виде, т. е. в виде
формул. Такие вычисления будем называть символьными.
Подробно символьные вычисления описаны в теме 5. Здесь рассматрива
ются символьные вычисления с помощью оператора символьного вывода ®,
который вводится из категории Математический анализ раздела Операто2
ры. Этот оператор ставится после записи соответствующего оператора мате
матического анализа.
Пример 2.5. Используя операторы математического анализа, вычислите
суммы, произведения, производные, приведенные на рисунке 2.9, в сим
вольном виде.

Рис. 2.9
Символьные вычисления

Рис. 2.10
Проверка правильности вычисления первообразной функции

Решение. Необходимые конструкции показаны в документе MathCAD,


фрагмент которого приведен на рисунке 2.9.
На рисунке 2.10 приведен пример вычисления первообразной функции и
проверки правильности полученной функции с использованием для этой
цели оператора дифференцирования.

28 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


ВОПРОСЫ И ЗАДАНИЯ ДЛЯ САМОКОНТРОЛЯ
ПО ТЕМЕ 2

1. Какие переменные можно использовать в алгоритмах, реализованных в пакете


MathCAD?
2. Что такое дискретная переменная и как выглядит задание дискретной перемен
ной, принимающей значения 0,3; 0,6; ...; 1,8?
3. Какие арифметические операции определены в MathCAD?
4. Как записывается и вводится оператор присваивания?
5. Используя встроенные функции вкладки Функции, введите и вычислите пока
занные ниже выражения (сравните полученные результаты с приведенными
результатами):
ln(64)
23,1 7 3 3 7 6 5
16 50,05;
4 5 63!

1 2 12
3
3 cos 2 7 6 7 sin 6 4
8 6 3 9 50,156;
1 2
8 6 9
8 tan 2 7 5 log(44) 9

9
1 2 5249 1,302.
3 1 6
1258,6
678
e 48,4 5e
3

6. Используя оператор присваивания, задайте переменным x, y, z значения приве


денных в задании 5 арифметических выражений (т. е. первое выражение опре
деляет переменную x, второе — переменную y и т. д.).
7. Как описывается функция пользователя и как выглядит обращение к функции
пользователя?
8. Составьте описание функции, вычисляющей расстояние между двумя точками
в трехмерном евклидовом пространстве.
9. Используя функцию пользователя предыдущего задания, вычислите расстоя
ние между точками C(2,3; 4; 5,6) и D(–4,0; 3,1; –0,0).
10. Составьте функцию пользователя, вычисляющую факториал числа n:

n ! 1 n 2 (n 3 1) 2 (n 3 2) 242 2 2 1.

Протестируйте эту функцию для различных значений n.


11. Используя операторы математического анализа, выполните следующие чис
ленные вычисления:
2
x
а) 5 x2 1 1 dx;
0
45
б) 55 (2 3 x4 4 13 3 y5 )dxdy;
13
20 1i
в) 6e 2 .
i 23

12. Используя операторы математического анализа, выполните следующие сим


вольные вычисления:

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 29


3 4i
а) 9e 2 ;
i 50

1 dxd (x 4 1)2 dx;


5 2
б)
2 6 7(x2 4 1) 6 1 8 2

3
5
в)
ex 6 x2dx.
3

13. Вычислите момент инерции стержня (масса M = 5 кг, длина L = 2 м), вращающе
гося относительно оси, проходящей через его конец и перпендикулярной ему:
L
M
I 1 3 x2 2 dx;
L
0
I 1 6,667 kg 2 m2 .
14. Вычислите момент инерции прямоугольной пластины (масса M = 5 кг, длина
L = 2 м, ширина h = 10 см) относительно оси, перпендикулярной ей и проходя
щей через ее центр:

M 1 (h2 2 L2 )
I3 ;
12
I 3 1,671kg 1 m2 .

15. Рассчитайте потенциальную энергию E тела массой m = 5,67 кг, поднятого на


высоту h = 120 см с использованием размерных переменных (E = mgh).

30 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


ТЕМА 3. МАССИВЫ
ТЕМА
В ПАКЕТЕ MathCAD

В этой теме будут рассмотрены следующие вопросы: созда


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

3.1. ОПРЕДЕЛЕНИЕ И ОБОЗНАЧЕНИЕ МАССИВА


В ПАКЕТЕ MathCAD
При работе с массивами используются такие понятия, как
скаляр, вектор и матрица. Одиночное число называется скаляром (в про
граммировании — простая переменная). Общий термин для вектора или мат
рицы — массив. В одномерном массиве (векторе) положение элемента опреде
ляется одним индексом (например, xi). В двумерном массиве (матрице), кото
рый имеет вид прямоугольной таблицы, положение элемента определяется
двумя индексами (например, Ai,j). Первый индекс задает номер строки, вто
рой — номер столбца, на пересечении которых находится данный элемент
матрицы. Количество строк и столбцов матрицы определяет размер матрицы.
Вектор можно рассматривать как матрицу, содержащую один столбец.
Для работы с векторами и матрицами система MathCAD использует вклад
ку Матрицы/таблицы строки меню, изображенную на рисунке 3.1.

Рис. 3.1
Содержимое вкладки Матрицы/таблицы

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 31


Рис. 3.2
Операторы для действий с векторами и матрицами

Операторы работы с векторами и матрицами выбираются при нажатии


на кнопку (рис. 3.2).
Эти операторы выполняют следующие функции:
— оператор векторизации, поэлементно применяет операторы или
функции к векторам или матрицам;
— задание индекса у элемента массива;
— выделение столбца матрицы;
— выделение строки матрицы;
— транспонирование вектора или матрицы;
— вычисление нормы вектора или матрицы;
— оператор векторного произведения, вычисляет векторное произве
дение двух векторов или вектора и матрицы.

3.2. СОЗДАНИЕ МАССИВОВ


В ПАКЕТЕ MathCAD
Создание массива с использованием шаблона. Для создания
массива необходимо ввести переменную — имя массива, ввести оператор
присваивания и нажать кнопку Вставить матрицу . В появившемся
шаблоне выделить мышкой требуемую конфигурацию массива (рис. 3.3).
Переход от одного поля шаблона к другому осуществляется с помощью
клавиши [Tab] или щелчком мыши непосредственно на нужном поле. Значе

32 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 3.3
Вставка матрицы 2´3

нием элемента матрицы может быть число или выражение. При выводе эле
ментов массива введенные выражения вычисляются.
Для обращения к элементу массива вводится имя массива, нажимается
клавиша «левая квадратная скобка» (т. е. «[») или кнопка Mi, а затем вво
дятся нужные индексы (или индексные выражения).
После ввода индексов необходимо выйти из строки нижних индексов,
нажав клавишу [®].
Создание массива вводом его элементов с клавиатуры. Чтобы вставить и
заполнить вектор, надо ввести переменную, затем оператор присваивания и
«[» (левую квадратную скобку). Появится одноэлементный массив:

Ввод элементов вектора в него осуществляется последовательно с нажа


тием клавиши [Tab] после каждого введенного числа для того, чтобы вста
вить новую строку.
Чтобы вставить и ввести элементы матрицы, надо, как показано выше,
создать одноэлементный массив. Элементы 1й строки матрицы вводятся по
строчно, нажимая клавиши [Shift + Пробел] после каждого числа. Переход на
2ю строку производится с помощью комбинации клавиш [Shift + Enter] или
установкой указателя на последний элемент строки и нажатием клавиши
[Tab]. Все последующие элементы заносятся с помощью последовательного
ввода элемента и клавиши [Tab].
Замечание 3.1. В пакете MathCAD максимальное число индексов у эле
ментов массива не превосходит 2. Однако каждый элемент массива в свою

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 33


очередь может являться вектором или матрицей. Это позволяет создавать
массивы практически любой размерности.
Пример 3.1. Используя разные способы вставки векторов, создайте два
вектора a и b одинаковой размерности 4. Вычислите их сумму, скалярное и
векторное произведение.
Решение. Конструкции, осуществляющие требуемые вычисления, пока
заны на рисунке 3.4. Для вычисления скалярного произведения двух векто
ров перемножим их (рис. 3.4б). Для получения векторного произведения
двух векторов введем оператор умножения между ними, поместим курсор в
левую часть области формул и дважды нажмем клавишу [Пробел], чтобы
выделить область формул. На вкладке Математика, в разделе Операторы
выберем оператор Векторизация в списке Векторы и матрицы. Введем [=],
чтобы вычислить выражение. Векторы будут поэлементно перемножены
(рис. 3.4в).

Рис. 3.4
Ввод элементов вектора

Пример 3.2. Создайте две матрицы размером 3´4. Вычислите их сумму.


Решение. Создайте матрицу A с использованием шаблона, а матрицу B
вводом его элементов с клавиатуры. Введите имя первой матрицы, затем
оператор сложения, затем имя второй матрицы и оператор вывода [=]. Мат
рицы будут поэлементно просуммированы (рис. 3.5).

Рис. 3.5
Ввод матриц и действия с ними

Системная переменная ORIGIN. Индексные выражения у элементов век


торов и матриц в пакете MathCAD по умолчанию начинают свои значения с
нуля, т. е. строки с номером нуль и столбца с номером нуль. Начальное значе
ние нумерации хранится в системной переменной ORIGIN, которая по умолча
нию равна нулю. Однако обычно в матричной алгебре значения индексов начи
наются меняться с значения 1 и возникает необходимость переопределить зна
чение этой системной переменной. Это можно сделать двумя способами.

34 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 3.6
Формирование массивов с разным значением ORIGIN

Рис. 3.7
Изменение значения системной переменной ORIGIN

В первом способе значение переменной ORIGIN можно изменить с помо


щью оператора присваивания. В этом случае новое значение будет действо
вать правее и ниже этого оператора присваивания до следующего переопре
деления переменной ORIGIN. Этот способ иллюстрируется на рисунке 3.6.
Первоначально в приводимом фрагменте ORIGIN=0 и этим объясняются
размеры созданных вектора и матрицы. Затем с помощью оператора при
сваивания ORIGIN получает новое значение, равное 1. Это вызывает измене
нии размеров созданных вектора и матрицы.
Второй способ изменения значений системной переменной ORIGIN пред
полагает обращение ко вкладке Расчет ленточного меню и открытие списка
значений переменной ORIGIN (рис. 3.7). В этом списке (указан прямой ли

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 35


нией в нижнем правом фрагменте рисунка 3.7) выбирается одно из двух
значений: 0 или 1, что и будет определять значение ORIGIN по всему доку
менту MathCAD.
Следует отметить, что первый способ имеет более высокий приоритет: с
помощью оператора присваивания можно изменить значение ORIGIN в лю
бом месте документа MathCAD, и это можно делать неоднократно.

3.3. ВЫДЕЛЕНИЕ СТОЛБЦА


И СТРОКИ МАТРИЦЫ
В некоторых задачах обработки массивов возникает необхо
димость выделить определенный столбец или строку матрицы, чтобы рабо
тать с ними как с вектором или векторстрокой.
Выделение столбца матрицы. Для эффективного выполнения такого
выделения необходимо задать индекс столбца матрицы (который часто на
зывают верхним индексом матрицы), значение которого позволяет обращать
ся к отдельному столбцу массива. Чтобы ввести такой индекс, необходимо
ввести имя массива, а затем щелкнуть по кнопке в разделе Операторы с
векторами/матрицами вкладки Матрицы/таблицы (см. рис. 3.2). Затем в
появившихся угловых скобках ввести индекс выделяемого столбца (с уче
том значения системной переменной ORIGIN).
Пример 3.3. Из второго и четвертого столбцов матрицы В примера 3.2
сформировать векторы c, d.

Рис. 3.8
Выделение столбцов матрицы

Решение. Конструкции, формирующие эти векторы, приведены на ри


сунке 3.8. Заметим, что значение ORIGIN в этом примере равно 1.
Выделение строки матрицы. Для выделения из матрицы нужной строки
следует задать индекс этой строки. Для этого необходимо ввести имя матри
цы, а затем щелкнуть по кнопке в разделе Операторы с векторами/матри2
цами вкладки Матрицы/таблицы (см. рис. 3.2) или нажать клавиши
[Ctrl + Shift + R]. Затем в появившихся угловых скобках ввести индекс вы
деляемой строки (с учетом значения системной переменной ORIGIN).
Пример 3.4. Из первой и третьей строки матрицы В примера 3.2 сформи
ровать векторстроки e и f.

Рис. 3.9
Выделение строк матрицы

36 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Решение. Конструкции, формирующие эти строки, приведены на рисун
ке 3.9. Заметим, что значение ORIGIN в этом примере равно 0.
Задание 3.1. Составьте фрагмент документа, в котором формировались
векторстроки e и f, если значение ORIGIN равно 1.

3.4. ТАБЛИЦЫ И РАБОТА С НИМИ


В ПАКЕТЕ MathCAD
Таблица представляет собой область, в которой определяют
ся наборы данных. Таблица имеет несколько компонентов:
§ столбец для каждого набора данных;
§ строка заголовка для именования каждого набора данных;
§ местозаполнители единиц измерения во второй строке для задания еди
ницы измерения для каждого набора данных.
Создание таблиц. Таблицы могут создаваться одним из двух способов:
§ использование вкладки Матрицы/таблицы на главной ленте;
§ использование сочетаний клавиш.
Для ввода таблицы щелкните в месте документа, куда нужно поместить
таблицу. На вкладке Матрицы/таблицы в группе Матрицы и таблицы
выберите пункт Вставить таблицу, а затем перетащите указатель, чтобы
задать нужные размеры таблицы. Выберите количество элементов, чтобы
определить количество наборов данных и размер самого длинного из них.
Примечание 3.1. Максимальный размер таблицы, которую можно вста
вить из ленты, составляет десять строк по десять столбцов. Чтобы вставить
дополнительные строки или столбцы используются комбинации клавиш:
§ добавить новую строку [Shift + «Ввод»];
§ добавить новый столбец [Shift + «Пробел»].
В качестве примера рассмотрим таблицу, показанную на рисунке 3.10.
Наборы данных n, w1, w2 имеют по пять элементов каждый, но только
для двух наборов данных w1, w2 определена единица измерения (кг). После
задания наборов данных в таблице их можно использовать как векторы,

Рис. 3.10
Пример таблицы данных

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 37


имена которых определяются названиями столбцов таблицы (см. рис. 3.10).
В документе показаны результаты выполнения векторных операций над
наборами w1, w2, причем результаты также имеют соответствующие едини
цы измерения.
Примечание 3.2. Таблицы не могут быть вложенными друг в друга, и они
предназначены только для ввода данных, но не для вывода.

3.5. ОСНОВНЫЕ ФУНКЦИИ


ОБРАБОТКИ МАССИВОВ
Пакет MathCAD содержит большой набор встроенных функций:
§ позволяющих возвращать различные характеристики массивов, созда
вать новые матрицы и преобразовывать существующие, обрабатывать
массивы;
§ облегчающих решение широкого круга задач линейной алгебры.
Вызов функций осуществляется из раздела Функции с векторами/мат2
рицами вкладки Матрицы/таблицы. Заметим, что обращение к функции
можно также ввести с клавиатуры. Аргументы функции вводятся в круглых
скобках и, если их несколько, отделяются друг от друга запятой.
При установке курсора на выбранную функцию выводится краткая ин
формация о параметрах выбранной функции и ее назначении. Ниже приво
дится несколько категорий функций, нашедших широкое применение для
обработки векторов и матриц. При этом прописными буквами будут обозна
чаться имена матриц, а строчными — имена векторов.
Функции определения характеристик массива. Эти функции вычисля
ют размеры массива и диапазон изменения его элементов. Имена и назначе
ние функций приведены в таблице 3.1.
1 2 3 4 5 6 2 7 89
7
123 456789
36789 38 9 3 7533
 123 456789
36789 38  3 7533
123   9
36 7 3879  39   33887 33
123   9
36 7 3779  39   33887 33
1123 456789
36789 39   33   313
1123 456789
37 83 89   39   33   313
1

Рис. 3.11
Вычисление характеристик массивов

38 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Пример 3.5. Использование функций из таблицы 3.1 показано на рисун
ке 3.11.
Формирование матриц специального типа. Встроенные функции Math
CAD, осуществляющие формирование матриц специального типа, приведе
ны в таблице 3.2.
1 2 3 4 5 6 2 7 89
7
 123 4567869
3
8 8 93 6 937 689367
657313
4567869
3 85  937 6893 3 53 85 835 5653 5 3
1123
55 
 98
365
883
 56313
4567869
37 689335 56531 323
7
36
3 
83 9 883
 13323
 1 323
1

4567869
37 6893
 8
 !"3
37 68!33357
 !783
 123 
7
783
4567869
37 68937 87!"3
37 68!33357
 !783
7

123 783
1

Рис. 3.12
Формирование матриц специального типа

Пример 3.6. Формирование матриц специального типа с использованием


функций из таблицы 3.2 показано на рисунке 3.12.
Заметим, что значение системной переменной ORIGIN в этом фрагменте
равно 0. Докажите это, используя определение матрицы М и формирование
вектора b.
Формирование новых массивов из существующих. Функции MathCAD
для формирования новых массивов из существующих массивов приведены в
таблице 3.3.
Пример 3.7. Используя функции таблицы 3.3, сформировать новые мат
рицы из матриц, приведенных на рисунке 3.13.

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 39


1 2 3 4 5 6 2 7 8987


12343 567897
38 937 66 9 833933636362379 838 933933
6398 369 66 3963 763
567897
38 937 66 9 833 32379 838 93393363

12343 98 369 66 3963 663
 
3 567897
368 79
236 7 
3 76933363393 6333633
12323232343 8 7933
1

Рис. 3.13
Формирование исходных матриц

Рис. 3.14
Формирование новых матриц

Решение. Первоначально сформируем исходные матрицы, показанные


на рисунке 3.13. Затем сформируем новые матрицы, приведенные на ри
сунке 3.14.
Специальные характеристики матрицы. К специальным характеристи
кам матрицы можно отнести функции, определяющие такие характеристи
ки матриц, как след, ранг, нормы и другие величины, через элементы исход
ной матрицы. Некоторые функции MathCAD приведены в таблице 3.4.
1 2 3 4 5 6 2 7 89
7

123 456789
3 3 7533 3 36789397 3 787538 3
79738 93 753
 123 456789
389 318379539   23  3 7533
 123 456789
38  36 7 39   388733

 123 456789
3 973 3  3 7533 3 3 97673 2 2    3
 1!  1!

1
40 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME
Рис. 3.15
Вычисление специальных характеристик матриц

Пример 3.8. Вычислить специальные характеристики матриц D и M,


элементы которых приведены на рисунке 3.15.
Решение. Вычисление характеристик показано на рисунке 3.15.

3.6. ВЫЧИСЛЕНИЯ С МАССИВАМИ


Над векторами и матрицами можно производить вычисле
ния точно так же, как и над числами и простыми переменными. Некоторые
из операторов MathCAD имеют особые значения в применении к векторам и
матрицам. Например, символ умножения означает просто умножение, когда
применяется к двум числам, но он же означает скалярное произведение,
когда применяется к векторам, и умножение матриц — когда применяется к
матрицам.
В таблице 3.5 представлены векторные и матричные операторы MathCAD.
Многие из этих операторов доступны из соответствующих палитр инстру
ментов. Отметим, что операторы, которые имеют в качестве аргумента век
тор, требуют векторстолбец, а не векторстроку.

1 2 3 4 5 6 2 7 89
7

123456789 1
5 5 1275 739
3 739 779

123456376829
818 9 8 1234596
89586263
8 83989 8 8
7 83989 8

9 3468 4 4 996
8 3 v  2 u . 86
4 84538726
84739
7663768 8189 8  1
44687486263
48
9
73468 4 996
8 4766376829
7 8 878!8748
8189 8
234563768 
4" 488 845348"
8 93487 8
4898

123456376829
76
8 4766376829
7 8 8786
4 98!8
8189 8 748
4" 488 845348"
8 93487 8
48
7 83986
4 8
88


#663768 9 $8 #67
89586263
829
7 8 83989 8 8

45637686
4 9
7 8 87884538726
847394468748
487829
7 8 8%88 %8 
4878
4" 48
9 398 2298 8%8 8 %8 #4"96
8 889542 86263
829
7 8 8
1
РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 41
1 2 3 4 3 5 6 7 8 9 7
5


123456789 1
5 5 1275 739
3 739 779

1234567528 1 94 248554 244 9282


2748
4698898
98
469 7528 888 8 2
2745 8
46988
469889885789
248
 94 7928 597 35 286 
268
3 67528  9
4 7928 8818 8 1 94 2488983 5582
274 8
46988


27279287 3 8 8 8 !
75 248 282
2748
469887 8"8
1 1 9248842#2783 6 475$8
4698828
42#278
4698 12 8
8%82528 958
&'6 27928
4 1
698 128 "8 1 9248
46985'6 478388


(97 8 23456 8 ))8 )8 1 9248 29 978 2 v* 8
 1"

(2426
97 748 ))8 )8 15 6  2482426
97 7483 6 475$8
46988
1234567528#659 1 9248 234567528#659 227928288988%8
227928 8388 38 2345688462
8#65239
98
1
Используя оператор векторизации, можно выполнить любую скалярную
операцию или функцию поэлементно с вектором или матрицей.
Введем следующие обозначения: для матриц — A и M, для векторов — v
и u, для скалярных величин — z.
Пример 3.9. Даны матрица М и вектор у (рис. 3.16). Выполнить вектор
ные и матричные операции над этими массивами.
Решение. На рисунке 3.16 показан фрагмент документа MathCAD, в ко
тором выполнены необходимые операции. Объясните:
· почему векторное произведение векторов z и y дало нулевой вектор;

Рис. 3.16
Операции над массивами

42 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


· почему произведение матрицы М на обратную дало единичную матрицу,
в которой на главной диагонали стоят 1, а все остальные элементы рав
ны 0.
Пример 3.10. Дана система линейных алгебраических уравнений:
4у 1 2 2 z 3 13;
5
73x 1 2 2 z 3 63;
55 2 x 1 у 1 3 2 z 3 50.
8
Необходимо найти решение этой системы и выполнить проверку найден
ного решения.

Рис. 3.17
Решение системы линейных алгебраических уравнений

Решение. Первоначально сформируем матрицу K из коэффициентов сис


темы и вектор q из значений правой части системы (рис. 3.17). Получаем
систему уравнений K × d = q, где вектор d имеет проекции x, y, z, т. е. являет
ся искомым решением системы. Используя обратную матрицу, вычисляем
решение системы и делаем проверку, а именно: произведение K × d равно
вектору q (получено тождество левой и правой части исходной системы урав
нений), а разность K × d – q есть нулевой вектор.

3.7. ФУНКЦИИ СОРТИРОВКИ ЭЛЕМЕНТОВ


ВЕКТОРОВ И МАТРИЦ
В системе MathCAD используются функции сортировки —
перестановки элементов векторов и матриц, которые приведены в таблице 3.6.
Пример 3.11. Используя функции таблицы 3.6, выполнить различную
сортировку вектора у и матрицы М (рис. 3.18).
1 2 3 4 5 6 2 7 89
7
1123 45678659
3 75939
7565939356
3956 7 8383 83
 1123 67 59
3 75939356 75356
3
67 59
3765
3 768337
8356 53753575678659 3
 1323 5
 3375 3
67 59
3765
3 768337
8356 53753575678659 535
 
1323 33765
3
1
РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 43
Рис. 3.18
Сортировка элементов массивов

Решение. На рисунке 3.18 приведен документ MathCAD, где показаны


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

& ВОПРОСЫ И ЗАДАНИЯ ДЛЯ САМОКОНТРОЛЯ


ПО ТЕМЕ 3
1. Как выглядит обращение к элементу массива MathCAD?
2. Что обозначают нижние индексы у элементов массива MathCAD?
3. К какому типу переменных относятся нижние индексы?
4. Какую размерность массива имеет переменная с одним нижним индексом? С дву
мя нижними индексами?
5. Что определяет системная переменная ORIGIN?
6. Какими способами можно изменить значение системной переменной ORIGIN?
7. Как выделить столбец матрицы?
8. Как выделить строку матрицы?
9. Найдите определитель и обратную матрицу для матриц:
21 2 3 3 211 111 3 3
A :6 4 4 5 115; B :6 4 2 12 7 5.
44 55 44 5
77 8 9 8 79 3 13 58
10. Используя операции со столбцами, получите матрицу С перестановкой 2го и 3
го столбцов матрицы A из задания 9.
11. Создайте две матрицы Q1, Q2 размером 3´4. Ранг первой матрицы должен быть
равен 3, а второй равен 2. Для вычисления ранга используйте соответствующую
функцию MathCAD.
12. Вычислите матрицу 2 × A × B – 3 × C × D, где

2 0 11 3
2 2 3 11 12 4 3 4 1 12 5
4 5
A :6 4 0 3 12 11 3 5; B :6 4 11 0 5;
44 55
41 25
7 5 1 1 14 1 8 44 55
7 12 3 8
2 1 113
2 1 12 1 4 3 4 12 0 5
C :6 4 13 1 0 5 5; D :6 4 5.
44 2 0 3 11 55 4 3 11 5
7 8 4 2 11 5
7 8

44 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


13. Решите систему линейных уравнений и проверьте найденное решение. Опреде
лите ранг матрицы системы.

51 1 x1 2 4 1 x2 3 3 1 x3 2 7 1 x4 4 3;
6628 1 x1 2 2 1 x2 2 9 1 x3 2 3 1 x4 4 22;
7
63 1 x1 2 6 1 x2 3 5 1 x3 2 3 1 x4 4 5;
684 1 x1 2 8 1 x2 2 3 1 x3 2 4 1 x4 4 23.

14. Выясните, являются ли линейно независимыми векторы p, q, r:


2 14 3 21 3 223
p 6 4 15 5; q 6 4 2 5; r 6 4 3 5.
44 55 44 55 44 55
7 113 8 728 768
Напомним, что векторы линейно независимы, если смешанное произведение
(p ´ q) × r не равно нулю.
15. Из первых двух строк матрицы D (см. задание 12) сформируйте матрицу R1, а
из двух последних строк — матрицу R2. Выясните, являются ли эти две матри
цы перестановочными, т. е. выполняется ли матричное равенство R1 × R2 = R2 × R1.
Для проверки этого тождества вычислите евклидову норму матрицы R1 × R2 –
R2 × R1. Если норма матрицы имеет значимую величину (например, ³ 10–10), то
матрицы R1, R2 не являются перестановочными.
16. Что является результатом операции умножения векторстроки на вектор? Со
ставьте фрагмент документа MathCAD для проверки правильности ответа.
17. Что является результатом операции умножения вектора на векторстроку? Со
ставьте фрагмент документа MathCAD для проверки правильности ответа.
18. Дана матрица
2 0.5 11 3
4 1 12.3 5
4 5
B :6 4 11 0 5.
4 1.9 0.2 5
44 5
7 10.2 3 58
19. Используя оператор Векторизации, сформируйте матрицу C, элементы кото
рой равны синусу соответствующего элемента матрицы B.

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 45


ТЕМА 4. ГРАФИКА
ТЕМА
В ПАКЕТЕ MathCAD

Вэтой теме рассматривается представление данных в виде


двумерных графиков в декартовых и полярных координатах, трехмерных
графиков поверхностей, линий уровня поверхностей, гистограмм, изобра
жения векторных полей, пространственных кривых.

4.1. ОСНОВНЫЕ ИНСТРУМЕНТЫ


ДЛЯ ПОСТРОЕНИЯ ГРАФИКОВ
По количеству аргументов у отображаемой функции графи
ки можно разбить на две группы: графики функций одной переменной (или
двумерные графики 2D) и графики функций двух переменных (или трехмер
ные графики 3D).
Задание типа (формата) графика осуществляется в разделе Вставить
график вкладки Графики (рис. 4.1).
В MathCAD могут использоваться следующие типы графиков.

Рис. 4.1
Задание типов графиков

46 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


График XY. Служит для построения графика функции y = f (x) или для
отображения точек на плоскости (xi, yi).
Полярный график. Служит для построения графика функции r(j), за
данной в полярных координатах, где полярный радиус r зависит от полярно
го угла j.
Контурный график. Строит диаграмму линий уровня (изолинии) функ
ции вида z = f (x, y), т. е. отображает точки, в которых данная функция при
нимает фиксированное значение z = const.
3D"график. Служит для точечного представления элементов матрицы или
отображения значений функции z = f (x, y) в заданных точках (xi, yi). Эта кноп
ка может также использоваться для построения пространственных кривых.

4.2. ПОСТРОЕНИЕ ГРАФИКОВ ФУНКЦИИ


ОДНОЙ ПЕРЕМЕННОЙ
В ДЕКАРТОВОЙ СИСТЕМЕ КООРДИНАТ

Построение графика одной переменной включает следующие этапы.


1. Задайте функцию или выражение, значения которых будут представ
лены графиком (например, f (x) := sin(x)3). Используя дискретную пере
менную, установите значения аргумента в нужном диапазоне (например,
x := 0,0.1 .. 10). Чем меньше шаг дискретной переменной, тем более плав
ной будет кривая графика.
2. Введите шаблон графика, щелкнув по кнопке в разделе Вста2
вить график вкладки Графики. На экране появится шаблон (рис. 4.2).

Рис. 4.2
Поля шаблона графика функции одной переменной:
1 — область построения графика; 2 — легенда; 3 — поле ввода единицы измерения оси Y; 4 —
местозаполнитель оси Y; 5 — местозаполнитель оси X.

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 47


3. В местозаполнителе оси Y (позиция 4) введите функцию f (x) или ее
формулу (например, sin(x)3). Если функция имеет размерность (метры, ки
лограммы и т. д.), то в поле ввода единицы измерения оси Y (позиция 3)
вставьте из раздела Единицы измерения вкладки Математика соответст
вующую единицу измерения.
4. Перетащите легенду оси Y в левую сторону:

5. В местозаполнителе оси X (позиция 5) введите переменную функции


и, если необходимо, вставьте соответствующую единицу измерения:

6. Нажмите клавишу [Enter] или щелкните мышкой в стороне от шабло


на. Появится график с линейной кривой, который будет иметь вид, показан
ный на рисунке 4.3.

Рис. 4.3
Построение графика функции одной переменной

Изменение диапазонов по осям X и Y позволяет изменять масштаб, что


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

48 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


ния (первого, второго или последнего). Рядом со ставшим черным значением
деления по умолчанию появится курсор. Удалите значение деления оси и
введите новое значение. При изменении первого или последнего деления
изменится видимый диапазон графика. При изменении первого или второго
деления изменится интервал между делениями. Нажмите клавишу [Enter]
или щелкните мышкой в стороне от графика. Все деления оси соответствен
но изменятся.
Пример 4.1. Изменить диапазоны осей так, чтобы увеличить часть гра
фика, выделенного окружностью (рис. 4.4а).
а

Рис. 4.4
Масштабирование
графика

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 49


Решение. Установите диапазон оси X c 2,5 до 4,0. Для этого замените на
оси X крайние значения 0 и 10 на 2,5 и 4,0 соответственно. Установите диа
пазон оси Y c –0,25 до 0,25. Для этого замените на оси Y крайние значения –
1 и 1 на –0,25 и 0,25 соответственно. Нажмите клавишу [Enter] или щелкни
те мышкой в стороне от графика. Появится график с линейной кривой,
который будет иметь вид, показанный на рисунке 4.4б.
Форматирование 2D графиков. Оформление графика требуемым обра
зом может быть выполнено путем использования инструментов раздела
Стили вкладки График. Окно Стили с этими инструментами показано на
рисунке 4.5.

Рис. 4.5
Окно Стили

Узловые точки (точки, для которых вычисляются координаты) графи


ков часто требуется выделить какимнибудь символом. Список Символ по
зволяет выбрать отметки для базовых точек графика каждой из функций,
такие как: нет — без отметки; ´ — наклонный крестик; + — прямой кре
стик; + — квадрат и др.
Список Стиль линий позволяет выбрать типы линий: непрерывная, пунк
тирная, штрихпунктирная и др.
Список Цвет кривой позволяет выбрать цвет линии или символа на гра
фике.
Список Толщина кривой позволяет выбрать толщину линии или символа
графика.
Список Цветовая схема позволяет установить изображение контурного
графика в виде цветных контуров.
Построение нескольких графиков на одном рисунке. В MathCAD на од
ном рисунке можно отобразить несколько функций. Для этого необходимо
выполнить следующие действия:
§ поместить курсор рядом с именем функции оси Y; щелкнуть Добавить
кривую на вкладке График появится новый местозаполнитель оси Y под
текущим местозаполнителем;
§ в новый местозаполнитель оси Y ввести имя или тело функций;

50 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


§ поместить курсор справа от имени переменной оси X; щелкнуть Доба2
вить кривую на вкладке График появится новый местозаполнитель оси X
под текущим местозаполнителем; в поле местозаполнителя оси X ввести
имя переменной добавляемой функции.
Примечание 4.1. Если у всех функций одинаковая переменная, то доста
точно ввести ее только один раз.
Примечание 4.2. Когда курсор будет помещен в крайнюю левую точку
ввода выражения оси и будет добавлено выражение оси, появится местоза
полнитель оси над текущим местозаполнителем.
Пример 4.2. Построим на одном рисунке графики двух функций sin(x) и
cos(x) × e–0,2x для x Î [0, 10].
Решение. Построение содержит следующие шаги.
1. Задание дискретной переменной x и определение функции пользова
теля g(x) = cos(x) × e–0,2x (рис. 4.6).

Рис. 4.6
Построение на одном рисунке двух кривых

2. Вызов шаблона графика, ввод в местозаполнитель оси Y тела первой


функции sin(x). Установка курсора справа от имени введенной функции и
выполнение действия Добавить кривую. Ввод в появившийся местозапол
нитель имени второй функции.
3. Перенос легенды оси Y в левую сторону от шаблона.
4. Ввод в местозаполнитель оси X переменной x.
5. Щелчок указателем мыши за пределами графика.
6. С использованием раздела Стили вкладки График изменение типа,
цвета и толщины кривых так, как это показано на рисунке 4.6.
Графическое представление элементов одномерных массивов (проек"
ций вектора). Для этого в местозаполнитель оси X вводится переменная,

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 51


являющаяся индексом у элемента одномерного массива, а в местозаполните
ле оси Y стоит обращение к элементу соответствующего массива.
Пример 4.3. Отобразить на одном рисунке элементы двух векторов с про
екциями:
1
xi 2 341 4 5 i; yi 2 xi 5 sin(xi ), i 2 0,1,...,80.
10
Решение. Выполнив те же шаги, что и в примере 4.2, получаем графики,
приведенные на рисунке 4.7. Здесь в местозаполнитель оси X вводится пере
менная i — индексная переменная, а в местозаполнитель оси Y — обращение
к элементам массивов x, y.

Рис. 4.7
Отображение элементов одномерных массивов

Построение графиков параметрических функций. Функция y(x) называ


ется параметрической, если координаты x, y являются функциями некото
рого параметра, например параметра t, т. е. x = x(t), y = y(t). В этом случае
значения параметра задаются дискретной переменной, по оси X вводится
зависимость x(t), по оси Y — зависимость y(t).
Пример 4.4. Построить график параметрической функции, заданной сле
дующими уравнениями:

x(t) 2 2sin(t); y(t) 2 cos(t) 3 e 10,05t , t 4 [0;15,0].

Решение. Построение графика показано на рисунке 4.8. Здесь шаг изме


нения дискретной переменной равен 0,02, что обеспечивает «гладкость»
кривой графика.

52 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 4.8
Построение графика параметрической функции

4.3. ПОСТРОЕНИЕ ГРАФИКОВ ФУНКЦИИ


ОДНОЙ ПЕРЕМЕННОЙ
В ПОЛЯРНОЙ СИСТЕМЕ КООРДИНАТ
В полярной системе координат положение точки на плоско
сти определяется двумя координатами: углом и радиусом, например r(j), где
j — угол; r — радиус точки. Шаблон графика в полярной системе координат
(показан на рисунке 4.9) вызывается кнопкой Полярный
график раздела Вставить график вкладки График или клавишами [Ctrl + 7].

Рис. 4.9
Шаблон графика в полярной системе координат

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 53


В местозаполнителе радиальной оси (справа) вводится функция или вы
ражение, зависящее от угла. В местозаполнителе угловой оси (внизу) вво
дится полярный угол.
Заметим, что можно ввести несколько зависимостей радиуса от угла,
которые будут отображены соответствующими кривыми. Это иллюстрирует
следующий пример.
Пример 4.5. Построить графики в полярной системе координат следую
щих функций:
1 2
5
6(3) 7 1 4 sin 23 4 3 ; r (3) 7 1 4
2
sin(33 4 5)
2
для 38 [0,25].
Решение. На рисунке 4.10 приведен фрагмент документа, в котором на
ходятся необходимые конструкции MathCAD. Заметим, что в местозаполни
теле радиальной оси кроме двух функций r(j), r(j) введена константа 2,
которая отображена на рисунке окружностью радиусом 2 (проведена штри
ховой линией).
Примечание 4.3. Символ j вводится последовательным нажатием кла
виш [j] и [Ctrl + G], а cимвол r — последовательным нажатием клавиш [r] и
[Ctrl + G], их можно также ввести из раздела Операторы и символы вкладки
Математика.
Форматирование полярных графиков проводится так же, как и форма
тирование графиков в декартовой системе координат.

Рис. 4.10
Графики функций в полярных координатах

54 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


4.4. ПОСТРОЕНИЕ ГРАФИКОВ ФУНКЦИЙ
ДВУХ ПЕРЕМЕННЫХ
Трехмерные графики используются для визуализации функ
ции двух переменных — функции, принимающей значения в виде векторов,
или набора 3Dданных. Входные данные для 3Dграфиков могут иметь сле
дующие типы данных:
§ функция, принимающая значения в виде векторов для одного или двух
параметров с тремя элементами, определяющими координаты x, y и z;
§ матрица с тремя столбцами, содержащими координаты x, y и z;
§ вектор из трех векторов, представляющих координаты x, y и z и являю
щихся выходными данными функции CreateSpace;
§ вектор из трех вложенных матриц, представляющих координаты x, y и z
и являющихся выходными данными функции CreateMesh.
Для создания графика функции двух переменных (3Dграфика) необхо
димо щелкнуть по кнопке раздела Вставить график вкладки
Графики или клавишами [Ctrl + 3]. В документе появится шаблон графика с
тремя осями и пустым полем. В это поле вводится либо имя массива, либо
имя функции двух переменных.
В первом случае необходимо предварительно сформировать матрицу из
значений функции в узлах прямоугольной сетки. Этот способ позволяет ото
бразить элементы матрицы, содержащей результаты вычислений, например
значения температурного поля в разных точках плоскости.
Во втором случае предварительно надо описать функцию от двух пере
менных.

Рис. 4.11
Графики функции двух переменных

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 55


Рис. 4.12
Поворот и
масштабирование
3Dграфика

56 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Пример 4.6. Отобразить в виде поверхности значения функции z(x, y) =
= sin(x2 + y2) для x Î [–1,5; 1,5], y Î [–1,5; 1,5], предварительно сформиро
вав матрицу из значений функции в узлах сетки [–1,5; 1,5]´[–1,5; 1,5].
Решение. Необходимые конструкции показаны в документе, приведен
ном на рисунке 4.11.
Заметим, что в одномерных массивах x, y находятся узлы по осям x, y.
Точки (xi, yj) определяют узлы прямоугольной сетки, в которых вычисляют
ся значения элементов матрицы М. На рисунке 4.11а показан 3Dграфик.
На рисунке 4.11б показан контурный график (изолинии функции z(x, y)).
Форматирование 3D"графиков производится с помощью вызова опера
ций из раздела Стили (см. рисунок 4.5 и параграф 4.2). Кроме этого, для
форматирования 3Dграфиков добавлены специальные инструменты, появ
ляющиеся при щелчке мышью в поле построенного графика (см. левую сто
рону рисунка 4.12). Кратко определим назначение этих инструментов:
1 — Вращение (просмотр 3Dграфика под разными углами, см. рису
нок 4.12а).
2 — Панорамирование (перемещение графика в нужную точку рисунка).
3 — Масштабирование (изменение масштаба графика путем выделения
фрагмента графика, который нужно увеличить или щелчком мыши на гра
фике, см. рисунок 4.12б).
4 — Сброс вида (возврат к графику, вид которого задан по умолчанию).
При щелчке мышью на графике в верхней правой части рисунка появля
ется условное изображение декартовых осей (позиция 5 на рисунке 4.13).

Рис. 4.13
Инструменты форматирования 3Dграфика

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 57


Щелкая мышью на нужной оси (позиция 6 на рисунке 4.13), можно осуще
ствить форматирование оси, образ которой появляется справа от 3Dграфи
ка. Для этого используются те же инструменты, что и для форматирования
2Dграфика (см. параграф 4.2).
Функция CreateMesh (Создать сетку). Эту функцию можно использовать
для построения графика функции двух переменных в виде поверхности или
изолиний. Обращение к функции имеет вид:
CreateMesh(f, xn, xk, yn, yk, Nx, Ny),
где f — имя функции; xn, xk — границы интервала изменения аргумента х;
yn, yk — границы интервала изменения аргумента у; Nx, Ny — количество
узлов по х и у соответственно. Результатом работы является матрица, имя
которой вводится в поле шаблона. Использование этой функции позволяет
автоматизировать вычисление элементов матрицы, значение которых опре
деляет 3Dграфик отображаемой функции.
Пример 4.7. Построить график поверхности гиперболического парабо
лоида F(x, y) = x2 – y2 для –2 £ x £ 2 и –3 £ y £ 3 и числом узлов 50 по каждой
переменной.
Решение. Конструкции MathCAD, необходимые для построения графи
ка, показаны на рисунке 4.14. В правой части рисунка показано увеличен
ное изображение центральной части исходного 3Dграфика, помещенного в
левой половине рисунка. Увеличение получено с использование инструмен
та Масштабирование.

Рис. 4.14
Построение графика поверхности с помощью функции CreateMesh

58 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


4.5. ПОСТРОЕНИЕ ДИАГРАММ

В MathCAD можно строить следующие диаграммы:


§ диаграмма погрешностей — в которой для каждой строки матриц x и y
будет построена планка погрешности;
§ диаграмма «водопад» — полезна при построении множества наборов дан
ных на одном графике;
§ диаграмма «ящик с усами» — векторстолбцы строк матрицы, где каж
дая строка отображает минимальное значение (один «ус»), максималь
ное значение (второй «ус») и отклонения набора данных в виде прямо
угольника («ящик»);
§ диаграмма распределения.
Для построения диаграмм необходимо вызвать список типов из раздела
Изменить тип вкладки Графики (рис. 4.15).

Рис. 4.15
Список типов диаграмм

Создание диаграммы погрешностей. Диаграмма погрешностей представ


ляет на XYграфике векторы, размер которых равен разности значений в
строках матрицы.
Шаги создания диаграммы.
1. Вставьте график XY в документ.
2. Введите в местозаполнитель оси Y матрицу, содержащую по два эле
мента в каждой строке: данные по двум «усикам» планок погрешностей.

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 59


Рис. 4.16
Диаграмма погрешностей

Рис. 4.17
Диаграмма «водопад»

3. В местозаполнитель оси X введите векторстолбец, содержащий зна


чения x.
4. В разделе Изменить тип выбрать тип Погрешность. Появится диа
грамма погрешностей (рис. 4.16), в которой для каждой строки матриц x и y
будет построена планка погрешности.
Создание диаграммы «водопад» включает следующие шаги.
1. Вставьте график XY в документ.

60 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 4.18
Диаграмма «распределение»

2. Введите в местозаполнитель оси X матрицу из значений x, а в местоза


полнитель оси Y матрицу из значений y. На примере рисунка 4.17 матрица
ми со значениями y будут векторы матрицы А.
Создание диаграммы «распределение» включает следующие шаги.
1. Вставьте график XY в документ.
2. Введите в местозаполнитель оси Y матрицу, содержащую по два эле
мента в каждой строке.
3. В местозаполнитель оси X введите векторстолбец, содержащий зна
чения x.
4. В разделе Изменить тип выбрать тип Распределение. Появится диа
грамма распределений (рис. 4.18), в которой для каждой строки матрицы
деления вдоль оси X определяют низкие (–) и высокие (+) средние значения
для каждого коэффициента.

& ВОПРОСЫ И ЗАДАНИЯ ДЛЯ САМОКОНТРОЛЯ


ПО ТЕМЕ 4
1. Какие типы графиков можно построить в MathCAD?
2. Задайте дискретную переменную x, меняющуюся от 0 до p/2 с шагом 0,1; опре
делите функцию f (x) = x × sin(2x)2, постройте ее график.
3. Постройте на одном рисунке графики функций: y1 = 2cos(x), y2 = sin(x)2 и y3 = x
для x Î [0; 5,0] с шагом 0,02. Используя форматирование, измените стиль отображе
ния и цвет кривых.
4. Постройте график функции y = cos(x) + 3, где x изменяется от 10 до 20, а y от 0
до 10. Изменяя диапазон по y, увеличьте построенный график и немного сместите
его. В итоге на рисунке должны быть увеличенный и перемещенный график.

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 61


5. Постройте график функции f (x) = cos(x) + sin(x)2. Задайте свой масштаб, изме
нив диапазон значений аргумента x.
6. Постройте график функции p(x) = 5x6 – 3. Задайте свой цвет и стиль кривой.
7. Для индекса i, меняющегося от 0 до 15, вычислите массивы x i = i/10, yi =
= xi × sin(2x i)2, постройте график функции yi(xi).
8. Постройте на разных рисунках графики следующих функций в полярной систе
ме координат (угол j меняется от 0 до 2p):
2 3(1) :4 cos(1) 5 sin(1);
2 3(1) :4 1;
2 3(1) :4 e1 .
Выполните необходимое форматирование графиков.
9. Постройте график лемнискаты Бернулли:

r (1) :2 3 3 2 3 cos(21).

10. Постройте 3Dграфик, используя следующие конструкции:

f (x, y) :1 sin(x2 2 y2 );
N :1 20 x :1 0..N y :1 0..N;
4 (x 3 10) (y 3 10) 5
Mx,y :1 f 6 , .
8 5 5 97

Определить диапазоны значений аргументов x и y. Заметим, что в приведенном


алгоритме переменные x и y выполняют двойную функцию: являются индекса
ми у вычисляемых элементов матрицы М и аргументами функции f (x, y).

62 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


ТЕМА 5. СИМВОЛЬНЫЕ
ТЕМА
ВЫЧИСЛЕНИЯ
В ПАКЕТЕ MathCAD

П
акет MathCAD позволяет получать результат некоторых
вычислений в символьном виде, т. е. в виде аналитического выражения.
Такие вычисления называются символьными. В отличие от численных вы
числений, которые дают численный результат, при символьных вычислени
ях полученные аналитические выражения обладают высокой общностью
результатов. Символьные вычисления более удобны для отображения ана
литического результата выражения в целом или его части, не сохраняя сам
ход вычислений.
Выражения в символьных расчетах вычисляются с использованием опе
ратора символьного вывода (®) вместо оператора численного вычисления
(=). Все стандартные операторы MathCAD и многие встроенные функции
можно вычислять аналитически.

5.1. КОМАНДЫ СИМВОЛЬНЫХ


ВЫЧИСЛЕНИЙ
Вызов символьных операций осуществляется из палитры
инструментов категории Символьные операции раздела Операторы и симво2
лы вкладки Математика (рис. 5.1).

Рис. 5.1
Вызов символьных операций

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 63


Рис. 5.2
Список ключевых слов и модификаторов
В категории Символьные операции содержатся следующие палитры ин
струментов (рис. 5.2):
§ операторы;
§ ключевые слова;
§ модификаторы;
§ explicit.
Оператор символьного вывода (®) упрощает результаты символьных
выражений, выполняя арифметические действия и комбинируя одинаковые
переменные. Например,
2 × x + 5 + 4 × x – 3 ® 6 × x + 2.
Ключевые слова — это команды символьных операций. Ключевые слова
используются при выполнении более сложных символьных операций, чем
при использовании оператора символьного вывода. Ключевые слова отобра
жаются над оператором символьного вывода.
x2 1 2 2 x 1 15 333 4(x 5 3) 2 (x 1 5).
factor

Описание ключевых слов и символьных операторов приведено в таблице 5.1.


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

64 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


1 2 3 4 5 6 2 7 89
7
123456758927678 8

1 234536178397
4
3 31
6
 634
1
456 1
7839343 1
73833 1
 1 
85536145
31 53 31
 1941 6385451
 1 
855361
 3 617
4
51

1 !
 85361433 6"1
938 5 3173833 #$11
9 5
17
55%
634316373 1

1 
 8#361433 6185 3 11 7
4
5 31
&61433 %
658 1#  &1
 1  4361854
3 31 451 4 1#  11 37838 #$198
1
 1 '383
53616373 1 178
393 1185 3 1

1 
85536185 3 117
96543  1 53  173833 "1

131
853 1 4
185 3 &1
 1 (56
8 #36185 3 31

85536183#4656119
6#7  1 4
 1 53  "185%
 1  65  17
8396
1 43 &117455$3&1576
&11#55 %

&16

6$1
 1 
8553617
98

31833 31#85 3 1

  1 7
4 361854
3 3185
54

185 3 11##198
3&11
4 3&  1 4 159856   1 53 5634 1

   1 
85536183#465611
743  1 4
 1 53  "1
859343  1 5193&6 634 #$1 1 #$156 1
1 '3837 536185 3 13831433 658 31#  1

 1 7
4 361854
3 31#  1 4 185 3 11891)3&4
851 4 1
891*
85 511
836
6 1+1
1 ,78
536154385 3 1 4 1 436185 3 31
 1 -35361#85 3 315 54 6 3 1

  1 .53 36131


93 1
9
&173833
&198#
&173833
&"1%
85 3 31 4 1 4
1
1 .53 361
95 #$173833 #$11833 1#85 3 31
 "1  "1
!  "1  "1  436178
31783
85
5 31 3
6
8
&1#  1 4 1
856
31
   "1 !  1 783
85
5 31
1
Explicit — вид ключевого слова, используемого для получения результа
та выражения с подставленными значениями переменных, но без сокраще
ния числовых выражений.

5.2. ВЫПОЛНЕНИЕ СИМВОЛЬНЫХ ВЫЧИСЛЕНИЙ


Вставка ключевых слов и модификаторов содержит следующие этапы.
1. Выберите выражение, которое требуется вычислить аналитически.
2. Во вкладке Математика в разделе Операторы и символы щелкните
Символьные операции, а затем щелкните стрелку оператора символьного
вывода (®).
Примечание 5.1. Оператор символьного вывода (®) можно вставить на
жатием комбинации клавиш [Ctrl +].

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 65


3. Щелкните местозаполнитель над оператором символьного вывода и
введите ключевое слово или модификатор. Можно также на вкладке Мате2
матика в разделе Операторы и символы щелкнуть Символьные операции и
выбрать ключевое слово или модификатор. Если курсор находится вне об
ласти формул, можно вставить ключевое слово или модификатор, а затем
ввести выражение, которое требуется вычислить, в местозаполнитель слева
от оператора символьного вывода.
4. Чтобы вставить несколько ключевых слов над одним оператором сим
вольного вывода, выполните одно из следующих действий:
§ введите запятую сразу после первого ключевого слова. Появится место
заполнитель. Введите или вставьте другое ключевое слово в местозапол
нитель;
§ введите или вставьте первое ключевое слово, нажмите клавиши [Shift +
+ Enter], чтобы вставить новую строку, и добавьте другое ключевое слово.
Пример 5.1. Выполнить разложение выражения cos(2y) относительно
переменной у.
Решение. Выполним следующую последовательность действий (рис. 5.3):

Рис. 5.3
Символьное разложение выражения

§ введем выражение cos(2y);


§ щелкнем по ключевому слову еxpand;
§ введем через запятую переменную, относительно которой производится
вычисление;
§ щелкнем мышью в стороне от выражения.
По умолчанию оператор символьного вывода «®» выполняет функцию
упрощения (simplify), т. е. берет выражение с левой стороны и помещает его
упрощенную версию с правой стороны.
Символьное вычисление пределов. Оператор lim вычисляет предел сим
вольного выражения. Примеры вычисления пределов приведены на рисун
ке 5.4.

Рис. 5.4
Символьное вычисление пределов

Символьные вычисления операций сложения, умножения, дифферен"


цирования и интегрирования. Эти вычисления осуществляются с использо
ванием соответствующих кнопок палитры инструментов Матанализ.

66 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Пример 5.2. На рисунке 5.5 показаны символьные вычисления исполь
зованием операторов суммы, дифференцирования и интегрирования.

Рис. 5.5
Примеры символьных вычислений

Символьные алгебраические преобразования. Символьный процессор


MathCAD может выполнять основные алгебраические преобразования, та
кие как упрощение выражения, разложение выражений на множители,
вычисление коэффициентов полинома и т. д. Рассмотрим некоторые часто
встречающиеся преобразования алгебраических выражений.
Замечание 5.1. Если перед вычисляемым алгебраическим выражением
задать численные значения переменным, входящим в алгебраическое выра
жение, то символьный процессор будет «обрабатывать» уже соответствую
щие числовые значения.
Simplify — команда, осуществляющая упрощение алгебраического вы
ражения.
Пример 5.3. Упростить алгебраические выражения, приведенные на ри
сунке 5.6.

Рис. 5.6
Упрощение алгебраических выражений (simplify)

Решение. Сначала введем преобразуемые выражения, а затем выполним


необходимые упрощения. В первой строке для этого используется оператор
символьного вывода (по умолчанию «упрощение»), во второй — оператор
символьного вывода и команда simplify.
Factor — команда, осуществляющая разложение алгебраического выра
жения на множители.
Пример 5.4. Выполнить разложение выражения, приведенного на ри
сунке 5.7.

Рис. 5.7
Разложение алгебраического выражения (factor)

Решение. Первоначально введем преобразуемое выражение, к которому


затем применим команду factor.

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 67


Parfrac — команда, осуществляющая разложение алгебраического вы
ражения на простые дроби. Эта команда может иметь поле, отделяемое от
команды запятой, в котором задается переменная или выражение, относи
тельно которых будет осуществляться разложение.
Пример 5.5. Выполнить разложение на простые дроби выражения, при
веденного на рисунке 5.8.

Рис. 5.8
Разложение на простые дроби

Решение. Первоначально введем преобразуемое выражение, к которому


затем применим команду parfrac (первая строка документа MathCAD). Во
второй строке показан вызов команды, в поле которой указана перемен
ная x. Естественно, что для данного выражения (в котором только одна пере
менная) результаты этих двух преобразований совпадают (рис. 5.8).
Expand — команда, осуществляющая раскрытие скобок и приведение
подобных членов. В команду можно вставить поле (через запятую), в кото
ром указывается переменная, относительно которой выполняется преобра
зование.
Пример 5.6. Выполнить раскрытие скобок и приведение подобных чле
нов алгебраического выражения, приведенного на рисунке 5.9.

Рис. 5.9
Приведение подобных членов

Решение. Первоначально введем преобразуемое выражение, а затем об


ратимся к команде expand. Первая строка документа на рисунке 5.9 содер
жит преобразования относительно переменной x. Во второй строке приведе
но преобразование, выполненное относительно константы 2.
Collect — команда объединяет члены, содержащие одинаковые степени,
указанной в команде переменной. Примеры использования команды Collect
по переменным x и z приведены на рисунке 5.10.
Сoeffs — команда осуществляет преобразование выражения, являюще
гося полиномом относительно некоторой переменной (например, x), к виду
a0 + a1x + a2x2 + ... . В команду можно вставить поле (через запятую), в кото

68 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 5.10
Приведение членов с одинаковыми показателями степени

ром указывается переменная, относительно которой выполняется преобразо


вание. Найденные коэффициенты полинома представляются в виде вектора.
Пример 5.7. Вычислить коэффициенты полинома, приведенного на ри
сунке 5.11.

Рис. 5.11
Вычисление коэффициентов полинома

Решение. В первой строке документа MathCAD осуществляется вычисле


ние коэффициентов полинома относительно переменной x, во второй стро
ке — относительно переменной z.
Series — команда осуществляет разложение заданного выражения или
функции в ряд Тейлора. Напомним, что рядом Тейлора (относительно точ
ки x0) называется ряд вида
f 11(x0 ) f (n) (x0 )
f (x) 2 f (x0 ) 3 f 1(x0 )(x 4 x0 ) 3 (x 4 x0 )2 3 ... 3 (x 4 x0 )n 3 ....
2 n
Как правило, в вычислениях сохраняют конечное число слагаемых этого
ряда, например n слагаемых. Возможные формы записи команды series по
казаны на рисунке 5.12 и обозначены русскими буквами.

Рис. 5.12
Возможные формы записи команды series

Поясним эти формы:


a) подразумевает x0 = 0 (ряд Маклорена), число членов разложения рав
но 6 (по умолчанию);
б) подразумевает x0 = а (ряд Тейлора), число членов разложения равно 6
(по умолчанию);

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 69


в) подразумевает x0 = 0 (ряд Маклорена), число членов разложения
равно n;
г) подразумевает x0 = а (ряд Тейлора), число членов разложения равно n.
Пример 5.8. Выполнить разложение функции f (x) = e–x, используя раз
личные формы записи команды series.

Рис. 5.13
Различные формы разложения с использованием команды series

Решение. На рисунке 5.13 приведен фрагмент документа MathCAD, в


котором используются различные формы команды series.

5.3. СИМВОЛЬНОЕ РЕШЕНИЕ УРАВНЕНИЙ


И СИСТЕМ УРАВНЕНИЙ
Для вычисления решения уравнения или систем уравнений
используется команда solve. После команды через запятую можно задать
переменную, относительно которой ищется решение.
Решение нелинейного уравнения. Напомним, что нелинейным уравне
нием относительно переменной x является запись вида
f (x) 1 0.
Корнями нелинейного уравнения называются такие значения x*j , j 1 1,..., m,
для которых f (x*j ) 1 0. В зависимости от вида функции f (x) может иметь
несколько корней, т. е. m > 1.
Пример 5.9. Используя команду solve, найти решение линейного уравне
ния x – a + 5 = 0 в символьном виде.
Решение. Обращение к команде solve по
казано в документе MathCAD, приведенном
на рисунке 5.14. Заметим, что при первом об
ращении к команде не была указана перемен
ная, относительно которой ищется решение,
и это вызвало ошибку, диагностика которой
также показана на рисунке.
Пример 5.10. Используя команду solve,
найти решение нелинейного уравнения N =
Рис. 5.14
Решение линейного уравнения = N0e–lh в символьном виде относительно пе
примера 5.9 ременных l и N0.

70 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 5.15
Решение нелинейного уравнения примера 5.10

Решение. Обращение к команде показано в документе MathCAD, приве


денном на рисунке 5.15. Заметим, что в левом поле команды solve записано
нелинейное уравнение, в котором стоит «жирный» знак =.
Пример 5.11. Используя команду solve, вычислить все корни алгебраиче
ского уравнения f (x) 1 x3 2 6x2 3 21x 2 52 1 0.
Решение. Известно, что рассматриваемое уравнение имеет три корня. На
рисунке 5.16 показаны два обращения к команде solve. В первом обращении
в левом поле команды стоит обозначение нелинейного уравнения, во вто
ром — левая часть нелинейного уравнения.

Рис. 5.16
Решение нелинейного уравнения примера 5.11

Для учета априорной информации или ограничений относительно иско


мых решений дополнительно к команде solve используется команда assume, в
которой через запятую вводятся определенные требования к искомому реше
нию. Часто используемые ограничения приведены в следующем примере.
Пример 5.12. Дано нелинейное алгебраическое уравнение f (x) 1 (x3 2 1) ´
´ (x2 2 2) 1 0. Используя команду solve, вычислить:
1) все корни этого алгебраического уравнения;
2) вещественные корни этого алгебраического уравнения;
3) вещественные корни из интервала (0,2).
Решение. Вычисление корней в соответствии с вышеперечисленными
требованиями показано на рисунке 5.17.
Решение систем нелинейных уравнений. Напомним, что системой из n
нелинейных уравнений относительно m неизвестных называется запись:
2f1 (x1, x2 , ..., xm ) 1 0;
33f (x , x , ..., x ) 1 0;
2 1 2 m
4
3 ...
35fn (x1 , x2 , ..., xm ) 1 0.

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 71


Рис. 5.17
Решение нелинейного
уравнения примера 5.12

Решением этой системы являются значения x1* , x2* , ..., xm


* , которые обра

щают каждое уравнение системы в тождество. Как правило, число уравне


ний равно числу неизвестных, т. е. m = n.
Для нахождения решения системы уравнений в символьном виде также
используется команда solve, но в левом поле этой команды стоит система
уравнений, вводимая с помощью шаблона вектора, число проекций которого
равно числу уравнений системы. В правом поле команды указывается век
тор, составленный из имен переменных, относительно которых ищется ре
шение.
Пример 5.13. Вычислить решение следующей системы уравнений:
3x 1 13y 2 2;
4
62x 5 y 2 1.
Решение. Фрагмент документа MathCAD, вычисляющий решение систе
мы, приведен на рисунке 5.18. Вычисленное решение системы выводится в
виде строки.

Рис. 5.18
Решение нелинейного уравнения примера 5.13

Пример 5.14. Вычислить решение следующей системы уравнений:


3bx 1 13y 2 2;
4
62x 5 ay 2 1.
Решение представить в виде функции пользователя.

72 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 5.19
Решение нелинейного уравнения примера 5.14

Решение. Фрагмент документа MathCAD, вычисляющий решение систе


мы, приведен на рисунке 5.19. Вычисленное решение системы зависит от
двух коэффициентов a, b, которые являются аргументами функции пользо
вателя Sol. Обращение к этой функции с аргументами a = 1, b = 1 дало реше
ние примера 5.13.
Для проверки найденного решения можно использовать команду substi2
tute, с помощью которой осуществляется подстановка значений, заданных в
правом поле команды, в систему уравнений, заданных в левом поле коман
ды. Результатом выполнения команды будет вектор, количество проекций
которого равно количеству уравнений решаемой системы. Каждая проекция
вектора представляет собой результаты вычисления левой и правой части
соответствующего уравнения системы, связанные «жирным» знаком =. Если
слева и справа стоят одинаковые значения, то подставленные значения обра
щают уравнение в тождество. В противном случае подставленные значения
не являются решением данного уравнения.
Для задания значений нескольким переменным необходимо ввести соот
ветствующее число команд substitute.
Пример 5.15. Используя команду substitute, проверить правильность ре
шения системы, вычисленного в примере 5.13.

Рис. 5.20
Проверка решений
нелинейного уравнения

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 73


Решение. В первой проверке (рис. 5.20) были подставлены значения, най
денные в примере 5.11 и являющиеся решением рассматриваемой системы
уравнений. Получен вектор, проекции которого содержат равенства. Это
говорит о том, что подставленные значения являются решением системы. Во
второй проверке были подставлены другие значения, которые не являются
решением системы. Это видно из проекций результирующего вектора.
Решение неравенств. Используя команду solve, можно решить неравен
ство или систему неравенств. Это иллюстрируется следующим примером.
Пример 5.16. Используя команду solve, решить следующее неравенство:
4x2 1 x 1 1
2 1.
3 3 2x 3 x2
Решение. Фрагмент документа MathCAD показан на рисунке 5.21. Най
дены три интервала (заданных с использованием знаков отношений) значе
ний величины x, удовлетворяющих заданному неравенству: (–¥, –3),
[–1; 0,4], (1, ¥).

Рис. 5.21
Решение неравенства примера 5.16

Вычисление интегральных преобразований. MathCAD позволяет вычис


лить в символьном виде три интегральных преобразования: Фурье, Лапласа
и zпреобразование. Функция преобразования, должна иметь независимую
переменную по умолчанию, показанную в таблице 5.2, в столбце «Функ
ция». Если нужно применить для функции другую независимую перемен
ную, необходимо ввести запятую, а за ней — имя переменной. MathCAD
возвращает преобразованную функцию, для которой переменная, заданная
по умолчанию, находится в столбце «Преобразованная функция».
1 2 3 4 5 6 2 7 89
7
12324255627897
49 57
  2927 13293 9 527
 997 
57 13293 9 5
5 7
57

1 123452674869
3 23 7 17
 1 526943 23452674869
3 666 17 7
1 123452674869
3 666 7 7
1 526943 23452674869
3 666 7 7
1 23452674869
3 7 7
1 526943 23452674869
3 7 7
1
Прямое преобразование Фурье возвращает функцию от w, определяемую
формулой:

74 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


1
F (3) 4 5 f (t)e 2i3t dt,
1

где f (t) — выражение, которое надо преобразовать; w — вещественная пере


менная, играющая роль круговой частоты. Обратное преобразование Фурье
возвращает функцию от t, задаваемую выражением:
1
1
f (t) 4
25 6 F(3)ei3td3.
21

Пример выполнения прямого и обратного преобразования Фурье пока


зан на рисунке 5.22.

Рис. 5.22
Прямое и обратное преобразования Фурье

Прямое преобразование Лапласа возвращает функцию от s, определяе


мую формулой:
1
F (s) 3 4 f (t)e2st dt,
21

где f (t) — выражение, которое надо преобразовать; s — комплексная вели


чина s = s + iw, i — мнимая единица i 1 21. Обратное преобразование Лап
ласа возвращает функцию от t, задаваемую выражением:
12 i3
1
f (t) 5
26 7 F (s)e st ds,
14 i3

где все особенности функции F(s) лежат на комплексной плоскости слева от


линии s = Re(s).
Пример выполнения прямого и обратного преобразования Лапласа пока
зан на рисунке 5.23.

Рис. 5.23
Прямое и обратное преобразования Лапласа

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 75


Рис. 5.24
Прямое и обратное Zпреобразования

Прямое Zпреобразование возвращает функцию от z, определяемую фор


мулой: 1
F (z) 3 4 f (n)z2n .
n 30
Обратное Zпреобразование возвращает функцию от n, задаваемую кон
турным интегралом вокруг начала координат:
1
23 14
f (n) 2 F (z)z1n dz,
C

где С — контур, включающий в себя все особенности функции F(z).


Пример выполнения прямого и обратного zпреобразования показан на
рисунке 5.24.

ВОПРОСЫ И ЗАДАНИЯ ДЛЯ САМОКОНТРОЛЯ


ПО ТЕМЕ 5

1. Что такое символьные вычисления в пакете MathCAD?


2. С помощью каких средств интерфейса пакета MathCAD можно осуществить
символьные вычисления?
3. Что такое оператор символьного вывода?
4. Какие символьные преобразования и вычисления осуществляют следующие
команды: evaluate, simplify, expand, factor, collect, coeffs?
5. Упростите приведенные ниже выражения:
11
x 13 x2 2 9 4
5 36
x 3
a) 1 2 2 7 ;
4 5 x2 2 24 5 x 2 36 8 3 5 x 1 9 x 2 3 5 x 27 1 3 5 x2 9

3 1 x2 2 2 1 x
б) ;
6 2 7 1 x 2 3 1 x2

41a 2 4
a2
в) a .
2
21
a
6. Разложите на множители выражения:
а) x4 1 10 2 x3 3 35 2 x2 1 50 2 x 3 24;

б) 24 1 a3 1 b 2 6 1 a 1 b 1 x3 2 8 1 a3 1 x2 3 2 1 a 1 x5 2 12 1 x 1 b 1 a2 3
3 3 1 x 4 1 b 3 4 1 x 3 1 a2 2 x 6 .

76 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


7. Разложите на простейшие дроби приведенное ниже выражение:
(5 1 x4 2 6 1 x3 ) 1 (2 1 x 2 1) 1 (x 3 3)
.
(x2 2 x 2 4) 1 (x 3 6) 1 (3 1 x 3 2)

8. Выполните операцию «раскрыть скобки и привести подобные» для приведен


ных ниже выражений:
а) (2 1 x2 2 3 1 x2 2 4 1 x 2 1) 1 (x 3 1) 1 (x 3 2) 1 (x 3 3);
б) (a 1 x2 2 3 1 x2 2 4 1 x 2 1) 1 (a 1 x 2 b 1 x2 ) 3 a 1 x3 .
9. Определите коэффициенты следующих полиномов:
2
а) 3 1 b 1 x4 2 3 1 x2 4 1 x 2 3 1 a 1 b относительно переменной x;
3
б) sin(x) 1 2 2 sin(x)2 относительно sin(x).
10. Вычислите решения следующих нелинейных уравнений и выполните проверку
найденных решений:
а) x3 1 2,92 2 x2 3 1,4355 2 x 3 0,791 4 0;
б) 521x 23 3 5;
с) x 1 1 2 2x 2 6 3 6.
11. Разложите в ряд Тейлора с точностью до 7 степени функции:
а) косинуса;
б) тангенса.
12. Выполните прямое преобразование Фурье от следующей функции cos2(t). Вы
полните обратное преобразование Фурье от полученной функции F(w).
13. Выполните прямое преобразование Лапласа от следующей функции cos2(t).
Выполните обратное преобразование Лапласа от полученной функции F(s).

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 77


ТЕМА 6. ЧТЕНИЕ И ЗАПИСЬ
ТЕМА
ДАННЫХ

Вэтой теме рассматриваются различные средства MathCAD


PRIME для работы с файлами.

6.1. СРЕДСТВА ДОСТУПА К ФАЙЛАМ


В MathCAD имеется возможность доступа к дисковым фай
лам для чтения и записи данных. Данные могут быть представлены в различ
ных форматах. MathCAD обеспечивает чтение и запись смешанных тексто
вочисловых файлов, файлов формата Microsoft Excel, а также чтение и
запись файлов двоичного формата, в том числе и графических файлов.
Записывая файлы данных, можно экспортировать результаты MathCAD
в текстовые процессоры (например, в Блокнот), в электронные таблицы Ex
cel, в бинарные и другие прикладные программы. Числа в файлах данных
могут быть целыми числами или числами с плавающей запятой. В качестве
разделителя между целой и дробной частью вещественного числа использу
ется только десятичная точка (в отличие от таблиц Excel).
Файлы данных по их структурной организации разделяются на две группы:
§ структурированные файлы;
§ неструктурированные файлы.
В структурированном файле данные располагаются в виде матрицы,
т. е. каждая строка (так называемая запись) имеет одинаковое число элемен
тов. Числа отделяются друг от друга разделителями — пробелами, запяты
ми, возвратами каретки и другими, задаваемыми пользователем.
В неструктурированном файле данные располагаются либо последова
тельно (только одна запись), либо в нескольких записях, но с разным числом
элементов в них.
В функциях работы с файловыми данными аргументом является Имя
файла, в качестве которого может выступать:
§ строковая константа, содержащая полное имя файла или только имя
файла (если он находится в текущем каталоге);

78 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


§ строковая переменная, получившая значение строковой константы, оп
ределяющей имя файла.
Импорт и экспорт данных в MathCAD выполняется с помощью функций,
вводимых в формулы с клавиатуры или вызываемых во вкладке Функции,
раздел Доступ к файлам (рис. 6.1). Эти функции позволяют устанавливать
нужный формат данных, номера считываемых строк и столбцов и выбирать
разделители между данными.

Рис. 6.1
Раздел функций Доступ к файлам

Функции для чтения и записи файлов предназначены для работы с фай


лами различного типа. Описания сгруппированы по типу файла.

ФАЙЛЫ ДАННЫХ

READFILE, WRITEFILE — читает или записывает массив значений из/


в разделенные файлы данных, файлы данных фиксированной ширины или
файлы данных Excel.
READTEXT, WRITETEXT — читает или записывает массив значений
из/в текстовые файлы.
READBIN, WRITEBIN — читает или записывает массив значений из/в
бинарные файлы данных.
READCSV, WRITECSV — читает или записывает массив значений из/в
файлы переменных, разделяемых запятой (CSV).
READPRN, WRITEPRN, APPENDPRN — символьного вывода читает,
записывает или присоединяет массив значений из/в файлы данных ASCII.
READEXCEL, WRITEEXCEL — символьного вывода читает и записыва
ет массив значений из/в файлы Microsoft Excel.

ФАЙЛЫ ИЗОБРАЖЕНИЙ
READ_IMAGE — читает изображения в оттенках серого.
READBMP, WRITEBMP — читает или записывает растровые изображе
ния в оттенках серого.
READRGB, WRITERGB — читает или записывает изображения RGB,
сохраненные как простые упакованные матрицы.

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 79


ФАЙЛЫ С ОПРЕДЕЛЕННЫМИ СВОЙСТВАМИ
READ_RED, READ_GREEN, READ_BLUE — читает определенные цве
товые компоненты из файлов изображений.
READ_HLS, WRITE_HLS — читает или записывает массив значений
из/в файлы изображений HLS.
READ_HSV, WRITE_HSV — читает или записывает массив значений
из/в файлы изображений HSV.
READ_HLS_SAT, READ_HSV_SAT, READ_LIGHT, READ_VALUE,
READ_HUE — читает насыщенность, светлоту, значение или компонент
тона из файлов изображений HLS или HSV.

ЗВУКОВЫЕ ФАЙЛЫ

READWAV, WRITEWAV — читает и записывает массив, содержащий


амплитуды сигнала, в файлы WAV.
GETWAVINFO — создает вектор, содержащий информацию о файле
WAV.

6.2. ФУНКЦИИ ДОСТУПА


К СТРУКТУРИРОВАННЫМ ASCII"ФАЙЛАМ
Для чтения и записи структурированных ASCIIданных в
MathCAD используются функции READPRN, WRITEPRN и APPENDPRN.
Эти команды считывают целую матрицу из файла со строками и столбца
ми данных или записывают матрицу из MathCAD в файл, т. е. выполняют
действия со структурированными данными.

ФОРМАТЫ ФУНКЦИЙ ДОСТУПА К ФАЙЛАМ

READPRN(«file») — читает структурированный файл данных. Возвра


щает матрицу. Каждая строка в файле данных становится строкой в матри
це. Число элементов в каждой строке должно быть одинаковым.
WRITEPRN(«file») — записывает матрицу в файл данных. Каждая стро
ка матрицы становится строкой в файле. Если файл содержит какиелибо
данные, то они будут заменены новыми.
APPENDPRN(«file») — дописывает матрицу к существующему файлу.
Каждая строка в матрице становится новой строкой в файле данных. Суще
ствующий файл должен иметь столько же столбцов, как и дописываемая
матрица.
Создаваемый в MathCAD файл данных можно просмотреть и отредакти
ровать в текстовом редакторе, отображающем ASCIIданные. Примерами
таких редакторов может служить программа Блокнот, входящая в состав
Windows, программная оболочка FAR и др.
Параметр «file» — полное имя файла, которое указывается в кавычках.
Если не указано расширение, то по умолчанию подразумевается расшире
ние .prn.

80 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Функция WRITEPRN(«file», M, [rows, [cols, [«decsymb»]]]) — записыва
ет содержимое массива M в ASCIIфайл с разделителями.
Для вычисления выражения в документе MathCAD оно должно быть
записано в виде назначения или запроса на вычисление, например:

Функция APPENDPRN(«file», M) — записывает содержимое массива M


в конец ASCIIфайла с разделителями. Число столбцов в массиве должно
совпадать с числом столбцов в существующем файле. Если файл не сущест
вует, то функция APPENDPRN создаст его.

АРГУМЕНТЫ

«file» — строка, содержащая имя файла или полный путь и имя файла.
Неабсолютные пути к файлам считаются заданными по отношению к теку
щей рабочей папке.
M — массив или (для функции WRITEPRN) скаляр.
rows (необязательный) — скаляр, указывающий строку матрицы M, с
которой следует начинать запись в файл, или двумерный вектор, указываю
щий диапазон строк матрицы M (включительно), которые нужно записать.
Если этот аргумент пропущен, функция WRITEPRN запишет все строки
матрицы в файл.
cols (необязательный) — скаляр, указывающий столбец матрицы M, с
которой следует начинать запись в файл, или двумерный вектор, указываю
щий диапазон столбцов матрицы M (включительно), которые нужно запи
сать. Если этот аргумент пропущен, функция WRITEPRN запишет все столб
цы матрицы в файл.
decsymb (необязательный) — используемый десятичный разделитель.
Можно использовать только «.» (точку).
Примечание 6.1. rows и cols — это индексы, которые начинаются с 1.
Значение системной переменной ORIGIN не влияет на работу функций
READPRN и APPENDPRN.
Пример 6.1. Записать в файл матрицу В, kй столбец которой есть выбор
ка из нормального распределения с математическим ожиданием m0 = 10 и
среднеквадратическим отклонением s0 = 2 (дисперсия соответственно 120 2 4).

Рис. 6.2
Запись структурированного файла

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 81


Решение. Фрагмент документа, осуществляющий запись структуриро
ванного файла, приведен на рисунке 6.2. В окне программы WordPad хоро
шо видна структура сформированного файла (число строк n = 5, число столб
цов m = 4).
Пример 6.2. К матрице В, созданной и записанной в файл (см. пример 6.1),
дописать заданную матрицу С размером 3´4. Прочитать из файла новую мат
рицу (обозначим ее D) и вывести ее элементы.

Рис. 6.3
Дополнительная запись и чтение структурированного файла

Решение. Фрагмент документа, осуществляющий «дозапись» матрицы С


в структурированный файл, приведен на рисунке 6.3. Здесь же выведены
элементы новой матрицы. Заметим, что в операторе «чтение» имя файла
содержит явно заданное расширение .prn. Если расширение не задать, файл
не откроется для чтения.

6.3. ФУНКЦИИ ДОСТУПА


К ГРАФИЧЕСКИМ ФАЙЛАМ
Функции MathCAD доступа к графическим файлам, описан
ные выше, позволяют читать и записывать файлы изображений в различных
форматах.
Признанные графические форматы — BMP, GIF, JPG, PCX и TGA.
Отметим следующие особенности.
1. Имена функций вводятся прописными символами.
2. Независимо от исходного формата файла изображения, изображения в
MathCAD являются матрицами со значениями от 0 (черный) до 255 (белый),
которые могут быть отображены с помощью операторов меню Insert > Picture.
Каждый элемент матрицы представляет интенсивность одного пиксела. Цвета
RGB изображения хранятся как три упакованные m´n бок о бок матрицы
(функция augment).

Первые n столбцов представляют красную компоненту n´m изображе


ния. Во втором и третьем наборы n столбцов представляют зеленый и синий
компоненты изображения. HSV или HLS изображения хранятся в упакован
ном формате.

82 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Пример 6.3. Дан BMPфайл. Необходимо:
1) считать с диска данные графического файла в MathCAD с помощью
команды READBMP(). Данные сформируют матрицу M оттенков серого цве
та размерностью 255´255;
2) обработать только центральную часть изображения размерностью
100´100. Для этого функцией submatrix() выделим из матрицы М подмат
рицу S;
3) записать полученную матрицу в файл MonaS.bmp;
4) вывести изображение, представленное матрицей S.
Решение. Выполним следующие операции.
1. На вкладке Математика в разделе Области щелкнем Изображение.
Появится кнопка Выбрать изображение.
2. Щелкнем Выбрать изображение. Появится диалоговое окно Открыть.
3. В окне укажем файл C:\Temp\ MonaS.bmp. В документе появится вы
бранное изображение.
Результат выполненных действий показан на рисунке 6.4.

Рис. 6.4
Чтение
графического
файла

4. Изменим уровень интенсивности серого оттенка в каждом пикселе,


разделив матрицу S на число 2 и добавив к результату число 120. Получим
матрицу S1. Выведем полученное изображение.
5. Создадим инверсию графического изображения в матрице S2. Для этого
значение интенсивности в каждом элементе матрицы S2 вычислим как
S2i,j = 255 – Si,j. Выведем полученное изображение, представленное матрицей S2.
6. Поменяем строки матрицы так, чтобы номера строк шли по убыванию
(функция reverse()) — матрица S3. Изображение должно перевернуться.
7. Проведем контрастирование изображения. Для этого все значения
ниже 120 переназначим в 0, а выше — в 255, т. е. оттенки будут только чер
ные и белые. Преобразованные с помощью функции f (x) значения записаны
в матрицу S4.
Результаты последних четырех преобразований показаны на рисунке 6.5.

Рис. 6.5
Примеры
обработки
графического
файла

РАЗДЕЛ 1. ВЫЧИСЛЕНИЯ В ПАКЕТЕ MathCAD 83


& ВОПРОСЫ И ЗАДАНИЯ ДЛЯ САМОКОНТРОЛЯ
ПО ТЕМЕ 6
1. Какой файл является структурированным?
2. Какой файл называется ASCIIфайлом?
3. К каким типам файлов обеспечивается доступ в MathCAD?
4. Какие форматы графических файлов поддерживают функции в MathCAD?
5. Какие значения имеют элементы массива, содержащего представление серого в
растровых изображениях файлов? Что означают эти значения?
6. Составьте фрагмент документа MathCAD, формирующий ASCIIфайл, содержа
щий два столбца:
§ первый столбец содержит значения xi, i = 0, 1, ..., n определяемые по формуле
b1a
xi 2 a 3 ;
n
§ второй столбец содержит значения функции:

2(xi ) 3 e 1 xi 4 cos(5xi ), i 3 0,1, ..., n.


2

7. Обработка графического файла. Выполните следующие действия:


§ зайдите в MathCAD\Handbook\improcl и по указанию преподавателя выбери
те BMPфайл. Перепишите его в C:\TEMP;
§ считайте его данные в матрицу документа MathCAD. Определите размер по
лученной матрицы;
§ выделите из нее подматрицу;
§ отобразите полученное графическое изображение;
§ с помощью матричных операций создайте негативное изображение и черно
белое изображение;
§ склейте два BMPфайла бок о бок и снизу сверху;
§ отобразите полученные изображения.

84 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


РАЗДЕЛ ВТОРОЙ

ПРОГРАММИРОВАНИЕ
В ПАКЕТЕ MathCAD PRIME
В этом разделе рассматриваются конструкции пакета Math
CAD, позволяющие реализовать следующие типы алгоритмов: линейный,
разветвляющийся и циклический (проще — цикл). При этом будут изучены
два способа программирования:
§ программирование в пакете MathCAD без использования программных
модулей;
§ программирование с использованием программных модулей.
Первый способ (в дальнейшем для простоты названный безмодульным
программированием) реализуется записью соответствующих конструкций
непосредственно в математических областях документа MathCAD, и он при
емлем для сравнительно простых алгоритмов.
Второй способ (называемый для простоты модульным программировани
ем) предполагает реализацию отдельных независимых алгоритмов вычисле
ния (например, решение нелинейного уравнения методом «деления отрезка
пополам») в виде отдельных программных модулей, которые будем называть
подпрограммамифункциями (сокращенно ПФ). Первое слово «подпрограм
ма» указывает на свойство изолированности этого модуля от других вычисле
ний в документах MathCAD, а второе слово «функция» — на способ вызова
модуля и механизмы передачи вычисленных в модуле значений.
Заметим, что принцип модульного программирования в свое время (70–
80 гг. XX в.) существенно повысил производительность труда программи
стов, разрабатывающих программы с использованием алгоритмических язы
ков высокого уровня (подробнее см. п. 8.1). Применение его в пакете MathCAD
позволяет:
§ распараллелить разработку программы между несколькими исполните
лями;
§ создать проблемноориентированные библиотеки ПФ для решения на
учнотехнических задач с размещением библиотек на сайтах Интернета;
§ уменьшить затраты на разработку и сопровождение программ для пакета
MathCAD.

86 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


ТЕМА 7. БЕЗМОДУЛЬНОЕ
ТЕМА
ПРОГРАММИРОВАНИЕ
В ПАКЕТЕ MathCAD PRIME

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

7.1. ПРОГРАММИРОВАНИЕ
ЛИНЕЙНЫХ АЛГОРИТМОВ
Характерной особенностью линейных алгоритмов является
строго последовательное выполнение всех операций алгоритма без пропус
ков и повторений вычислений. Поэтому конструкции, реализующие такой
алгоритм, записываются в документе MathCAD в нужном порядке их выпол
нения, т. е. слева направо — сверху вниз.
Пример 7.1. Составить программу для вычисления корней квадратного
уравнения ax2 + bx + c = 0 по известной формуле
1b 2 b2 1 4ac
x1,2 3 . (7.1)
2a
Алгоритм (7.1) является линейным (убедитесь в этом). Фрагмент доку
мента MathCAD содержит конструкции, приведенные на рисунке 7.1.

Рис. 7.1
Пример программирования линейного алгоритма

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 87


Замечание 7.1. В этом фрагменте x1, x2 являются простыми переменны
ми, цифры 1, 2 — нижними индексами в именах (а не индексными выраже
ниями у элементов массива). Для вставки этих индексов необходимо обра
титься к пункту Математика, группа Стиль, кнопка Подстрочный ин2
декс. В предыдущих версиях MathCAD нужно было нажать клавишу [.]
(десятичная точка).
Задание 7.1. Подобрать коэффициенты a, b, c, получить две пары веще
ственных корней уравнения и две пары комплексных корней. Выполнить их
проверку.
Очевидно, что в реализации линейного алгоритма могут использоваться
обращения к встроенным функциям MathCAD и функциям пользователя.
Задание 7.2. Составить программу вычисления площади треугольника
по формуле
S 1 p( p 2 a)( p 2 b)( p 2 c),

a1b1c
где p 2 — полупериметр; a, b, c — стороны треугольника.
2
Исходные данные: a = 1,6; b = 2,03; c = 0,10.
Задание 7.3. Составить программу вычисления величины z по следую
щей формуле
1 ay c 2
z(x, y) 3 5 4 6 4 sin yt,
7 a 4 b ax2 4 bx 8

где
2 ax 4 b 3
y56 4 arctg(x) 7 1 e 12x .
8 c 4 dx 9

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

7.2. ПРОГРАММИРОВАНИЕ
РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ
Характерной чертой разветвляющихся алгоритмов являет
ся наличие в них нескольких возможных ветвей вычислений. Выбор кон
кретной ветви зависит от выполнения (или невыполнения) заданных усло2
вий на значения переменных алгоритма.
Пример 7.2. Значение переменной y зависит от значений переменной x и
определяется выражением:

2x2 , если x 1 0,
y34 (7.2)
5 x, в противном случае.

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


ем переменной x. На рисунке 7.2 представлена блоксхема этого алгоритма,
хорошо подтверждающая название алгоритма — «разветвляющийся».

88 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 7.2
Блоксхема разветвляющегося алгоритма (7.2)

Возникает вопрос, какие конструкции необходимы для реализации


разветвляющегося алгоритма? Анализ алгоритма (7.2) и «программистская
интуиция» подсказывают необходимость использования:
§ конструкций, проверяющих выполнение заданных условий (чаще гораз
до более сложных, чем условие алгоритма (7.2));
§ конструкций, выбирающих нужную ветвь вычислений в зависимости от
результатов проверки заданных условий.
Для проверки заданных условий в MathCAD используется: выражение
отношений, логические операции и логические выражения.
Выражением отношений (или просто отношением) называется конст
рукция вида
<выр. 1> <операция отношения> <выр. 2>
где <выр. 1>, <выр. 2> — произвольные арифметические выражения; <опе2
рация отношения> — любая из следующих операций: |<|£|>|³|¹|=| (здесь вер
тикальные черточки являются разделительным символом при перечисле
нии).
Смысл этих операций понятен и не нуждается в пояснении. Для ввода
знаков операций отношений можно использовать палитру инструментов Срав2
нение (приведенную на рисунке 7.3) или использовать клавиши, обозначения

Рис. 7.3
Палитра инструментов Сравнение

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 89


1 2 3 4 5 6 2 7 89
7
которых приведены в таблице 7.1. Для вызова
123456 3556 палитры инструментов Сравнение необходимо об
789
3 556
ратиться к вкладке Математика, группа Опе2
12 3142
раторы и символы, категория Операторы.
12 35678292
42 Замечание 7.2. Не следует путать знак опера
2 3 42 ции сравнения = с похожим знаком вывода зна
22 35678292 42 чений переменных. Знак операции = имеет бо´ль
32 3143 42
ший размер и более жирное начертание.
Выражение отношений принимает одно из
2 35678292 42
двух значений: 1 — если заданное отношение вы
1 полняется, 0 — в противном случае. Значение 1
можно интерпретировать как значение ИСТИНА, а 0 — как ЛОЖЬ.
Пример 7.3. На рисунке 7.4 приведен фрагмент документа, в котором
выполнено вычисление некоторых выражений отношений. Выражение от
ношений позволяет проверить двойные неравенства (см. нижнюю строку
фрагмента на рисунке 7.4).

Рис. 7.4
Примеры записи выражений отношений

Внимание! Использование оператора вывода позволяет сразу увидеть


результат вычисления.
Задание 7.4. Пусть значение целой переменной x = 7. Определить значе
ние следующих выражений отношений:
а) x ³ 4;
б) x + 1 ³ 4;
в) x – 4 > 1.
Для проверки более сложных условий используются четыре логические
операции, обозначения которых приведены в таблице 7.2. Эти операции
выполняются только над логическими значениями (при этом 1 обозначает
ИСТИНА, а 0 — ЛОЖЬ).
1 2 3 4 5 6 2 7 89
7
1234256789
7 2 668 18

123456782692
4 4699 19
12345678269199 19
1234567826999 29
785 669199 39
1
Знаки этих операций вводятся с палитры Сравнение (см. рис. 7.3). Ре
зультат выполнения этих операций приведен в таблице 7.3.

90 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


1 2 3 4 5 6 2 7 89
7
123414 516414 27424 827434

41213141 2121213121 2131213121 2141213121


41413121 2121413121 2131413141 4141213141
4121213121 4131213141 2141413141
4121413141 4131413141 4141413141
1
Логическим выражением называется конструкция, состоящая из выра
жений отношений, логических операций и круглых скобок. Логическое
выражение принимает только одно из двух значений: 1 или 0; вычисляется
слева направо с учетом приоритета входящих в выражение операций. Наи
высший приоритет — круглые скобки, а затем по убыванию: NOT, AND,
операции OR и XOR — одинаковый приоритет и самый низкий приоритет
выражения отношений.
Замечание 7.3. Поскольку выражения отношений имеют самый низкий
приоритет, то их необходимо заключать в круглые скобки.
Задание 7.5. Определите порядок вычисления значений логических вы
ражений в документе MathCAD, приведенных на рисунке 7.5.

Рис. 7.5
Примеры логических выражений

В MathCAD имеется ряд встроенных функций, которые возвращают ре


зультат, зависящий от знака или величины аргумента. Приведем некоторые
из них:
§ ceil(x) — наименьшее целое, бо´льшее или равное x;
§ trunc(x) — целая часть вещественного числа x;
§ floor(x) — наибольшее целое, меньшее или равное x;
§ round(x, n) — округленное значение вещественного x с точностью до
n знаков после десятичной точки;
§ Ф(x) — функция Хэвисайда, значение которой определяется следующим
выражением:

20, если x 1 0;
3
4(x) 5 60,5, если x 5 0;
31, если x 7 0;
8

§ sign(x) — функция знака (равная 0, если x = 0; –1, если x < 0 и 1, если


x > 0).
Пример 7.4. Используя функцию Хэвисайда Ф(x), запрограммировать
вычисление функции f (x), график которой показан на рисунке 7.6а.

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 91


Рис. 7.6
Графики функций к примеру 7.4 и заданию 7.6

Решение. показано в следующем фрагменте документа MathCAD:

Задание 7.6. Используя функцию Хэвисайда Ф(x), запрограммировать


вычисление функции f (x), график которой показан на рисунке 7.6б.
Пример 7.5. Написать логическое выражение, принимающее значение 1
при попадании точки с координатами (х, у) в заштрихованные области плос
кости, показанные на рисунке 7.7а.

Рис. 7.7
Изображение областей к примеру 7.5

Запрограммированные алгоритмы вычислений в двух вариантах (логи


ческие выражения и функции пользователя) приведены в следующем фраг
менте документа MathCAD:

Задание 7.7. Написать логическое выражение, принимающее значение 1


при попадании точки с координатами (х, у) в заштрихованные области плос
кости, показанные на рисунке 7.7б.

92 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Для выбора нужной ветви разветвляющегося алгоритма используется
конструкция, названная условной функцией if, записываемая в виде
if (<логическое выражение>, <выр. 1>, <выр. 2>)
где имя функции if вводится с клавиатуры. Если логическое выражение
равно 1, то значение функции определяется выр. 1, в противном случае —
выр. 2. Блоксхема этой функции приведена на рисунке 7.8.

Рис. 7.8
Блоксхема функции if

Условная функция if реализует логическую структуру, которая в про


граммировании называется «ЕСЛИТОИНАЧЕ».
Пример 7.6. Используя условную функцию if, вычислить значение пере
менной у, определяемой следующим выражением:
2ln x, если x 1 0;
y34 x
6e , если x 5 0.
Решение. Блоксхема алгоритма показана на рисунке 7.9. Фрагмент до
кумента MathCAD, реализующий этот разветвляющийся алгоритм, приве
ден на рисунке 7.10. Здесь же выполнено тестирование запрограммирован
ной функции.

Рис. 7.9
Блоксхема разветвляющегося алгоритма (пример 7.6):
Д — да; Н — нет.

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 93


Рис. 7.10
Реализация разветвляющегося алгоритма (пример 7.6)

Замечание 7.4. Стрелка в нижней части блоксхемы, направленная вниз,


обозначает, что результат работы разветвляющегося алгоритма будет ис
пользоваться ниже (это может быть оператор вывода или другие конструк
ции MathCAD).
При программировании разветвляющихся алгоритмов с тремя и более
вычислительными ветвями в качестве выр. 1 и выр. 2 вновь может использо
ваться функция if. Такая структура называется вложенными условными
функциями.
Пример 7.7. Вычислить значение функции y(х), задаваемой следующим
разветвляющимся алгоритмом, состоящим из трех ветвей:

11 x , если x 2 1;
32
331
y 4 6 3 x , если 0 5 x 5 1;
33
3 1 4 | x |, если x 7 1.
38 4

Решение. Блоксхема алгоритма приведена на рисунке 7.11. Так как ал


горитм содержит три вычислительные ветви, то будем использовать вложен
ные условные функции, как показано в следующем фрагменте документа
MathCAD, приведенном на рисунке 7.12.

Рис. 7.11
Блоксхема разветвляющегося алгоритма

94 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 7.12
Реализация разветвляющегося алгоритма примера 7.7

Задание 7.8. Используя условную функцию if, запрограммировать сле


дующий разветвляющийся алгоритм:

330, если x 1 21;


4
z(x) 5 7| x |, если 2 1 6 x 1 1;
4x2 2 30, если x 8 1.
9
Пример 7.8. Запрограммировать алго
ритм, вычисляющий величину x по сле
дующему правилу: если x < 2, то значение x
оставить без изменения, в противном слу
чае величину x увеличить на 2.
Решение. Блоксхема алгоритма приве
дена на рисунке 7.13. Изображенный ал
горитм относится к логической структуре
«ЕСЛИТО». В таком алгоритме выполня
ется только одна ветка (если заданное ло
гическое выражение равно 1). Рис. 7.13
Возникает вопрос: как запрограммиро Блоксхема структуры
«ЕСЛИТО» к примеру 7.8
вать структуру «ЕСЛИТО» в документе
MathCAD? Пример реализации структуры
«ЕСЛИТО» демонстрируется во фрагмен
те документа MathCAD, приведенном на Рис. 7.14
рисунке 7.14. Видно, что при x < 2 пере Реализация структуры
менная х не меняет своего значения. «ЕСЛИТО» (пример 7.8)

7.3. ПРОГРАММИРОВАНИЕ
ЦИКЛИЧЕСКИХ АЛГОРИТМОВ
Циклическим алгоритмом (или просто циклом) называется
алгоритм, содержащий вычисления, повторяющиеся при различных значе
ниях некоторой переменной, названной параметром цикла, а сами повто
ряющиеся вычисления составляют тело цикла. Обобщенная блоксхема цик
лического алгоритма представлена на рисунке 7.15.
Для правильной организации цикла необходимы четыре блока: блок 1
(рис. 7.15) — подготовка к циклу (обычно задание начального значения па
раметра цикла); блок 2 — тело цикла (содержит повторяющиеся вычисле
ния); блок 3 — подготовка к повторению цикла (меняется значение парамет

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 95


ра цикла); блок 4 — проверка условия
окончания или условия продолжения
цикла. Если цикл не завершен, то вновь
повторяется тело цикла, но при изме
ненном (в блоке 3) значении парамет
ра цикла.
В ряде алгоритмов блоки 3 и 4 мо
гут быть переставлены местами.
Заметим, что в программных реа2
лизациях блоки 1, 3, 4 могут быть объ2
единены в одной конструкции.
Типы циклов. По способам органи
зации цикла можно выделить:
а) цикл типа арифметической про
грессии;
б) итерационный цикл.
Особенностью цикла типа арифме
тической прогрессии является измене
ние параметра цикла по закону ариф
Рис. 7.15
Обобщенная блоксхема циклического метической прогрессии (т. е. от началь
алгоритма ного значения (x0) до конечного (xk) с
заданным шагом (dx)). В этом случае
априори (т. е. до выполнения цикла) можно определить количество n повто
рений тела цикла по формуле
2 x 1 x0 3
n46 k 5 1,
8 dx 79
(7.3)

где [z] означает целую часть вещественной величины z.


Пример 7.9. Сформировать вектор z из n элементов, определяемых соот
ношением
1
zi 1 , i 1 1, ..., n; n 1 10.
(i 2 4)
В этом примере i — параметр цикла, а тело цикла (вычисление элемен
тов zi) будет повторено n = 10 раз, т. е. алгоритм является циклом типа ариф
метической прогрессии.
В итерационных циклах параметр меняется по более сложному закону,
поэтому невозможно априори, т. е. не выполняя вычислений, определить
количество повторений тела цикла. Итерационные циклы используются в
таких вычислительных алгоритмах, где вместо точного решения рассматри
ваемой задачи ищется приближенное решение, вычисляемое последователь
но. При этом, чем больше итераций (т. е. повторений тела цикла), тем с
большей точностью получается приближенное решение.
Пример 7.10. Вычислить приближенное значение а , используя итера
ционную процедуру:
xn 11 4 0,5 5 26 xn 1
a 3
, n 4 0,1, ...; x0 4 a.
8 xn 79 (7.4)

96 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 7.16
График сходимости итерационного процесса (7.4)

На первой итерации в правую часть формулы (7.4) подставляется x0 и


вычисляется x1. На второй итерации подставляется уже x1, а вычисляется x2
и т. д. В качестве приближенного значения принимают такое значение xn+1,
для которого выполняется условие | xn211 2 a | 3 4, где e > 0 достаточно малая
величина (порядка 10–8–10–6).
На рисунке 7.16 показан график зависимости погрешности 1n 2 | xn 3 a |
при a = 9 от числа итераций n. Из графика видно, что погрешность вычисле
ния с каждой итерацией существенно (на два и более порядка) уменьшается.
В этом случае говорят о сильной сходимости итерационного процесса.
Программирование цикла типа арифметической прогрессии. Параметр
такого цикла задается дискретной переменной (называемой также ранжиро
ванной переменной), и тогда конструкции, входящие в тело цикла, распола
гаются, начиная от этого описания и до конца документа MathCAD или до
конструкции, переопределяющей дискретную переменную — параметр цик
ла.
Пример 7.11. Вычислить значения функции
ln(x) 1 1
y(x) 2
a 2 1 b2
для всех x, изменяющихся в интервале [–0,5; 0,5] с шагом Dx = 0,1, где a, b —
заданные вещественные числа.
Решение. В данной задаче переменная x является управляющей перемен
ной цикла. На рисунке 7.17а приведена блоксхема изменения значений
этой переменной. В программной реализации (рис. 7.17б) параметр цикла
задается дискретной переменной, которая объединяет функции блоков 1, 3,
4 (см. рис. 7.15). Тело цикла начинается после задания дискретной перемен
ной и включает вычисление очередного значения функции y(x). Описание

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 97


Рис. 7.17
К примеру 7.11:
Д — да; Н — нет; К — конец цикла.

функции пользователя y(x) и задание переменных a, b размещаются в доку#


менте MathCAD до начала цикла.
Задание 7.9. Определите количество вычисленных значений функции
y(x) в примере 7.11, используя формулу (7.3).
Фрагмент документа, в котором реализован алгоритм решения задачи
примера 7.9, приведен на рисунке 7.18. Здесь параметром цикла является
переменная i, которая задается дискретной переменной.

Рис. 7.18
Формирование вектора z (пример 7.9)

Пример 7.12. Для переменной х, меняющейся от 1 до 2 с шагом 0,1, сфор#


мировать вектор q из соответствующих значений функции y(x) = x2 + 1, т. е.
q1 = y(1,0), q2 = y(1,1), ..., qn = y(1,1).
Решение. В этом циклическом алгоритме присутствуют две переменные,
которые могут быть взяты в качестве параметра цикла: номер j проекции qj
формируемого вектора и значение аргумента x. Примем в качестве параметра
цикла переменную j, которая должна меняться от 1 до п с шагом 1, а в теле
цикла значения аргумента x будем вычислять по формуле xj = 1 + (j – 1) × 0,1.
Для вычисления неизвестного значения п обратимся к формуле (7.3) и полу#
чим п = 12. Фрагмент документа, реализующий рассмотренный алгоритм
формирования вектора q, приведен на рисунке 7.19.

98 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 7.19
Формирование вектора в примере 7.12

Замечание 7.5. По условиям задачи нет необходимости формировать


массив из изменяющихся от 1 до 2 значений аргумента x. Однако безмодуль
ное программирование циклов в MathCAD содержит требование: если в пра
вой части оператора присваивания присутствует параметр цикла, то в левой
части должен стоять элемент массива с таким же параметром. Этим объясня
ется необходимость формирования массива x.
Циклы, рассмотренные в этих примерах, относятся к простым циклам,
в которых присутствует только один параметр цикла. В кратных циклах
один цикл (внутренний) вкладывается в тело другого цикла, называемого
внешним циклом. Поэтому в кратных циклах присутствуют несколько па
раметров циклов.
Пример 7.13. Сформировать матрицу (двумерный массив) В по следую
щему правилу:
1
Bi,j 1 ; i 1 1, ..., 3; j 1 1, ..., 6.
i 2 j 21
Решение. Очевидно, что формирование матрицы надо осуществлять в
цикле с двумя параметрами: i — параметр, определяющий номер строки; j —
параметр, определяющий номер столбца матрицы. Цикл с двумя параметра
ми называется двойным циклом. В двойном цикле вложенный цикл называ
ется внутренним. Параметр внутреннего цикла всегда меняется быстрее,
чем внешнего. Это означает, что для каждого значения внешнего параметра
цикла меняются все значения внутреннего параметра.
Примем в качестве внешнего параметра цикла i, а в качестве внутренне
го — переменную j. На рисунке 7.20 приведен фрагмент документа, форми

Рис. 7.20
Формирование матрицы В примера 7.13

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 99


рующий матрицу В в соответствии с принятыми параметрами цикла. В этом
фрагменте для каждого значения параметра внешнего цикла i (в документе
он задается раньше) параметр внутреннего цикла принимает все значения
от 1 до 6, т. е. формирование матрицы выполняется построчно.
Заметим, что в приведенных на рисунках 7.18–7.20 фрагментах систем
ная переменная ORIGIN=1.
Пример 7.14. Сформировать матрицу (двумерный массив) D следующей
структуры:
11 1 1 12
30 2 2 24
D53 4.
30 0 3 34
30 0 0 44
6 7
Видно, что элементы, лежащие левее главной диагонали, равны 0, а ос
тальные равны номеру строки. Эту закономерность можно выразить следую
щим алгоритмом:
20, если j 1 i;
Di,j 3 4
6i, если j 5 i.
Решение. Видно, что приведенный ал
горитм формирования содержит двойной
цикл, и в теле внутреннего цикла находит
ся разветвляющийся алгоритм вычисления
Рис. 7.21 элемента Di,j. Фрагмент документа, реали
Формирование матрицы D зующий описанный алгоритм формирова
примера 7.14
ния, показан на рисунке 7.21.
Программирование итерационных циклов. Для программирования ите
рационных циклов необходимо использовать подпрограммуфункцию с опе
ратором цикла while.
В заключение заметим, что рассмотренные способы безмодульного про
граммирования можно рекомендовать для реализации достаточно простых
алгоритмов. Более сложные алгоритмы целесообразно реализовывать в виде
подпрограммыфункции, которая может содержать конструкции, присутст
вующие в алгоритмических языках высокого уровня (условные операторы,
операторы цикла и т. д.). В следующих темах будут рассмотрены конструк
ции пакета MathCAD PRIME, позволяющие реализовывать различные алго
ритмы в подпрограммефункции.

& ВОПРОСЫ И ЗАДАНИЯ ДЛЯ САМОКОНТРОЛЯ


ПО ТЕМЕ 7

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


2. Назовите характерную особенность линейного алгоритма.
3. Составьте блоксхему и реализуйте в документе MathСАD алгоритм вычисле
ния площади треугольника по длинам его сторон:

S 1 p(a 2 p)(b 2 p)(c 2 p),

100 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


a1b1c
где p 2 — полупериметр сторон треугольника.
2
4. Назовите характерную особенность разветвляющегося алгоритма.
5. Условная функция if и результат ее выполнения.
6. Составьте блоксхему и реализуйте в документе MathСАD алгоритм вычисле
ния функции:
32e x 12 , если x 2 0;
q ( x) 4 5
7 x 1 3, если x 6 0.
7. Составьте блоксхему и реализуйте в документе MathСАD алгоритм вычисле
ния функции:
13x, если x 2 32;
4
y(x) 5 7| x |, если 3 2 6 x 2 2;
4 x 3 3, если x 8 1.
9
8. В чем заключается характерная особенность простого цикла?
9. Составьте блоксхему и реализуйте в документе MathСАD алгоритм формирова
ния вектора, состоящего из n = 10 элементов по правилу:
21i
xi 2 , i 2 1,2, ..., n.
i3 1 ln(i)
Выведите сформированный вектор.
10. Составьте блоксхему и реализуйте в документе MathСАD алгоритм формирова
ния вектора z, состоящего из n = 6 элементов по правилу:

2x , если xi 1 0;
zi 3 4 i i 3 1,2, ..., n.
6ln(xi ), если xi 5 0,
Выведите сформированный вектор.
11. В чем заключается характерная особенность двойного цикла?
12. Какая закономерность существует в изменении значений параметров внутрен
него и внешнего циклов?
13. Составьте блоксхему и реализуйте в документе MathСАD алгоритм формирова
ния матрицы М размером 4´4 следующей структуры:

11 0 0 02
30 2 0 04
M53 4.
30 0 3 04
30 447
6 0 0

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 101


ТЕМА 8. МОДУЛЬНОЕ
ТЕМА
ПРОГРАММИРОВАНИЕ
В ПАКЕТЕ MathCAD PRIME

Вэтой теме будут рассмотрены описание подпрограммы


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

8.1. СУЩНОСТЬ И ПРЕИМУЩЕСТВА


МОДУЛЬНОГО ПРОГРАММИРОВАНИЯ
Вопросам модульного программирования было посвящено
большое число публикаций (например, [4], [5]). Основная идея модульного
программирования заключается:
§ в разбиении алгоритма решения той или иной задачи на слабо зависимые
друг от друга фрагменты вычислений (на подзадачи) и реализации каж
дого такого фрагмента в виде программных модулей;
§ в вызове в нужных местах основной программы соответствующих моду
лей с передачей необходимых данных.
Программа, реализующая алгоритм вычислений в виде модулей и обра
щения к ним, получила название модульной программы.
Что же дает модульное программирование? К основным преимуществам
можно отнести следующее.
1. Слабая зависимость модулей между собой позволяет при необходимо
сти распараллелить разработку программы, поручив это программистам с
разной квалификацией.
2. Модульную программу легче отлаживать, так как модули могут быть
подвергнуты автономному тестированию и отладке, т. е. каждый модуль
может проходить тестирование и отладку отдельно на подготовленном набо
ре тестовых данных. Считается, что усилия, затрачиваемые на отладку мо
дуля, пропорциональны квадрату числа операторов, реализующих этот мо
дуль. Поэтому автономное тестирование (при правильно определенных раз

102 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


мерах модуля) дает возможность протестировать все ветви вычислительного
алгоритма, реализуемого в модуле.
3. Модульную программу легче сопровождать и модифицировать. В мо
дуль можно внести изменения, переписать его или заменить без внесения
изменений в другие модули (это отчасти является признаком слабой зависи
мости между модулями).
4. Но самое главное — использование библиотек готовых модулей, ори
ентированных на решение определенного класса научнотехнических задач,
например тепловой расчет строительных конструкций. Использование мо
дулей таких библиотек существенно снижает затраты на программирова
ние, и если эти модули прошли достаточно полное тестирование, то их при
менение уменьшает количество ошибок в разработанном программном обес
печении.
При реализации модульного программирования большое значение имеет
правильное определение размера модуля. Приводятся разные рекомендации
по размеру модуля: от нескольких десятков до нескольких сотен операторов.
Однако ограничение на размер модуля не гарантирует модульность разра2
ботанного ПО. Поэтому размер модуля должен определяться исходя из ком
промисса между ограничением на число операторов (скажем, не более 60) и
высокой степенью независимости модуля. Высокая степень независимости
определяется сильными внутренними связями в модуле и слабыми взаимо2
связями между модулями.
Слабую взаимосвязь между модулями можно охарактеризовать инвари
антностью модулей к изменению алгоритма. Если изменение алгоритма при
ведет к изменению сравнительно большого числа модулей, то это говорит о
сильной взаимосвязи между модулями. В этом случае можно объединить
зависимые между собой модули, получив один более крупный модуль, либо
алгоритм реализовать в виде отдельного модуля, вынося его из других моду
лей. Отсутствие сильной взаимосвязи внутри модуля часто объясняется на
личием в нем нескольких независимых (или слабо зависимых) вычислитель
ных алгоритмов. Каждый из этих алгоритмов может быть реализован в виде
отдельных модулей.
В MathCAD программный модуль может быть реализован в виде подпро2
граммыфункции.

8.2. ОПИСАНИЕ ПОДПРОГРАММЫ"ФУНКЦИИ


И ЛОКАЛЬНЫЙ ОПЕРАТОР
ПРИСВАИВАНИЯ

Перед тем как использовать подпрограммуфункцию (ПФ),


нужно ее задать, т. е. выполнить описание.
Описание ПФ размещается в рабочем документе перед ее вызовом и
включает в себя имя подпрограммыфункции, список формальных парамет
ров (который может отсутствовать) и тело подпрограммыфункции. Для ввода
конструкций в тело ПФ используется палитра инструментов Программи2
рование, приведенная на рисунке 8.1. К этой палитре можно обратиться

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 103


Рис. 8.1
Палитра инструментов Программирование

через вкладку Математика, группа Операторы и символы, категория Про2


граммирование.
Каждая ПФ MathCAD имеет оригинальное имя, посредством которого
осуществляется обращение к ней. Через это же имя (и только через это имя)
возвращается результат выполнения ПФ.
После имени ПФ идет список формальных параметров, заключенный в
круглые скобки. Через формальные параметры внутрь ПФ передаются дан
ные, необходимые для выполнения вычислений внутри программы, т. е. все
формальные параметры являются входными.
В качестве формальных параметров могут использоваться имена простых
переменных, массивов и функций. Формальные параметры отделяются друг
от друга запятой.
Замечание 8.1. ПФ может не иметь формальных параметров, и тогда
данные передаются через имена переменных, определенных выше описа
ния ПФ.
Тело подпрограммы2функции включает любое число операторов: локаль
ных операторов присваивания, условных операторов и операторов цикла, а
также вызов других ПФ и функций пользователя.
Порядок описания подпрограммы"функции MathCAD. Для ввода в рабо
чий документ описания ПФ необходимо выполнить следующие действия:
§ ввести имя ПФ и список формальных параметров, заключенный в круг
лые скобки (см. замечание 8.1);
§ ввести символ «:» (на экране отображается как «: =»);
§ открыть палитру Программирование и щелкнуть кнопкой с изображе
нием вертикальной черты (см. рис. 8.1). На экране появится вертикаль
ная черта и одна строка (поле) для ввода первого оператора тела ПФ;
§ для ввода других строк (полей) в тело ПФ необходимо нажать клавишу
[Enter]. При этом новая строка добавляется внизу от выделенной к этому
моменту строки. Для ввода пустой строки перед сформированной стро

104 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


кой, необходим курсор поместить в начало строки и нажать клавишу
[Enter];
§ в последней строке тела ПФ размещается конструкция, определяющая
результат работы ПФ, и этот результат передается через имя ПФ в про
грамму, из которой была вызвана ПФ;
§ для удаления того или иного оператора или поля ввода из тела ПФ нуж
но выделить исключающий элемент и нажать клавишу [Delete].
На рисунке 8.2 приведен пример описания ПФ, в которой формальным
параметром является простая переменная x, тело ПФ
включает два локальных оператора присваивания и
значение переменной z, которая определяет возвращае
мый (через имя ПФ) результат выполнения ПФ. Эта
переменная находится в последней строке ПФ.
Замечание 8.2. Если результатом работы ПФ явля
ются несколько величин, то из них в теле ПФ необхо Рис. 8.2
димо сформировать массив и его имя поместить в по Пример описания
следней строке тела ПФ. подпрограммы
функции
Локальный оператор присваивания. Для задания
внутри программы значения какойлибо переменной используется так на
зываемый локальный оператор присваивания, имеющий вид:
<имя переменной> ¬ <выражение>
Символ ¬ вводится с палитры Программирование.
Внимание! Использование обычного оператора присваивания в теле ПФ
(на экране отображается : =) приводит к синтаксической ошибке.

8.3. ОБРАЩЕНИЕ К ПОДПРОГРАММЕ"ФУНКЦИИ


MathCAD
Для выполнения ПФ необходимо обратиться к ее имени с
указанием списка фактических параметров (если в описании программы
присутствует список формальных параметров), т. е.
<имя ПФ> (<список фактических параметров>)
Фактические параметры указывают, при каких конкретных значениях
осуществляются вычисления в теле ПФ. Фактические параметры отделя
ются друг от друга запятой.
Очевидно, что между фактическими и формальными параметрами долж
но быть соответствие по количеству, порядку следования и типу. Послед
нее соответствие означает:
§ если формальным параметром является простая переменная, то в качест
ве фактического может использоваться константа, переменная, арифме
тическое выражение;
§ если формальным параметром является вектор или матрица, то фактиче
ским должен быть вектор или матрица;

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 105


§ если формальным параметром является имя встроенной функции или
другой программы, то и фактическим параметром должен являться тот
же объект.
Замечание 8.3. Обращение к ПФ должно находиться после ее описания, и
к моменту обращения фактические параметры должны быть определены.
Пример 8.1. Обращения к программе f (x), приведенной на рисунке 8.2,
могут иметь вид, представленный на рисунке 8.3.
Заметим, что переменная z никак не связана с локальной переменной z,
используемой внутри тела ПФ.

Рис. 8.3
Обращения к подпрограммефункции

Замечание 8.4. Передать данные внутрь П


Ф можно, используя внутри подпрограммы пе
ременные, определенные до описания ПФ (см.
пример на рисунке 8.4).
Хотя значение переменной х изменилось
внутри ПФ, вне тела ПФ эта переменная со
хранила свое прежнее значение.
Замечание 8.5. Имена фактических пара
метров при вызове ПФ могут либо совпадать,
либо не совпадать с именами ее формальных
Рис. 8.4
параметров.
Подпрограммафункция без
формальных параметров

8.4. ПРОГРАММИРОВАНИЕ
ЛИНЕЙНЫХ АЛГОРИТМОВ
В ПОДПРОГРАММЕ"ФУНКЦИИ MathCAD
Напомним, что под линейным алгоритмом понимается вы
числительный процесс, в котором необходимые операции выполняются стро
го последовательно (см. п. 7.1). Операторы, реализующие этот алгоритм, в
теле ПФ также размещаются последовательно и выполняются все, начиная
с первого и заканчивая последним.
Пример 8.2. Оформим в виде ПФ вычисление корней квадратного урав
нения ax2 + bx + c = 0 по формуле

1b 1 (b2 1 4ac)1/2
x1,2 2 .
2a
Решение. Описание ПФ root_ poly2 и обращение к ней приведено на
рисунке 8.5. Эта ПФ имеет три входных формальных параметра — коэффи
циенты квадратного уравнения. Выходом является вектор с двумя компо

106 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 8.5
Программирование линейного алгоритма (к примеру 8.2)

нентами. Заметим, что величины x1, x2 являются простыми переменными, а


не элементами одномерного массива. Поэтому имена этих переменных име
ют нижние индексы. Видно, что приведенная ПФ реализует линейный алго2
ритм — все операторы выполняются всегда строго последовательно.
Задание 8.1. Вставьте в документ MathCAD описание ПФ root_ poly2 и
подберите коэффициенты квадратного уравнения, чтобы корни уравнения
были вещественными.

8.5. ПРОГРАММИРОВАНИЕ
РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ
В ПОДПРОГРАММЕ"ФУНКЦИИ MathCAD

Напомним, что в разветвляющихся алгоритмах присутству


ет несколько ветвей вычислительного процесса. Выбор конкретной ветви
зависит от выполнения (или невыполнения) заданных условий на значения
переменных алгоритма.
Для программирования разветвляющихся алгоритмов в подпрограмме
функции MathCAD можно использовать условную функцию и условный опе2
ратор if.
Используя эти конструкции, можно изменить последовательное выпол
нение операторов. Условная функция if была рас
смотрена в п. 7.2, поэтому перейдем к изучению ус
ловного оператора if.
Условный оператор. Этот оператор используется
только в теле П2Ф, и для его ввода необходимо щелк
нуть по кнопке if палитры Программирование. На
экране появится конструкция с двумя полями вво
да, изображенная на рисунке 8.6.
Рис. 8.6
В поле 1 вводится логическое выражение УСЛ Структура условного
(в простейшем случае это выражение отношений). оператора if

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 107


а б в
Рис. 8.7
Различные структуры условных операторов

В поле 2 вводится конструкция ВЫР1 (как правило, арифметическое выраже#


ние), которая выполняется, если проверяемое логическое выражение прини#
мает значение 1. Если УСЛ = 0, то ВЫР1 не выполняется. Это соответствует
условной структуре, называемой «ЕСЛИ#ТО».
Для получения условной структуры «ЕСЛИ#ТО#ИНАЧЕ» используется
оператор else, вводимый с палитры Программирование. Для ввода этого опе#
ратора достаточно установить курсор в поле 1 или в поле 2 оператора if, а
затем щелкнуть по кнопке else палитры Программирование. Получаем кон#
струкцию, показанную на рисунке 8.7а. В поле 3 вводятся конструкции,
которые будут выполняться, если логическое выражение УСЛ в поле 1 будет
равно 0 (т. е. FALSE).
Пример 8.3. Составим описание П#Ф, вычисляющей функцию y(x), за#
данную в примере 7.2.
Решение. Описание и вызов П#Ф приведены на рисунке 8.8. Заметим, что
тело П#Ф содержит только один условный оператор, и результат его выпол#
нения определяет значение П#Ф.
Замечание 8.6. Конструкции, стоящие в поле 3 оператора else, будут вы#
полняться только тогда, когда не выполнились конструкции, стоящие в дру#
гих полях оператора if. Поэтому этот оператор стоит, как правило, в конце
оператора if (см. формы на рисунке 8.7).
Для реализации более сложных раз#
ветвляющихся алгоритмов используются
формы оператора if, показанные на рисун#
ках 8.7б, в, образованные с помощью опе#
раторов elseif и alsoif. Эти операторы вво#
дятся в оператор if точно так же, как и в
оператор else.
Оператор elseif работает следующим об#
Рис. 8.8 разом: конструкции, стоящие в поле 5 (см.
Реализация разветвляющегося
алгоритма примера 8.10.1 рис. 8.7б), будут выполняться только в том

108 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


случае, если логическое выражение в поле 4 равно 1 (т. е. TRUE) и не были
выполнены конструкции, стоящие выше этого оператора elseif.
Пример 8.4. Составим описание ПФ для вычисления переменной z(t) по
формуле
3t3 , t 1 23;
4
z(t) 5 7ln(t), t 6 4;
4t2 , 2 3 8 t 8 4.
9
Решение. Описание ПФ и ее вызов приведены на рисунке 8.9. Здесь име
на формального параметра (переменная t) и фактического параметра (значе
ния дискретной переменной x) не совпадают.

Рис. 8.9
Реализация разветвляющегося алгоритма примера 8.4

Оператор alsoif работает следующим образом: конструкции, стоящие в


поле 5 (см. рис. 8.7в), будут выполняться только в том случае, если логиче
ское выражение в поле 4 равно 1 (т. е. TRUE) и не зависит от того, были ли
выполнены конструкции, стоящие выше этого оператора alsoif.
Пример 8.5. Используя оператор alsoif, запрограммировать в виде ПФ
алгоритм вычисления функции, график которой приведен на рисунке 8.10а.

а б

Рис. 8.10
К примеру 8.5

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 109


Решение. Фрагмент документа с описанием ПФ приведен на рисун
ке 8.10б.
Замечание 8.7. Операторы elseif и alsoif используются для реализации
разветвляющегося алгоритма с тремя и более ветвями вычислений путем
реализации вложенных условных конструкций. Однако такой способ реали
зации имеет определенные недостатки: он не соответствует аксиоматике
структурного программирования; затруднителен при анализе программной
реализации. Поэтому приведем следующие рекомендации по программиро
ванию разветвляющихся алгоритмов в ПФ MathCAD:
§ если разветвляющийся алгоритм содержит две ветви, то следует исполь
зовать структуру «ЕСЛИТОИНАЧЕ» (см. пример 8.3);
§ если разветвляющийся алгоритм содержит три ветви и более, то следует
использовать структуры «ЕСЛИТО», при этом количество структур рав
но (или меньше на одну) числу ветвей алгоритма (см. пример 8.5).
Пример 8.6. Составим описание ПФ для вычисления переменной z(t),
определенной в примере 8.4, используя структуры «ЕСЛИТО».
Решение. Описание ПФ и ее вызов приведены на рисунке 8.11. Сравни
вая реализацию разветвляющегося алгоритма в этом примере и в приме
ре 8.4, можно сделать вывод, что реализация этого примера обеспечивает
более легкое чтение и понимание вычислительного алгоритма.

Рис. 8.11
Реализация разветвляющегося алгоритма примера 8.6

Задание 8.2. Составьте описания ПФ, реализующих следующие разветв


ляющиеся алгоритмы:

1 1 , если x 2 1;
32 x
33
а) y 5 41 3 x , если 0 6 x 6 1;
33
3 1 4 | x |, если x 7 0.
38 4

110 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


1 1 , если | x 2 y | 3 4;
52 x 6 1
5
71
б) 8(x, 4) 9 5 3 x 6 y, если | x 2 y |
4;
3
5где y 9 | x | .

Задание 8.3. На рисунке 8.12 приведены два варианты ПФ. Определите,
будут ли эти варианты (и если да, то какие) правильно реализовывать алго
ритм вычисления функции z(t) примера 8.4.

а б

Рис. 8.12
Варианты реализации алгоритма вычисления z(t)
Замечание 8.8. Если в полях 2, 3, 5, 6 (см. рис. 8.7) необходимо размес
тить несколько конструкций, то для ввода дополнительных полей достаточ
но поставить курсор в нужное поле и нажать клавишу [Enter].
Пример 8.7. Составьте описание ПФ, вычисляющей значения двух по
линомов x(t), y(t) нулевой или первой степени. Порядок полиномов задается
переменной n. Если n < 0 или n > 1, то значения полиномов равны 0.
Решение. Описание ПФ и обращение к ней при разных значениях фак
тических параметров приведено на рисунке 8.13. Обратите внимание, что
коэффициенты полиномов передаются через массивы a, b.

Рис. 8.13
Реализация алгоритма примера 8.7

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 111


Рис. 8.14
Реализация алгоритма примера 8.8

Пример 8.8. Даны два числа x, y. Составить описание ПФ, которая фор
мирует вектор, первая проекция которого равна max(x, y), а вторая проек
ция — min(x, y).
Решение. Описание ПФ и обращение к ней приведено на рисунке 8.14.
Выходным параметром является массив v.
Задание 8.4. Даны три числа a, b, c. Составить ПФ, реализующую сле
дующий алгоритм. Если a £ b £ c, то все числа заменить их квадратами, если
a > b > c, то каждое число заменить максимальным значением из этих трех
чисел, в противном случае — сменить знаки у чисел. Выполнить тестирова
ние ПФ.
Задание 8.5. Координаты точки на плоскости задаются двумя числа
ми x, y. Составить ПФ, вычисляющую номер четверти на плоскости, в кото
рую попала точка. Выполнить тестирование ПФ.
Задание 8.6. Длина сторон треугольника задается числами a, b, c. Со
ставить ПФ, вычисляющую значение целой переменной n по следующему
правилу: n = 3, если три стороны равны; n = 2, если любые две стороны
равны; n = 1, если все три стороны имеют разную длину. Выполнить тести
рование ПФ.

8.6. ПРОГРАММИРОВАНИЕ
ЦИКЛИЧЕСКИХ АЛГОРИТМОВ
В ПОДПРОГРАММЕ"ФУНКЦИИ MathCAD

Напомним (см. п. 7.3), что циклические алгоритмы (циклы)


содержат повторяющиеся вычисления, зависящие от некоторой перемен
ной. Такая переменная называется параметром цикла, а сами повторяю
щиеся вычисления составляют тело цикла. Циклы можно условно разде
лить на две группы:
§ циклы типа арифметической прогрессии;
§ итерационные циклы.
Особенности этих циклов были рассмотрены в п. 7.3.

112 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Программирование цикла типа арифметической прогрессии. Для про
граммирования таких циклов используется оператор цикла for (часто назы
ваемый оператором цикла с параметром).
Для ввода этого оператора необходимо выполнить следующие действия:
§ щелкнуть по кнопке for палитры Программирование. На экране появят
ся поля ввода, изображенные на рисунке 8.15а;

а б

Рис. 8.15
Структуры операторов циклов

§ в поле ввода 1 ввести имя переменной, являющейся параметром цикла;


§ в поле 2 — закон изменения параметра цикла, используя для этого опи
сание дискретной переменной или описание массива;
§ в поле 3 — операторы, составляющие тело цикла.
Пример 8.9. Составить описание ПФ, реализующей алгоритм примера 7.9.
Решение. Описание ПФ и ее вызов приведены на рисунке 8.16. Заметим,
что значение системной переменной ORIGIN (начальное значение индексно
го выражения) задается равным 1.

Рис. 8.16
Подпрограммафункция формирования вектора

Пример 8.10. Для x, меняющегося от –2 до 2 с шагом 0,5, вычислить


значение f (x) = e–x × сos(2x) и сформировать из этих значений вектор y, т. е.
y1 = f (–2), y2 = f (–1,5) и т. д.
Решение. В этом примере количество повторений тела цикла определяет
ся по формуле

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 113


3 xk 1 x0 4 2 1,
57 d 68
где xk, x0 — конечное и начальное значения параметра цикла, d — шаг его
изменения. Подставив значения, получаем (2 – (–2))/0,5 + 1 = 9. Следова
тельно, сформированный вектор y будет содержать 9 элементов. Необходи
мо отметить, что алгоритм формирования содержит два параметра цикла:
первый параметр — переменная x, определяющая текущее значение аргу
мента функции f(x); второй — это переменная i, определяющая текущее зна
чение индекса у элемента формируемого вектора. Но между этими двумя
параметрами имеется однозначное соответствие, поэтому цикл нужно орга
низовывать только по одному параметру, например по переменной x, а зна
чение второго параметра будет вычисляться в теле цикла.
Описание ПФ и ее вызов приведены на рисунке 8.17. Видно, что в теле
цикла выполняется два оператора. Первый оператор формирует элемент
массива y, а второй изменяет на 1 значение индекса.

Рис. 8.17
Формирование вектора примера 8.10

Отметим несколько особенностей оператора for, которые выгодно отли


чают его от аналогичных конструкций других языков программирования
(например, языка Pascal).
Первая особенность состоит в том, что переменная цикла может прини
мать вещественные значения. Эту особенность хорошо иллюстрирует рас
смотренный пример 8.10.
Вторая особенность заключается в том, что значения переменной цикла
могут задаваться вектором или матрицей, а также последовательностью чи
сел. Это иллюстрируется примерами 8.11 и 8.12.
Третья особенность состоит в том, что переменная цикла может прини
мать значения различных типов — численное, текстовое и т. д. Эту особен
ность иллюстрирует пример 8.12.
Пример 8.11. Составить описание ПФ, вычисляющей сумму вектора с
проекциями |2, 2, 7|.
Решение. На рисунке 8.18 приведено описание ПФ и обращение к ней, в
которой слагаемые задаются значениями параметра цикла.

114 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 8.18
Описание ПФ примера 8.11

Пример 8.12. Запрограммировать ПФ, которая формирует одномерный


массив из объектов разных типов.
Решение. На рисунке 8.19 приведено описание ПФ и обращение к ней.
Видно, что переменная цикла iM принимает значения различных типов: ве
щественное, комплексное и строковое.

Рис. 8.19
Описание ПФ примера 8.12

Задание 8.7. Составьте описание ПФ формирования вектора y из приме


ра 8.10, приняв в качестве параметра цикла переменную i. Выполните тести
рование этой ПФ.
Задание 8.8. Составьте описание ПФ формирования вектора q приме
ра 7.12. Выполните тестирование этой ПФ.
Программирование итерационных циклов. Для программирования та
ких циклов используется оператор цикла while. Для ввода этого оператора
необходимо выполнить следующие действия:
§ щелкнуть по кнопке while палитры Программирование. На экране поя
вятся элементы, показанные на рисунке 8.15б;
§ в поле 1 ввести условие выполнения цикла;
§ в поле 2 ввести операторы тела цикла. В теле цикла должны присутство
вать операторы, которые должны менять значение условия цикла, иначе
цикл будет продолжаться бесконечно.
Оператор цикла while выполняется следующим образом: обнаружив опе
ратор while, MathCAD проверяет указанное в операторе условие. Если оно
равно 1 (т. е. выполняется), то выполняется тело цикла, и снова проверяется
условие. Если условие принимает значение 0, то цикл заканчивается.

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 115


Пример 8.13. Составим ПФ, реализующую итерационную процедуру
приближенного вычисления корня квадратного, описанную в примере 7.10.
Решение. Описание ПФ приведено на рисунке 8.20. Как видно из текста
ПФ, нет необходимости хранить в памяти все приближенные решения x0,
x1, x2, ... Достаточно хранить предыдущее (старое) значение (обозначим его
как xc) и последующее (новое) значение xn. В теле цикла меняется значе
ние xn, которое входит в условие продолжения цикла.

Рис. 8.20
Реализация итерационного цикла примера 8.13

Оператор break (средство от зацикливания). К сожалению, организация


итерационного цикла с помощью оператора while без дополнительных средств
контроля может привести к зацикливанию, т. е. повторению тела цикла
бесконечное число раз. Например, задав при обращении к ПФ e < 0, получа
ем зацикливание. Поэтому в MathCAD имеется специальный оператор break,
который позволяет выйти из цикла или приостановить исполнение програм
мы при выполнении заданного условия.
Для ввода оператора break необходимо щелкнуть по кнопке break панели
Программирование (нельзя вводить этот оператор с клавиатуры по симво
лам). Оператор break размещается в поле ввода 2 условного оператора if, а в
поле 1 размещается условие, при выполнении которого происходит прекра
щение работы цикла или программы. Поэтому первоначально вводится опе2
ратор if, а затем заполняются поля этого оператора. Следующий пример
показывает написание подпрограммы без зацикливания с использованием
оператора break.
Пример 8.14. Составим ПФ, реализующую итерационную процедуру
вычисления корня квадратного без зацикливания.
Решение. Описание ПФ приведено на рисунке 8.21. В этой подпрограм
ме число повторений тела ограничено 10 000. Если за это число итераций
приближенное значение корня с заданной точностью не найдено, то пара
метр ierr — индикатор ошибки получает значение 1, что говорит об ошибке
в вычислительном процессе.
Для передачи двух вычисленных значений xn, ierr используется вектор.
Если ierr = 1, то переменной xn присваивается значение строковой констан
ты «not solve!!!» для привлечения внимания пользователя к ошибочному

116 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 8.21
Реализация
итерационного
цикла без
зацикливания

завершению работы ПФ. Заметим, что после обращения к ПФ необходимо


обязательно проверить значение индикатора ошибки ierr и, в зависимости от
его значения, либо продолжить работу с вычисленным значением корня
квадратного, либо прекратить дальнейшие вычисления и определить причи
ну появления ошибки.
Пример 8.15. Составить ПФ, осуществляющую суммирование ряда с бес
конечным числом слагаемых. Накопление суммы прекращается, как только
очередное слагаемое по абсолютной величине становится меньше заданной
погрешности e.
Решение. Описание ПФ и ее вызов показаны на рисунке 8.22. Заметим,
что первым формальным параметром является имя функции пользователя,

Рис. 8.22
Реализация
итерационного
цикла
примера 8.15

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 117


определяющей зависимость величины члена ряда от его номера. При вызове
этот формальный параметр заменяется фактическим — именем функции
пользователя, описанной до обращения к ПФ.
Программирование двойных циклов. Напомним, что элементы матриц
(двумерных массивов) имеют два индекса: первый индекс определяет номер
строки, а второй — номер столбца, на пересечении которых находится ука
занный элемент. Например, запись A2,4 означает обращение к элементу, стоя
щему на пересечении второй строки и четвертого столбца.
Поэтому в общем случае для работы с матрицами необходимо использо
вать так называемый двойной цикл, у которого тело одного цикла, называе
мого внутренним, «вкладывается» в тело другого — внешнего цикла. Каж
дый из этих циклов имеет свой параметр: параметр внешнего цикла и пара
метр внутреннего цикла. Следовательно, для организации такого двойного
цикла необходимо использовать два оператора цикла, один из которых раз
мещен в теле другого (различные варианты вложений операторов цикла при
ведены на рисунке 8.23).

Рис. 8.23
Варианты вложений операторов цикла

Пример 8.16. Составить описание ПФ, формирующей матрицу по сле


дующему правилу:
1
Bi,j 1 , i 1 1, ..., n; j 1 1, ..., m.
i 2 j 21
Решение. Описание и вызов ПФ приведены на рисунке 8.24. Системная
переменная ORIGIN = 1. В этой ПФ параметром внешнего цикла является
переменная i, а параметром внутреннего — переменная j.

Рис. 8.24
Реализация двойного цикла примера 8.16

118 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Пример 8.17. Дана матрица A размерности n´m. Составить описание П
Ф, вычисляющей индексы и значение элемента матрицы, который по моду
лю максимально близок к заданному числу c.
Решение. Описание ПФ и ее вызов приведены на рисунке 8.25. Обратите
внимание, что в качестве начального значения переменной min задано заве
домо большое значение модуля разности между элементами матрицы и за
данным числом c. Напомним, что системная переменная ORIGIN = 1. Заме
тим, что в последней строке тела ПФ стоит вектор, состоящий из искомых
числовых характеристик.

Рис. 8.25
Реализация двойного цикла примера 8.17

Дополнительные операторы, используемые при программировании цик"


лов. Рассмотрим несколько операторов, которые могут быть полезны при
программировании циклов.
Оператор continue. Обычно используется для продолжения выполнения
цикла путем возврата в начало тела цикла с соответствующим изменением
параметра цикла оператора for. В сочетании с условным оператором if позво
ляет пропустить выполнение оставшегося тела цикла и перейти к следующе
му повторению тела цикла, начиная с его первого оператора. Следующий
пример поясняет работу этого оператора.
Пример 8.18. Составить описание ПФ, формирующей новый вектор из
положительных проекций исходного вектора.
Решение. Описание ПФ приведено на рисунке 8.26. В теле ПФ исполь
зуется функция last(v), определяющая значение индекса последнего элемен
та массива v. Если очередной элемент vi не больше нуля, то пропускаются все
нижележащие операторы тела цикла (в нашем случае — два оператора, фор
мирующие очередную проекцию вектора w), и тело цикла повторяется при
новом значении параметра цикла i. Сравнение исходного вектора x с резуль

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 119


Рис. 8.26
Реализация алгоритма примера 8.18

татом работы ПФ показывает правильность работы запрограммированного


алгоритма.
Пример 8.19. Составить описание ПФ, вычисляющей сумму нечетных
чисел, находящихся в интервале от 0 до n.
Решение. Запрограммируем алгоритм вычисления суммы с использова
нием оператора continue. Описание ПФ и обращение к ней приведено на
рисунке 8.27. Если значение k четное, то это значение при суммировании
пропускается.

Рис. 8.27
Реализация алгоритма примера 8.19

Оператор return. Прерывает выполнение ПФ и возвращает значение


операнда, стоящего в поле оператора return. Следующий пример поясняет
работу этого оператора.
Пример 8.20. Составить описание ПФ, находящей первую положитель
ную проекцию исходного вектора.
Решение. Возможны два варианта программной реализации алгоритма
решения этой задачи (приведены на рисунке 8.28). Вариант Б представляет
ся более простым и «элегантным».

120 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


а б

Рис. 8.28
Два варианта реализации алгоритма примера 8.20

Оператор try (вместе с оператором on error). Этот


оператор является обработчиком возникающих оши
бок вычисления. Для ввода оператора try щелкнуть
по кнопке try палитры Программирование. Появит
ся конструкция, показанная на рисунке 8.29 (опе
ратор on error добавляется автоматически).
Оператор выполняется следующим образом.
В поле 1 находится одна или несколько конструк Рис. 8.29
Структура оператора try
ций, которые выполняются при отсутствии какой
либо ошибки выполнения (например, деление на ноль). Если при выполне
нии конструкций поля 1 возникает ошибка, то выполняется конструкция,
размещенная в поле 2.
Пример 8.21. Используя оператор try, необходимо предотвратить появ
ления ошибки «деление на ноль» при вычислении функции Otn(x, y).
Решение. На рисунке 8.30 представлены два варианта этой функции. Пер
вый вариант (первая строка документа) приводит к аварийному останову про
граммы при x = 0, и выполнение программы прекращается. При использова
нии функции try в ситуации «деление на 0» выводится запрограммированное
диагностическое сообщение и продолжается выполнение программы.

Рис. 8.30
Использование оператора try — on error

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 121


Функция error. Используется для вывода диагностических сообщений
при возникновении в вычислениях ошибки и записывается в виде:
error (“<диагностическое сообщение пользователя>”)
Внимание! Имя функции вводится с клавиатуры.
Функция используется в поле 2 условного оператора if, как показано в
следующем примере.
Пример 8.22. Запрограммировать в ПФ вывод диагностического сооб
щения при попытке спроецировать вектор v на нулевой вектор w. Описание
ПФ и ее вызовы приведены на рисунке 8.31.

Рис. 8.31
Использование в ПФ функции error

Следует заметить, что взятое в кавычки диагностическое сообщение поя


вится на экране только после щелчка мышью на выделенном красным цве
том обращении к ПФ, при выполнении которой произошла ошибка (см.
рис. 8.31).

ВОПРОСЫ И ЗАДАНИЯ ДЛЯ САМОКОНТРОЛЯ


ПО ТЕМЕ 8
1. Суть и преимущества модульного программирования.
2. Структура подпрограммыфункции (ПФ) MathCAD.
3. Какие объекты могут использоваться в качестве формальных параметров ПФ?
4. Как передаются результаты работы ПФ в вызывающую программу?
5. Как обратиться к ПФ?
6. Какие объекты могут использоваться в качестве фактических параметров?
7. Какие соответствия должны выполняться между фактическими и формальны
ми параметрами?
8. Какое значение переменной z будет выведено в конце документа MathCAD,
приведенного на рисунке 8.32? Объясните, почему вывелось такое значение.

122 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 8.32
Фрагмент документа к вопросу 8

9. Запрограммируйте ПФ, вычисляющую значение функции z(x), определяемую


выражением z(x) 2 a 3 y51 x 1 b 3 cos(| y |), где y 1 b 2 sin2 (x) 3 b2 2 sin4 (x2 ). Протести
руйте составленную ПФ.
10. Составьте ПФ для вычисления корней квадратного уравнения ax2 + bx + c = 0
по известной формуле (см. пример 7.1)

1b 2 b2 1 4ac
x1,2 3 .
2a
Протестируйте ПФ при различных значениях коэффициентов.
11. Какие операторы используются для программирования разветвляющихся ал
горитмов в ПФ?
12. Нарисуйте блоксхему работы условного оператора if и объясните, как он рабо
тает.
13. Какая конструкция используется для реализации в MathCAD логической струк
туры «ЕСЛИТО»?
14. Какая конструкция используется для реализации в MathCAD логической структу
ры «ЕСЛИТОИНАЧЕ»?
15. Как работает и когда используется оператор else if?
16. Составьте ПФ для вычисления переменной y как минимальное значение из
трех различных чисел, т. е. y = min(a, b, c). Протестируйте составленную ПФ.
17. Составьте ПФ, вычисляющую значение y в соответствии с формулой
2x, если n 1 1;
3
y 1 42 | x |, если n 1 2 или n 1 3;
3e x , если n 1 4.
5
18. Составьте ПФ, вычисляющую значение y по следующему алгоритму:
4sin x, если 1 2 x 3 2;
55e 1 x , если 2 2 x 3 3;
y67
5 ln x , если 3 2 x 3 4;
58tgx, если 4 2 x 3 5.

Если значение x не принадлежит рассматри


ваемым промежуткам, то переменной y при
своить значение строковой константы: «х не
принадлежит заданным интервалам».
19. Какая конструкция используется для про
граммирования цикла типа арифметической
прогрессии в ПФ?
20. Какое значение будет выведено в конце фраг
мента (оператор вывода со знаком ?), приве Рис. 8.33
Фрагмент документа
денного на рисунке 8.33? к заданию 20

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 123


Рис. 8.34
Примеры использования функции mod

21. Дан вектор х, состоящий из п проекций. Составьте ПФ, вычисляющую сумму


положительных проекций, имеющих четные номера. Рекомендация: для про
верки четности используйте функцию MathCAD mod(x, d), которая определяет
остаток от деления величины х на величину d. Величины х, d могут быть как
целыми, так и вещественными. Примеры использования функции mod приве
дены на рисунке 8.34.
22. Матрица А размером n´k содержит экзаменационные оценки n студентов по
k учебным дисциплинам. Запрограммировать ПФ, формирующую вектор из n
проекций xi, где xi равно среднему баллу iго студента.

124 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


ТЕМА 9. ПРОГРАММИРОВАНИЕ
ТЕМА
ТИПОВЫХ ЗАДАЧ
В ПОДПРОГРАММАХ"ФУНКЦИЯХ
MathCAD PRIME

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

9.1. ПРОГРАММИРОВАНИЕ
РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ
Будет рассмотрено несколько примеров программирования
разветвляющихся алгоритмов, в некоторых из которых используются встро
енные функции MathCAD.
Пример 9.1. Составить описание ПФ, формирующей новый вектор из
первых n элементов исходного вектора.
Решение. Описание ПФ и ее вызов приведены на рисунке 9.1. В этой
ПФ использованы две функции:

Рис. 9.1
Реализация алгоритма примера 9.1

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 125


§ length(v) — вычисляет общее число элементов массива v;
§ submatrix(A, i1, i2, j1, j2) — формирует новую матрицу, состоящую из
элементов исходной матрицы A, находящихся на пересечении строк с
индексами с i1 по i2 и столбцов с индексами с j1 по j2.
Внимание! Значение системной переменной ORIGIN = 0.
Пример 9.2. Составить описание ПФ, вычисляющей значения прямо
угольных сигналов с периодом 2 и амплитудой +1 и –1 (график приведен на
рисунке 9.2).

Рис. 9.2
Реализация алгоритма примера 9.2

Решение. Описание ПФ приведено на рисунке 9.2. Здесь использовались


функции:
§ mod(x, d) вычисляет остаток от деления значения вещественной пере
менной x на d;
§ ceil(y) вычисляет наименьшее целое, бо´льшее или равное y.
Задание 9.1. Составить описание ПФ, вычисляющей прямоугольный
сигнал амплитудой A на интервале [a, b]. Вне этого интервала значение рав
но В. Построить график функции при конкретных значениях параметров.
Задание 9.2. Составить описание ПФ, вычисляющей значения прямо
угольных сигналов такой же формы, как на рисунке 9.2, но с периодом:
а) равным 1; б) равным 8. Построить графики этих сигналов (см. пример 9.2).

Рис. 9.3
Реализация алгоритма примера 9.3

126 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


а б

Рис. 9.4
Разветвляющиеся алгоритмы (к заданиям 9.3 и 9.4)

Пример 9.3. Составить фрагмент документа MathCAD для вычисления


значения z = xmax + ypol, где xmax — максимальный по модулю корень уравне
ния x2 + 10,45x – 8,12 = 0; ypol — любой положительный корень уравнения
y2 + 210,3y – 9,5 = 0.
Решение. Фрагмент приведен на рисунке 9.3. В этом фрагменте вызыва
ется ПФ вычисления корней квадратного уравнения, описание которой
приведено на рисунке 8.5 (см. пример 8.2).
Задание 9.3. Составить описание ПФ, реализующей вычислительный
алгоритм, приведенный на рисунке 9.4а. Составить фрагмент для проверки
правильности работы ПФ.
Задание 9.4. Составить описание ПФ, вычисляющей площадь S геомет
рической фигуры по ее номеру n = 1, 2, 3. Расчетные соотношения приведе
ны на рисунке 9.4б, где h, a, b, r, n — исходные данные. Составить фрагмент
для проверки правильности работы ПФ.

9.2. ПРОГРАММИРОВАНИЕ ЦИКЛОВ


ТИПА АРИФМЕТИЧЕСКОЙ ПРОГРЕССИИ
Циклические вычислительные процессы при обработке мас
сивов в большинстве случаев используют следующие базовые алгоритмы:
§ формирование массива по заданному правилу;
§ подсчет числа элементов массива, удовлетворяющих заданным условиям
(организация счетчика);
§ накопление в цикле суммы или произведения;
§ поиск минимального или максимального элемента массива.
Эти базовые алгоритмы используются как при обработке одномерных
массивов, так и при обработке двумерных массивов. Однако при обработке
матриц базовые алгоритмы можно разделить на два класса:
§ вычисление характеристик для всей матрицы (например, подсчитать
сумму положительных элементов матрицы);
§ вычисление характеристик для каждой строки или каждого столбца
матрицы (например, подсчитать сумму положительных элементов для
каждой строки матрицы).
Ниже будет рассмотрено решение перечисленных типовых задач как для
одномерного, так и для двумерного массивов.

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 127


ТИП 1 (ФОРМИРОВАНИЕ ЭЛЕМЕНТОВ МАССИВА,
УДОВЛЕТВОРЯЮЩИХ ЗАДАННЫМ УСЛОВИЯМ)

Пример 9.4. Составить ПФ, формирующую матрицу a по следующему


правилу:
3sin(i 1 j), если i 2 j;
4
ai,j 2 6sin i 1 cos j, если i 5 j;
4sin j 1 cos i, если i 7 j.
8
Выполнить тестирование составленной ПФ.
Решение. Описание ПФ приведено на рисунке 9.5. Элементы матрицы
формируются внутри двойного цикла. Переменная i является параметром
внешнего цикла, переменная j — параметром внутреннего цикла.

Рис. 9.5
Реализация алгоритма примера 9.4

Задание 9.5. Даны два вектора x и y, состоящие из n элементов. Соста


вить ПФ, формирующую вектор q размерности n, iй элемент которого ра
вен 1, если точка с координатами (xi, yi) принадлежит кругу радиусом r с
центром в начале координат, и равен 0 в противном случае.
Задание 9.6. Дана матрица A размерности n´n. Составить ПФ, заменяю
щую все элементы матрицы с четной суммой индексов на 1, а другие элемен
ты — на 0.
Задание 9.7. Даны два вектора x, y, состоящие из n элементов. Преобра
зовать эти векторы по правилу: большее из чисел xi и yi принять в качестве
нового значения xi, а меньшее — в качестве нового значения yi.

ТИП 2 (ПОДСЧЕТ ЧИСЛА ЭЛЕМЕНТОВ МАССИВА


ИЛИ ПОСЛЕДОВАТЕЛЬНОСТИ, УДОВЛЕТВОРЯЮЩИХ
ЗАДАННЫМ УСЛОВИЯМ)

Пример 9.5. Дан одномерный массив y, состоящий из n элементов. Соста


вить ПФ, определяющую:
§ число элементов k1, удовлетворяющих условию a £ yi £ b;
§ число положительных элементов k2.

128 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 9.6
Реализация алгоритма примера 9.5

Решение. Описание ПФ приведено на рисунке 9.6. До начала цикла за


даются нулевые начальные значения переменных k1, k2.
Пример 9.6. Дана квадратная матрица С размерности n´n. Составить П
Ф, вычисляющую число элементов, находящихся ниже главной диагонали
и удовлетворяющих условию a £ Сi,j £ b.
Решение. Заметим, что для элементов, лежащих ниже главной диагона
ли, справедливо неравенство i > j. Поэтому возможны два варианта выбора
элементов, лежащих ниже главной диагонали: а) проверять все элементы
матрицы на выполнение этого условия; б) организовать двойной цикл так,
чтобы в нем было обращение только к элементам, удовлетворяющим этому
условию. В ПФ, приведенной на рисунке 9.7, реализован второй вариант.

Рис. 9.7
Реализация алгоритма примера 9.6

Пример 9.7. Дана последовательность:

ai 3 cos 110i 4 i 2,
где i = 1, 2, ..., n; n = 11.
Составить ПФ, подсчитывающую число отрицательных членов последо
вательности и число членов, принадлежащих отрезку [0,5; 1].

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 129


Рис. 9.8
Реализация алгоритма примера 9.7

Решение. При составлении описания учтем два момента: а) для универ


сальности ПФ элементы последовательности задаются функцией пользова
теля, имя которой будет параметром ПФ; б) для подсчета числа элементов
не обязательно внутри ПФ формировать массив из элементов последова
тельности — достаточно работать со значением текущего элемента последо
вательности. Описание ПФ и ее вызов приведены на рисунке 9.8.
Задание 9.8. Даны две матрицы A, B размерности n´m. Составить ПФ,
подсчитывающую число случаев Ai,j ³ Bi,j.
Замечание 9.1. В предыдущих примерах искомые характеристики вычис
лялись для всего заданного массива, т. е. используемые алгоритмы относились
к первому классу алгоритмов обработки массивов. Поэтому начальные значе
ния искомых характеристик задавались до начала цикла (в случае матрицы —
до начала внешнего цикла). В задачах второго класса обработки матриц необ
ходимо вычислить некоторые характеристики для каждой строки или каждо
го столбца матрицы. В этом случае начальные значения задаются в теле внеш
него цикла до начала внутреннего цикла, в теле которого вычисляются харак
теристики. Этот важный момент иллюстрируется следующим примером.
Пример 9.8. Дана матрица D размерности n´m. Составить ПФ, форми
рующую вектор, iй элемент которого равен количеству положительных эле
ментов в iй строке матрицы D.
Решение. Описание ПФ приведено на рисунке 9.9. Здесь искомая харак
теристика (количество положительных элементов) вычисляется для каждой
строки матрицы. Поэтому нулевое начальное значение для переменной k
задается в теле внешнего цикла до начала внутреннего цикла. Размеры мат
рицы не передаются через формальные параметры, а вычисляются внутри
тела ПФ с использованием функций rows (вычисляет число строк) и cols
(определяет число столбцов).
Задание 9.9. Дана матрица D размерности n´m. Составить ПФ, которая
вместо последнего элемента iй строки записывает количество элементов iй
строки матрицы D, удовлетворяющих условию |Di,j| ³ d, где d — задаваемая
величина.

130 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 9.9
Реализация алгоритма примера 9.8

ТИП 3 (ПОДСЧЕТ СУММЫ ИЛИ ПРОИЗВЕДЕНИЯ


ЭЛЕМЕНТОВ МАССИВА, УДОВЛЕТВОРЯЮЩИХ
ЗАДАННЫМ УСЛОВИЯМ)

Пример 9.9. Дан массив y, состоящий из n элементов. Составить ПФ,


определяющую:
§ произведение строго положительных элементов массива;
§ сумму элементов, находящихся в интервале [a, b].
Решение. Описание ПФ приведено на рисунке 9.10. Обратите внимание,
что начальные значения для переменных sum, pr задаются до начала цикла,

Рис. 9.10
Реализация алгоритма примера 9.9

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 131


в котором происходит накопление значений этих переменных. Обратите так
же внимание на задание переменной pr начального значения, равного 1.
Почему оно не равно нулю, как это сделано для суммы?
Пример 9.10. Дана матрица A размерности n´m. Составить ПФ, которая
вместо первого элемента iй строки записывает сумму всех элементов этой
строки матрицы.
Решение. Описание ПФ приведено на рисунке 9.11. Эта задача относит
ся ко второму классу, так как сумма вычисляется для каждой строки матри
цы. Поэтому начальное нулевое значение для суммы задается во внешнем
цикле до внутреннего, и после окончания внутреннего цикла вычисленное
значение суммы записывается в элемент Ai,j.

Рис. 9.11
Реализация алгоритма примера 9.10

Задание 9.10. Дан вектор x, состоящий из n элементов. Составить ПФ,


вычисляющую наибольшую из двух сумм элементов с четными и нечетными
индексами.
Задание 9.11. Дан вектор x, состоящий из n элементов. Составить ПФ,
вычисляющую среднее арифметическое элементов вектора, а затем преобра
зующую исходный вектор по правилу: те элементы, которые меньше средне
го арифметического, заменить нулями.
Задание 9.12. Дана матрица A размерности n´m. Составить ПФ, форми
рующую вектор, iй элемент равен среднему арифметическому iй строки
матрицы.
Задание 9.13. Дана матрица A размерности n´m. Составить ПФ, вычис
ляющую сумму и количество только тех элементов матрицы, которые удов
летворяют условию |Ai,j| ³ e, где e — задаваемая величина.
Задание 9.14. Имеется экзаменационная ведомость студенческой груп
пы из n = 20 человек по m = 5 дисциплинам. Оценки из этой ведомости зане
сены в матрицу размерности n´m. Составить ПФ, вычисляющую число сту
дентов, получивших только четверки и пятерки.
Задание 9.15. Имеется экзаменационная ведомость студенческой груп
пы из n = 20 человек по m = 5 дисциплинам. Оценки из этой ведомости зане
сены в матрицу размерности n´m. Составить ПФ, вычисляющую средний
балл по каждой дисциплине.

132 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


ТИП 4 (ВЫЧИСЛЕНИЕ МАКСИМАЛЬНОГО ИЛИ
МИНИМАЛЬНОГО ЭЛЕМЕНТА МАССИВА
И ЕГО ИНДЕКСА)

Пример 9.11. Дан массив y, состоящий из n элементов. Составить ПФ,


меняющую максимальный и минимальный элемент массива местами.
Решение. Описание ПФ приведено на рисунке 9.12. Начальные значе
ния для искомых числовых характеристик (значения максимального и ми
нимального элементов и их индексов) задаются из предположения, что пер
вый элемент массива имеет максимальное и минимальное значение.

Рис. 9.12
Реализация алгоритма примера 9.11

Замечание 9.2. Для задания начальных значений при вычислении мак


симального или минимального элемента массива можно использовать сле
дующее правило: начальному значению при вычислении максимального
элемента задается заведомо наименьшее значение (например, 10–20), а на
чальному значению при вычислении минимального элемента — заведомо
наибольшее значение (например, 1020).
Пример 9.12. Дана функция f (x) и вектор x, состоящий из n элементов.
Составить описание ПФ, определяющей: а) максимальное значение этой
функции на элементах этого вектора; б) номер индекса и значение элемента
массива, на котором функция достигает максимального значения.
Решение. Описание ПФ и обращение к ней приведены на рисунке 9.13.
Заметим, что в качестве второго параметра ПФ используется имя функции

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 133


Рис. 9.13
Реализация алгоритма примера 9.12

пользователя. Формальным параметром является функция f (x), а факти


ческим — функция y(x), описание которой должно находиться до обраще2
ния к ПФ.
Пример 9.13. Дана матрица A размерности n´m. Составить ПФ, форми
рующую вектор, iй элемент которого равен номеру столбца, в котором на iй
строке матрицы стоит минимальный элемент.
Решение. Описание ПФ приведено на рисунке 9.14. Сформулированная
задача относится ко второму классу, поэтому начальное значение минималь
ного элемента задается для каждого столбца матрицы.

Рис. 9.14
Реализация алгоритма примера 9.13

134 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Задание 9.16. Даны две матрицы A, B размерности n´m. Вычислить ве
личину max = maxA + maxB, где maxA, maxB — максимальные значения
матриц A, B соответственно. Для вычисления значения максимального эле
мента составить ПФ.
Задание 9.17. Дана матрица A размерности n´m. Составить ПФ, меняю
щую местами максимальный и минимальный элементы матрицы.
Задание 9.18. Дана матрица A размерности n´m. Составить ПФ, вычис
ляющую номер столбца, который содержит наименьший по модулю элемент
этой матрицы.
Задание 9.19. Имеется экзаменационная ведомость студенческой груп
пы из n = 20 человек по m = 5 дисциплинам. Оценки из этой ведомости зане
сены в матрицу размерности n´m. Составить ПФ, вычисляющую номер дис
циплины (т. е. номер столбца), имеющей максимальный средний балл.
Задание 9.20. Имеется экзаменационная ведомость студенческой груп
пы из n = 15 человек по m = 4 дисциплинам. Оценки из этой ведомости зане
сены в матрицу размерности n´m. Составить ПФ, вычисляющую номер сту
дента (т. е. номер строки), имеющего максимальный средний балл по учеб
ным дисциплинам.
Пример 9.14. Составить описание ПФ, вычисляющей факториал числа
n ³ 0 по формуле n! = 1 × 2 × 3 × ... × n.
Решение. Описание ПФ с использованием оператора произведения при
ведено на рисунке 9.15.

Рис. 9.15
Вычисление факториала числа n

9.3. ПРОГРАММИРОВАНИЕ
ИТЕРАЦИОННЫХ ЦИКЛОВ

Напомним, что одной из особенностей итерационных цик


лов является невозможность априори (до выполнения программы) опреде
лить число повторений тела цикла (подробно см. п. 7.3). Для организации
таких циклов используют оператор while (см. п. 8.6).
Пример 9.15. Дан вектор v, состоящий из n элементов. Составить ПФ,
определяющую первый элемент этого массива, который удовлетворяет усло
вию |vj – x| £ e, где x, e — заданные величины.
Решение. Описание ПФ приведено на рисунке 9.16. Однако приведенная
ПФ имеет существенный недостаток: при неправильном задании исходных

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 135


Рис. 9.16
Реализация алгоритма примера 9.15

Рис. 9.17
Реализация алгоритма примера 9.15

данных (например, e < 0) произойдет зацикливание — цикл по условию


|vj – x| £ e не завершится.
Для устранения этого недостатка можно использовать оператор цикла
for совместно с оператором break, который завершит цикл, как только вы
полнится условие |vj – x| £ e. Описание такой ПФ приведено на рисунке 9.17.
В предыдущих примерах была показана возможность замены оператора
while (используемого при программной реализации итерационного цикла)
другими конструкциями. Это обусловлено тем, что в этих примерах пара
метры цикла изменялись по закону арифметической прогрессии. Однако
встречаются циклы, параметры которых изменяются по более сложным
соотношениям. Особенно это характерно для алгоритмов решения нелиней
ных уравнений. В примере 9.16 рассматривается один из таких алгоритмов —
метод последовательных приближений.
Пример 9.16. Дано нелинейное уравнение

x2 1 e x 2 0. (9.1)
Необходимо вычислить с точностью e = 10–5
вещественный корень, ле
жащий в интервале [–4, 0], используя метод последовательных приближе
ний (называемый также методом простой итерации).
Решение. Не останавливаясь на теоретическом обосновании, приведем
основные расчетные соотношения, необходимые для программной реализа
ции этого метода.

136 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Первоначально исходное уравнение f (x) = 0 заменяется эквивалентным
ему уравнением
x 1 2(x). (9.2)
Затем выбираем начальное значение x0 из некоторого интервала локали
зации [a, b], внутри которого находится только один корень уравнения
f (x) = 0 (в нашем примере это интервал [–4, 0]). Подставляя это значение в
правую часть (9.2), получаем первое приближение x1 = j(x0). Затем значе
ние x1 вновь подставляем в правую часть (9.2), получаем x2 = j(x1).
Повторяя этот процесс, получаем последовательность чисел
xn 2 3(xn 11 ) (9.3)
(это оправдывает название — метод последовательных приближений).
Возможны два случая.
Случай 1. Последовательность x0, x1, x2, ..., xn, ... сходится к некоторо
му числу x*, т. е. имеет предел, и тогда этот предел является решением нели
нейного уравнения, т. е. f (x*) = 0.
Случай 2. Последовательность x0, x1, x2, ..., xn, ... расходится, т. е. не
имеет предела, и в этом случае метод не применим.
Приведем условие, являющееся достаточным для сходимости метода
последовательных приближений.
Пусть на отрезке [a, b] имеется единственный корень уравнения x = j(x),
и во всех точках этого отрезка справедливо неравенство
| 21(x)| 3 q 4 1. (9.4)
Если при этом выполняется и условие
a 1 2(x) 1 b, (9.5)
то итерационный процесс (9.3) сходится, а за нулевое приближение можно
брать любое x0 Î [a, b].
Заметим, что чем меньше величина q в (9.4), тем быстрее сходится после
довательность x0, x1, x2, ..., xn, ... к своему пределу x*. В качестве прибли
женного значения корня можно принять приближение xn, удовлетворяю
щее условию
2 3 (1 1 q)
| xn 1 xn 11 | 4 5 6,
q (9.6)

где e — заданная точность вычисления корня, входящая в неравенство


| xn 2 x1 | 3 4, (9.7)
x* — точное значение корня.
Вернемся к уравнению нашего примера и преобразуем его к виду (9.2).
x
Получаем x 1 2e 2 (знак «минус» появился изза отрицательности искомого
x
корня), т. е. 1(x) 2 3e 2 . Можно показать (сделайте это самостоятельно), что

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 137


Рис. 9.18
Программная реализация метода последовательных приближений

на интервале [–4, 0] условие (9.4) выполняется и в качестве величины q мож


но принять значение 0,10. Также выполняется условие (9.5), т. е. на всем
интервале [–4, 0] функция j(x) удовлетворяет условию –4 < j(x) <0.
Вывод: метод последовательных приближений для любого x0 Î [–4, 0]
сходится к точному решению нелинейного уравнения (9.1).
Определим величину h в условии окончания итераций (9.6):
1016 2 (1 1 0,5)
34 4 1016.
0,5
Описание ПФ, реализующей метод последовательных приближений,
приведено на рисунке 9.18. Здесь же показано вычисленное приближенное
значение корня и его проверка. Имя функции j(x) является формальным
параметром. Для предотвращения зацикливания итерационной процедуры
(9.3) используется оператор цикла for. Заметим, что переменные x0, xn ис
пользуемые в теле ПФ, являются простыми переменными.

& ВОПРОСЫ
ПО ТЕМЕ 9
И ЗАДАНИЯ ДЛЯ САМОКОНТРОЛЯ

1. Когда используется оператор цикла while? Нарисуйте блоксхему этого операто


ра цикла.
2. Для чего используется оператор break?
3. Как работает функция error?
4. В каких задачах обработки матриц начальные значения искомых характери
стик матрицы задаются до внешнего цикла? Приведите пример такой задачи.
5. Матрица А размером n´k содержит экзаменационные оценки n студентов по
k учебным дисциплинам. Запрограммируйте ПФ, вычисляющую номер сту
дента, имеющего максимальный средний балл, и величину максимального сред
него балла. Выполните тестирование составленной ПФ.

138 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


6. В каких задачах обработки матриц начальные значения искомых характери
стик матрицы задаются в теле внешнего цикла до начала внутреннего цикла?
Приведите пример такой задачи.
7. Дана матрица A размерности n´m. Составьте ПФ, которая вместо последнего
элемента iй строки записывает сумму всех элементов этой строки матрицы.
8. Задана матрица C размерностью 3´4. Составьте ПФ, вычисляющую номер стро
ки, сумма элементов которой максимальна. Выполните тестирование ПФ.
9. В матрице S размерностью 20´4 приведены оценки 20 студентов за 4 экзамена
последней сессии. Составьте ПФ, формирующую вектор, содержащий средние
баллы каждого студента. Выполните тестирование ПФ.
10. Составьте ПФ, реализующую итерационный цикл суммирования сходящегося
ряда
1
sin(nx)
5 (41)n21 n при х 3 0,75
n 31

с точностью e = 10–6. Считается, что заданная точность суммирования достигну


та, если последнее слагаемое an, включенное в сумму, удовлетворяет условию
|an| > e, а последующее |an+1| £ e. Определите число итераций, необходимых для
вычисления суммы с заданной точностью. Осуществите тестирование состав
ленной ПФ.
Рекомендация: для прекращения итерационного цикла используйте команду
break.

РАЗДЕЛ 2. ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MathCAD PRIME 139


РАЗДЕЛ ТРЕТИЙ

РЕШЕНИЕ
НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ
В ПАКЕТЕ MathCAD PRIME
В этом разделе рассматриваются четыре класса задач, часто
возникающих при инженерных расчетах, проектировании конструкций и в
экспериментальных исследованиях. Это:
§ решение нелинейных уравнений и дифференциальных уравнений;
§ решение оптимизационных задач, включая задачи с ограничениями;
§ вероятностные расчеты;
§ обработка экспериментальных данных.
Для решения этих задач будут использоваться как «собственные» функ
ции MathCAD, так и оригинальные подпрограммыфункции (ПФ). Матери
ал этого раздела, безусловно, будет полезен пользователю при решении «сво
их» задач в пакете MathCAD, особенно магистрантам и аспирантам при рабо
те над своими диссертациями.

142 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


ТЕМА 10. РЕШЕНИЕ
ТЕМА
НЕЛИНЕЙНЫХ УРАВНЕНИЙ
И ДИФФЕРЕНЦИАЛЬНЫХ
УРАВНЕНИЙ В ПАКЕТЕ
MathCAD PRIME

В
этой главе будут рассмотрены функции MathCAD, кото
рые позволят найти решения нелинейных уравнений, систем нелинейных
уравнений, обыкновенных дифференциальных уравнений и систем и систем
обыкновенных дифференциальных уравнений.

10.1. РЕШЕНИЕ НЕЛИНЕЙНЫХ УРАВНЕНИЙ


Напомним, что корнем нелинейного уравнения f (x) = 0 на
зываются такие значения x*, для которых f (x*) = 0. В зависимости от вида
уравнения количество корней может быть различным, а может и не сущест
вовать даже одного корня. Нахождение корней может осуществляться раз
личными методами:
§ аналитические методы;
§ графические методы;
§ численные методы.
Последние методы получили широкое применение и они, как правило,
вычисляют не точные значения корней, а приближенные значения x1 * , кото
рые отличаются от точных на некоторую (обычно весьма малую) величину,
называемую погрешностью вычисления корня. Для приближенного корня
имеет место f (x1 * ) 1 0.
Вычисление корней численными методами включает два основных этапа:
§ отделение корня (или локализация корня) — отыскание достаточно ма
лого интервала, внутри которого заключен один и только один корень
уравнения;
§ уточнение корня до заданной точности — вычисление каждого корня с
заданной точностью внутри выделенного интервала.
Рассмотрим, как эти два этапа реализуются в пакете MathCAD.
Отделение корней нелинейного уравнения. Учитывая легкость построе
ния графиков функций в MathCAD, в дальнейшем будет использоваться
графический метод отделения корней.

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 143


Пример 10.1. Дано алгебраическое уравнение

x3 1 3x2 2 3 3 0. (10.1)
Определить интервалы отделения корней этого уравнения.
Решение. Известно, что уравнение (10.1) имеет три корня, как алгебраиче
ский полином третьей степени. Построим график функции f (x) = x3 + 3x2 – 3
(рис. 10.1). Из рисунка видно, что функция обращается в нуль на трех интер
валах: [–3; –2], [–1,8; 0], [0,5; 2]. Эти интервалы могут быть приняты в каче
стве интервалов отделения уравнения (10.1).

Рис. 10.1
Отделение корней уравнения (10.1)

Пример 10.2. Дано алгебраическое уравнение


x3 – 6x2 + 21x + 52 = 0. (10.2)
Определить интервалы локализации корней этого уравнения.
Решение. На рисунке 10.2 приведен график функции f (x) = x3 – 6x2 +
+ 21x + 52, построенный в MathCAD. Видно, что в качестве интервала изо
ляции можно принять интервал [–2; –1]. Однако уравнение имеет три корня.
Следовательно, можно сделать вывод о наличии еще двух комплексных кор
ней, для которых на рисунке не показаны точки обращения f (x) в нуль.

144 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 10.2
Отделение корней уравнения (10.2)

Уточнение корней нелинейного уравнения. Для уточнения корня использу


ются специальные вычислительные методы такие, как метод деления отрезка
пополам, метод хорд, метод касательных (метод Ньютона) и многие другие.
Функция root. В MathCAD для уточнения корней любого нелинейного
уравнения (не обязательно только алгебраического) введена функция root,
которая может иметь два или четыре аргумента, т. е. root(f(x), x) или
root(f(x), x, a, b), где f(x) — имя функции или арифметическое выражение,
соответствующее решаемому нелинейному уравнению, x — скалярная пере
менная, относительно которой решается уравнение, a, b — границы интер
вала отделения корня.
Замечание 10.1. Функция root с двумя аргументами требует задания (до
обращения к функции) переменной x начального значения корня из интер
вала локализации.
Пример 10.3. Используя функцию root(f(x), x), найти все три корня урав
нения x3 – 6x2 + 21x + 52 = 0, включая и два комплексных (рис. 10.3).
Решение. Для вычисления всех трех корней используем прием пониже
ния порядка алгебраического уравнения, заключающийся в следующим:
если известен корень xj алгебраического уравнения f(x) = 0 nго порядка, то
уравнение
f ( x)
10
(x 2 x j )

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 145


Рис. 10.3
Вычисление корней алгебраического уравнения (10.2)

Рис. 10.4
Вычисление корней уравнения примера 10.4

146 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


будет алгебраическим уравнением (n – 1)го порядка, среди корней которого
отсутствует корень xj.
В этом же документе MathCAD выполнена проверка найденных кор
ней x1 j , т. е. вычислены значения f (x1 j ) 1 0, j = 1, 2, 3.
Пример 10.4. Используя функцию root, вычислить изменения корня не
линейного уравнения ex – ax2 = 0 при изменении коэффициента а от 1 до 10
с шагом 1.
Решение. Для изменения коэффициента а организуется цикл по этому
параметру. Поэтому переменная x является одномерным массивом, элемен
ты которого имеют индексное выражение а. Документ MathCAD, в котором
показана реализация такого вычислительного алгоритма, приведен на ри
сунке 10.4.
Функция polyroots. Для вычисления всех корней алгебраического урав
нения порядка n (не выше 5) рекомендуется использовать функцию polyroots.
Обращение к этой функции имеет вид polyroots(v), где v — вектор, состоя
щий из n + 1 проекций, равных коэффициентам алгебраического уравне
ния, т. е. v0 = a0, v1 = a1, ..., vn = an. Эта функция не требует проведения
процедуры локализации корней.
Пример 10.5. Используя функцию polyroots, найти все три корня уравне
ния x3 – 6x2 + 21x + 52 = 0, включая и два комплексных корня.
Решение. Первоначально сформируем вектор v из коэффициентов урав
нения (рис. 10.5), а затем обратимся к функции polyroots. Вычисленные кор
ни уравнения совпадают с корнями, полученными в примере 10.3 (сравните
эти значения!).

Рис. 10.5
Вычисление корней алгебраического уравнения (10.2)

Блок решения — это специальная вычислительная область, используе


мая для задания начальных условий, уравнений и ограничений решаемой
задачи. Ввод Блока решения в документ осуществляется нажатием [Ctrl + 1],
или на вкладке Математика в группе Области необходимо вызвать Блок
решения.
В общем виде Блок решения имеет следующую структуру:
1 Начальные условия 2
1 Равенства2
1Ограничения 2 (10.3)
1 Вызов функции MathCAD2
Блок решения в тексте документа заключается в прямоугольную рамку.
Дальнейшие вычисления с найденным решением задачи, как правило, осу

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 147


ществляется вне Блока решения, хотя их можно выполнять и внутри Блока
решения.
Решаемое нелинейное уравнение задается в Блоке решения в виде равен
ства, в котором используется «жирный» знак «равно» (вкладка Математи2
ка, палитра инструментов Сравнение). Ограничения содержат равенства
или неравенства, которым должен удовлетворять искомый корень. Вычис
ление корня осуществляется с помощью двух функций find, minerr, обраще
ние к которым размещаются в Блоке решения.
Функция find уточняет корень уравнения, вызов этой функции имеет
вид find(x), где x — переменная, по которой уточняется корень. Если корня
уравнения на заданном интервале не существует, то следует вызвать функ
цию minerr(x), которая возвращает приближенное значение корня.
Пример 10.6. Используя Блок решения, вычислить корень уравнения
x3 – 6x2 + 21x + 52 = 0 в интервале отделения [–4, –1].

Рис. 10.6
Вычисление решения с помощью функции find

Решение. Фрагмент документа, вычисляющий решение из заданного


интервала отделения показан на рисунке 10.6. Блок решения в документе
заключается в прямоугольную рамку. Приведенные комментарии позволя
ют легко понять назначение той или иной конструкции MathCAD.

10.2. РЕШЕНИЕ СИСТЕМ УРАВНЕНИЙ


В ПАКЕТЕ MathCAD
В зависимости от того, какие функции входят в систему урав
нений, можно выделить два класса систем:
§ системы алгебраических уравнений;
§ системы трансцендентных уравнений.
Среди систем алгебраических уравнений особое место занимают системы
линейных алгебраических уравнений (СЛАУ).

148 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Системы линейных алгебраических уравнений. Системой линейных ал
гебраических уравнений (СЛАУ) называется система вида:
a1,1x1 1 a1,2 x2 1 ... 1 a1,m xm 2 b1 ;
a2,1x1 1 a2,2 x2 1 ... 1 a2,m xm 2 b2 ;
... (10.4)
an,1x1 1 an,2 x2 1 ... 1 an,m xm 2 bn ,

В матричном виде систему можно записать как


Ax 1 b, (10.5)
где A — матрица размерности n´m; b — вектор с m проекциями.
Для вычисления решения СЛАУ следует использовать функцию lsolve,
обращение к которой имеет вид: lsolve(А, b), где А — матрица системы; b —
вектор правой части.
Пример 10.7. Дана система уравнений
52 1 x1 2 12 1 x2 3 4 4 40;
6
7x2 2 7 1 x3 4 4; (10.6)
610 1 x 2 5 1 x 4 320.
8 1 2

Необходимо определить число обусловленности матрицы системы и век


тор ее решения.
Решение. Первоначально по заданной системе уравнений сформируем
матрицу А и правую часть — вектор b (рис. 10.7). Затем определим число
обусловленности — 3,733, которое говорит о хорошей обусловленности мат
рицы системы, а следовательно, о высокой устойчивости решения системы к
погрешностям задания правой части. Вычислим решение двумя способами:
через обратную матрицу — вектор x1 и используя функцию lsolve — век
тор x2. Видно (рис. 10.7), что эти два решения совпадают и обращают систе
му в тождество: разность векторов b, Аx1 равна нулевому вектору.

Рис. 10.7
Решение систем линейных алгебраических уравнений

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 149


Системы нелинейных уравнений. MathCAD дает возможность находить
решение системы уравнений численными методами, при этом максимальное
число уравнений доведено до 200. Для решения системы уравнений необхо
димо выполнить следующие этапы.
1. Задание начального приближения для всех неизвестных, входящих в
систему уравнений. При небольшом числе неизвестных этот этап можно
выполнить графически, как показано в следующем примере.
Пример 10.8. Дана система уравнений:
4y 1 3 2 x 1 8 3 0;
5 (10.7)
6y 1 x 3 0.
2

Необходимо определить начальные приближения для решения этой сис


темы, т. е. «точки старта» вычислительного алгоритма уточнения решения
этой системы.
Решение. Применим графический метод. Точки пересечения графиков
функций y1 (x) 1 3x 2 8, y2 (x) 1 x2 являются решением заданной системы урав
нений. В документе MathCAD построим эти графики (рис. 10.8). В качестве
начальных приближений можно взять две точки: точку А с координатами
(4,6; 22) и точку В с координатами (–1,7; 3).

Рис. 10.8
Вычисление начальных приближений для корней системы (10.7)

150 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


2. Вычисление решения системы уравнений с заданной точностью. Для
этого используется уже известный Блок решения. В этом блоке задаются
начальные приближения для искомых решений системы, уравнения систе
мы, а также возможные ограничения на искомые решения, а затем идет
вызов функций find или minerr (рассмотренные в параграфе 10.1). Очевид
но, что число аргументов у этих функций должно быть равно числу неизвест
ных. При этом внутри Блока решения недопустимы:
§ ограничения со знаком ¹;
§ дискретная переменная или выражения, содержащие дискретную пере
менную в любой форме;
§ блоки решения уравнений не могут быть вложены друг в друга;
§ каждый блок может иметь внутри себя только одно обращение к функ
ции find (или к функции minerr).
Пример 10.9. Используя Блок решения, вычислить все решения систе
мы (10.7). В качестве начальных приближений взять значения, найденные в
примере 10.8. Выполнить проверку найденных решений.
Решение. На рисунке 10.9 показаны два Блока решения: один — для уточ
нения решения в точке A, второй — в точке В. Заметим, что первые проек
ции векторов sA, sB — это значения корня x, а вторые — значения корня у.
Выполненная проверка (размещается в документе ниже блоков решений)
показала, что проекции векторов sA, sB являются искомыми решениями си
стемы (10.7).

Рис. 10.9
Уточнение корней системы уравнений (10.7)

Пример 10.10. Используя Блок решения, решить систему нелинейных


уравнений:
413x 2 y 2 6 3 0;
5 2 (10.8)
61x 2 y 3 0.

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 151


Рис. 10.10
Проверка совместности уравнений системы (10.8)

Рис. 10.11
Решение системы несовместных уравнений

152 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Решение. Чтобы проверить совместность уравнений системы (т. е. прове
рить существование решения, может быть не единственного), построим гра
фики следующих функций, полученных из уравнений системы (10.8):
y1 (x) 1 3x 2 6; y2 (x) 1 x2 .
Эти графики показаны на рисунке 10.10. Графики не пересекаются, сле
довательно, система уравнений (10.8) не является совместной, и для вычис
ления приближенного решения обратимся к функции minerr.
Для этого в документе, изображенном на рисунке 10.11, вставим два бло
ка решения. В первом (левом) блоке используется функция find, во втором —
minerr. При попытке найти решение с помощью функции find выводится
сообщение об ошибке «Решение не найдено» и необходимая рекомендация
(рис. 10.11). При использовании функции minerr получим приближенное
значение решения системы нелинейных уравнений — вектор
1 1,5 2
sol 3 4 5,
760,6258
первая проекция которого — это значение x, вторая проекция — значение у
(рис. 10.11). Хотя найденные значения не обращают уравнения системы (10.8)
в тождества (см. рис. 10.11), т. е. не принадлежат одновременно кривым
y1(x), y2(x), они дают координаты точки, которая находится на минималь
ном расстоянии, как от кривой y1(x), так и от кривой y2(x).

10.3. РЕШЕНИЕ ОБЫКНОВЕННЫХ


ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ
В ПАКЕТЕ MathCAD
Обыкновенные дифференциальные уравнения, как матема
тические модели, часто используются во многих областях науки и техники
(например, теоретической механики, теории автоматического управления,
строительной механики и т. д.). В этом параграфе будут рассмотрены встро
енные функции пакета MathCAD, используемые для построения решений
обыкновенных дифференциальных уравнений. К сожалению, ограничение
на объем учебника не позволил изложить соответствующие вычислитель
ные методы, реализованные в функциях MathCAD.
Функция MathCAD для решения обыкновенного дифференциального
уравнения m"го порядка. Напомним, что обыкновенным дифференциаль
ным уравнением mго порядка называется уравнение

y(m) 3 f (t, y, y2,..., y(m 11) ), (10.9)

dm y(t)
где y(m) 1 означает производную mго порядка по переменной t.
dt(n)
Задача Коши для такого уравнения заключается в нахождении такой
функции y(t), которая является решением уравнения (10.9) (т. е. обращает
его в тождество) и удовлетворяет начальным условиям:

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 153


y(t0 ) 3 y0 , y2(t0 ) 3 y1, ..., y(m 11) (t0 ) 3 ym 11 , (10.10)

где y0, y1, ..., ym–1 — заданные значения.


Для решения рассмотренной задачи Коши в пакете MathCAD наиболее
часто используются функция odesolve, обращение к которой стоит в Блоке
решения. В этом блоке задаются само дифференциальное уравнение mго
порядка и начальные условия (при этом используется жирный знак «рав
но», который вводится с палитры инструментов Сравнение).
Обращение к функции odesolve имеет вид:
odesolve(y(t), tk , n), (10.11)
где y(t) — имя функции, относительно которой записано ОДУ в Блоке реше2
ния; tk — значение, задающее конец интервала интегрирования (начало ин
тервала t0); указывается в начальных условиях, задаваемых в Блоке реше2
ния следующей конструкцией: y(t0 ) 1 y0 , y1(t0 ) 2 y1 и т. д. (при этом исполь
зуется жирный знак «равно»); n — необязательный параметр, определяющий
число интервалов, на которые разбивается отрезок (t0 , tk ). Если этот пара
метр опущен, то вычисление n происходит внутри функции odesolve.
Функция odesolve возвращает решение в виде функции независимой пе
ременной. Чтобы вычислить эту функцию, odesolve сохраняет решения в
ряде равноотстоящих точек интервала интегрирования, а затем выполняет
интерполяцию между этими точками с помощью функции lspline. Число
точек определяется необязательным аргументом n или его значением по
умолчанию равным 1000. В адаптивных и жестких методах в областях с
большей изменчивостью решения добавляется больше интервалов.
При вызове функции odesolve решение заданного ОДУ вычисляется с
помощью метода Адамс/BDF. Вызывается решатель Adams, использующий
методы Адамса — Башфорта. Если функция odesolve обнаруживает, что сис
тема ОДУ является жесткой, она переходит на решатель BDF, использую
щий методы BDF.
Применение функции odesolve показано в следующем примере.
Пример 10.11. Пусть груз Q покоится на упругой рессоре. Отклонение
груза от положения равновесия в начальный момент времени обозначим
через y0, а значение скорости — y1 (начальные условия). Отклонение вниз —
положительное, вверх — отрицательное. В положении равновесия вес урав
новешивается упругостью пружины. Предполагается, что сила, стремящаяся
вернуть груз в положение равновесия — так называемая восстанавливающая
сила, — пропорциональна отклонению, т. е. равна –k × y, где k — некоторая
постоянная для данной рессоры величина («жесткость рессоры»). Предпола
гается, что движению груза Q препятствует сила сопротивления, направлен
ная в сторону, противоположную направлению движения, и пропорциональ
ная скорости движения груза, т. е. сила
dy
12 3 v 4 12 3 ,
dt
где l = const ³ 0 (амортизатор). Найти функцию y(t) — координату движе
ния груза.

154 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Решение. Дифференциальное уравнение движения груза на рессоре по
второму закону Ньютона имеет вид
d2 y dy
Q 1 2 2 3k 1 y 3 4 1 , (10.12)
dt dt
где k > 0, l ³ 0.
Решение задачи Коши показано в документе MathCAD (рис. 10.12). Здесь
же заданы все параметры системы. Для ввода штриха (обозначение произ
водной) нажимается [Ctrl + F7]. В прямоугольную рамку заключены конст
рукции, входящие в Блок решения.

Рис. 10.12
Решение задачи Коши для примера 10.11

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 155


В документе приведены графики численного решения (кривая yc(t) —
сплошная линия) и аналитического решения (кривая ya(t) — крестики).
Видно хорошее совпадение двух кривых, что говорит о хорошей точности
численного решения, найденного с использованием функции odesolve.
Для иллюстрации возможностей функции odesolve рассмотри пример с
рессорой, жесткость которой меняется в зависимости от знака отклонения
груза.
Пример 10.12. В условия примера 10.11 внесем следующее допущение, а
именно — жесткость рессоры задается следующим образом:
2100, y(t) 1 0;
k(y) 3 4 (10.13)
620, y(t) 5 0.

Рис. 10.13
Решение задачи Коши для примера 10.12

156 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Решение. Для задания переменной жесткости (10.13) будем использо
вать функцию if (вводится с клавиатуры и имеет три аргумента) (см. пара
граф 7.2). На рисунке 2.14 показан документ, в котором приведено решение
задачи Коши. Сравнивая графики численных решений yc(t) (рис. 10.12,
10.13), можно заметить отличие полученных решений, которое вызвано из
меняющейся жесткостью. Аналитическое решение получить не удается, и
поэтому график аналитического решения yа(t) на рисунке 10.13 отсутствует.
Решение краевой задачи для ОДУ. Пусть дано дифференциальное урав
нение второго порядка:

у11(t) 2 p(t)y1(t) 2 q(t)t(t) 3 f (t), (10.14)

где p(t), q(t) — известные функции коэффициентов. Известно, что для оп
ределения единственного решения необходимо задать два дополнительных
условия. Если эти условия задаются в точке t = t0, то это задача Коши. Если
эти условия задаются в двух разных точках:

t 1 a; t 1 b,

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


ния решения ОДУ называется краевой задачей для ОДУ. Для ее решения
также используется функция odesolve, но дополнительные условия задают
ся в двух разных точках, как это делается в следующем примере 10.13.
Пример 10.13. Найти решение дифференциального уравнения
4 2 y11(t) 3 y(t) 4 t (10.15)
при краевых условиях:
y(–4) = 4 и y(10) = 12 (10.16)
т. е. a = –4, b = 10.
Решение. Вычисление решения краевой задачи (10.15), (10.16) осущест
вляется в документе MathCAD, показанном на рисунке 10.14. Также ис
пользуется Блок решения, в котором задаются само дифференциальное урав
нение, краевые условия и обращение к функции odesolve. По графику функ
ции y(t) (сплошная кривая) видно выполнение краевых условий. Штриховой
линией обозначен график производной найденного решения.
Функции MathCAD для решения систем дифференциальных уравнений
первого порядка. Многие физические процессы описываются системами
уравнений, содержащими производные нескольких неизвестных функций
по одной и той же независимой переменной. Рассмотрим такую систему
уравнений:
4y11 2 f1 (t, y1 , y2 , 3, ym );
55y1 2 f (t, y , y , 3, y );
2 2 1 2 m
6
5 ... (10.17)
75ym1 2 fm (t, y1 , y2 , 3, ym ),

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 157


Рис. 10.14
Решение краевой задачи (10.15), (10.16)

где y1, y2, ..., ym — искомые функции переменной t; f1, f2, ..., fm — заданные
функции нескольких переменных. В матричном виде эту систему можно
представить как:
1 1 2 F(y, t), (10.18)
где y 1 — вектор, проекции которого равны производным y11 , y21 , ..., ym
1 ; F(y, t) —
векторстолбец, составленный из функций f1, f2, ..., fm системы (10.17).
Рассмотрим задачу Коши для системы (10.17) с начальными условиями:
y1 (t0 ) 1 y1, y2 (t0 ) 1 y2 , ..., ym (t0 ) 1 ym , (10.19)
где y1, y2, ..., ym — заданные величины. При этом решение будет вычислять
ся на интервале (t0, tk). Заметим, что дифференциальное уравнение первого
порядка есть частный случай системы (10.17) при m = 1.
Заметим, что задача Коши для ОДУ вида (10.9) легко сводится к реше
нию задачи Коши для системы ОДУ. Для этого введя новые переменные:
y11 2 y1 2 y2 , y21 2 y11 2 y3 , ..., ym
1 2 y(m) , (10.20)
приходим к системе ОДУ первого порядка:
4y12 3 y2 ;
5y2 3 y ;
55 2 3

6... (10.21)
5y2 3 y ;
5 m 11 m
2 3 f (t, y1 , y2 , ..., ym )
57ym

158 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


с начальными условиями (см. (10.10)):
y1 (t0 ) 2 y0 , y2 (t0 ) 2 y1, ..., ym (t0 ) 2 ym 11 (10.22)
Функции для решения системы ОДУ делятся на два типа: решатели для
жестких систем и решатели для нежестких систем. Система ОДУ, записан
ная в матричной форме как (см. (10.18)):
y 1 2 Ay, (10.23)
называется жесткой, если матрица A является почти сингулярной. В про
тивном случае система является нежесткой.
В пакете MathCAD PRIME для решения систем ОДУ реализованы сле
дующие вычислительные методы (названия в соответствии с обозначениями
пакета):
§ Adams — методы Адамса — Башфорта;
§ rkfixed, Rkadapt, Bulstoer — метод Рунге — Кутты 4 порядка с фиксиро
ванным и адаптивным размером шага и метод Булирша — Штера для
плавно изменяющихся ОДУ;
§ BDF — методы обратного дифференцирования;
§ Radau, Stiffb, Stiffr — методы Радо, Булирша — Штера и Розенброка
для жестких систем ОДУ
§ AdamsBDF — определяет, жесткой или нежесткой является система, и
вызывает соответственно методы BDF или методы Adams;
§ statespace — методы для решения системы линейных ОДУ первого по
рядка вида:
y 1(t) 2 F (t) 3 y (t) 4 B(t) 3 u(t). (10.24)
Для решения систем ОДУ первого порядка наиболее часто используются
следующие функции:
§ rkfixed — метод Рунге — Кутты с фиксированным шагом;
§ Rkadapt — метод Рунге — Кутты с адаптивным выбором шага;
§ Bulstoer — метод Булирша — Штера.
Обращение к этим функциям имеет вид:
rkfixed(y, t0, tk, n, D); Rkadapt(y, t0, tk, n, D); Bulstoer(y, t0, tk, n, D).
Аргументы функций одинаковы:
§ y — вектор начальных условий размерности m, проекции которого опре
деляются значениями (10.19);
§ t0, tk — граничные точки интервала, на котором ищется решение диффе
ренциального уравнения;
§ n — число точек (не считая начальной), в которых вычисляются значе
ния искомого решения;
§ D — векторная функция двух переменных D(x, y) содержащая вектор
первых производных, т. е. правую часть систем (10.17) или (10.18).
Результатом работы этих функций является матрица размером (n + 1)´
´(m + 1), первый столбец которой — это значения аргумента t, в которых вы
числялось решение. Второй столбец и последующие — численные значения
решений y1(t), y2(t), ..., ym(t) в точках t0, t1, ..., tn (первый столбец матрицы).

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 159


Пример 10.14. Используя функцию rkfixed решить задачу Коши приме
ра 10.11, сведя ее к задаче Коши для системы ОДУ первого порядка.
Решение. Введем новые переменные:
§ y1(t) = y(t) — искомое решение ОДУ;
§ y2(t) = y¢(t) — первая производная решения ОДУ.
Тогда получаем систему ОДУ первого порядка:
3y11 2 y2 ;
4
5 k 6 (10.25)
48y21 2 7 Q y1 7 Q y2 .

Рис. 10.15
Решение задачи Коши для системы ОДУ (пример 10.14)

160 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Начальные условия y1 (t0 ) 1 0,01, y2 (t0 ) 1 0.
Решение этой системы приведено в документе, показанном на рисун
ке 10.15. Обратите внимание, что системная переменная ORIGIN задана рав
ной 1 (для совпадения индексов переменных с обозначениями системы (10.25)).
Переменные Y1, Y2 являются элементами вектора, и поэтому их индексные
выражения вводятся после нажатия клавиши «левая квадратная скобка».
Переменные y1, y2 являются скалярными величинами с соответствующим
вводом нижних индексов в их именах. На рисунке приведены графики функ
ции решения (второй столбец матрицы Z) и ее производной (третий столбец,
показана штриховой линией).
Пример 10.15. Построить фазовый портрет динамической системы при
мера 10.14 в координатах «перемещение — ускорение».
Решение. К документу, изображенному на рисунке 10.15, добавляется
фрагмент, приведенный на рисунке 10.16. Заметим, что третий столбец мат
рицу Z содержит значений первой производной в точках t0, t1, ..., tn.
Жесткие системы дифференциальных уравнений. Напомним, что систе
ма ОДУ, записанная в матричной форме (10.23), называется жесткой, если
матрица A является почти сингулярной (почти вырожденной). В этом случае

Рис. 10.16
Построение фазового портрета (пример 10.15)

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 161


применение функций MathCAD rkfixed может дать неустойчивое решение.
Для решения жестких систем можно использовать следующие три функции:
Stiffb, Stiffr, Radau.
Обращения к функциям Stiffb, Stiffr имеют вид:
Stiffb(Y0, t1, t2, n, F, YJ), Stiffr(Y0, t1, t2, n, F, YJ),
со следующими формальными параметрами:
§ Y0 — вектор начальных условий размерности m (m — число уравнений в
решаемой системе ДУ);
§ t1, t2 — граничные точки интервала, на котором ищется решение (на
чальные условия задаются в точке t1;
§ n — число точек (не считая начальной), в которых ищется решение;
§ F(t, y) — вектор размерности m, содержащий правую часть системы
(10.18);
§ YJ — матрица размером m´(m + 1), первый столбец которой содержит
вектор F(t, y), а остальные m столбцов содержат частные производные
вектора F(t, y) по y1, y2, ..., ym, т. е. Якобиан системы (10.17).
Результатом работы этих двух функций является матрица решений
размером (n + 1)´(m + 1), где m представляет количество неизвестных функ
ций. Первый столбец матрицы содержит (n + 1) значений ti, в которых вы
числяются решения и которые равномерно распределены между t1 и t2.
Остальные m столбцов содержат значения решений y1(t1), ..., ym(ti), i = 0,
1, ..., n.
Заметим, что Якобиан системы (10.17) является матрицей (обозначим J)
размером m´m, элементы которой определяются следующими соотноше
ниями:
1
Jj,k (t, y) 2 f (t, y1,..., ym ), j 2 1,..., m; k 2 1,..., m. (10.26)
1yk j
Для вычисления Якобиана можно использовать функцию MathCAD
Jacob, обращение к которой имеет вид:
Jacob(F(y), y),
где F(y) — векторфункция размерности m, jй элемент которой равен
fj (y1 , ..., ym ); y — вектор переменных, по которым будут вычисляться част
ные производные.
Пример 10.16. Правая часть ОДУ (10.17) задается следующими функ
циями:
f1 (y1 , y2 ) 1 y12 2 y2 3 y1 2 y22 ; f2 (y1 , y2 ) 1 sin(y1 2 y2 ).

1 f ( y) 2
Используя функцию Jacob, вычислить Якобиан вектора F(y ) 3 4 1 5 .
6f2 (y)7
Решение. На рисунке 10.17 приведен фрагмент документа, в котором
задача решается двумя способами.

162 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 10.17
Вычисление Якобиана (пример 10.16)

В первом способе использование оператора символьного вывода позво


ляет получить матрицу размером 2´2, элементы которой определяются со
ответствующими аналитическими выражениями. Во втором способе зада
ется функция пользователя (аргументом является вектор y), используя
которую можно найти числовые значения элементов матрицы Якоби. За
метим, что в обозначениях f1 (y), f2 (y) цифры 1, 2 являются нижними ин
дексами имени функций и вводятся с помощью кнопки Подстрочный ин2
декс вкладки Математика. Аргументами функций f1 (y), f2 (y) является
вектор y и поэтому y1 , y2 — проекции этого вектора с индексными выраже
ниями 1, 2.
Обращение к функции Radau имеет вид:
Radau(Y0, t1, t2, n, F),
со следующими формальными параметрами:
§ Y0 — вектор начальных условий размерности m (m — число уравнений в
решаемой системе ДУ);
§ t1, t2 — граничные точки интервала, на котором ищется решение (на
чальные условия задаются в точке t1;
§ n — число точек (не считая начальной), в которых ищется решение;
§ F (t, y) — вектор размерности m, содержащий правую часть системы
(10.18).
Результатом работы этой функции является матрица решений разме
ром (n + 1)´(m + 1), где m — количество неизвестных функций. Первый стол
бец матрицы содержит (n + 1) значений ti, в которых вычисляются решения
и которые равномерно распределенны между t1 и t2. Остальные m столбцов
содержат значения решений y1(t1), ..., ym(ti), i = 0, 1, ..., n.
Отметим, что функция Radau по сравнению с функциями Stiffb, Stiffr не
требует задание Якобиана в качестве параметра.

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 163


Пример 10.17. Дана система ОДУ вида

5y11 2 30,1y1 4 100y2 y3 ;


6
7y21 2 0,1y1 3 100y2 y3 3 1000y2 ; (10.27)
6
8y31 2 1000y2
112
с вектором начальных условий Y 0 5 304 . Найти решение этой системы ОДУ
3 4
на интервале аргумента [0,50]. 36047
Решение. Для построения решения системы ОДУ используем функцию
Radau. Фрагмент документа MathCAD приведен на рисунке 10.18. Здесь же
приведены графики найденных решений: функция y1 (t) — сплошная кри
вая, y2 (t) — точечная кривая, y3 (t) — штрихпунктирная кривая.
На рисунке 10.19 приведен фрагмент документа MathCAD, в котором
для нахождения решения системы ОДУ (10.27) использовалась функция

Рис. 10.18
Решение жесткой системы ОДУ с использованием функции Radau

164 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 10.19
Решение жесткой системы ОДУ с использованием функции rkfixed

rkfixed. Для получения устойчивого решения пришлось число точек n за


дать равным 20 000, т. е. увеличить в 400 раз по сравнению с функцией Radau,
что естественно существенно увеличивает затраты машинного времени и
повышает требования к ресурсам компьютера (размер матрицы Sol стано
вится равным 20 001´4 вместо 51´4).

& ВОПРОСЫ И ЗАДАНИЯ ДЛЯ САМОКОНТРОЛЯ


ПО ТЕМЕ 10
1. Что такое корни нелинейного уравнения? Графическая интерпретация понятия
корней нелинейного уравнения.
2. Что такое отделение корней нелинейного уравнения?
3. Используя графические возможности MathCAD, выполнить процедуру отделе
ния корней нелинейного уравнения f (x) 1 (0,2x)3 2 cos(x) 1 0 на интервале [–7, 4].
4. Найти все 5 корней нелинейного уравнения 3sin(8x) 1 0,7x 2 0,9 3 0, лежащие в
интервале [–1, 1].

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 165


5. Найти все корни нелинейного уравнения 3x4 + 4x3 – 12x2 – 5 = 0.
6. Используя функцию lsolve, найти вектор решения следующих СЛАУ:

5100 1 x1 2 6 1 x2 3 2 1 x3 4 200;
6
а) 76 1 x1 2 200 1 x2 3 10 1 x3 4 600;
6x1 2 2 1 x2 3 100 1 x3 4 500;
8

410 1 x1 2 x2 2 x3 3 12;
5
б) 62 1 x1 2 10 1 x2 2 x3 3 13;
52 1 x1 2 2 1 x2 2 10 1 x3 3 14.
7
Проверить найденные решения.
7. Геометрическая интерпретация корней системы из двух нелинейных уравне
ний.
8. Используя Блок решения, решить следующие системы уравнений:
3sin x 1 2y 2 2;
а) 4
6cos( y 5 1) 1 x 2 0,7;

4sin y 1 x 2 30,4;
б) 5
62y 3 cos(x 1 1) 2 0;

3x2 1 y2 2 36;
в) 4
5x 1 y 2 2.
Проверить найденные решения.
9. Сформулируйте задачу Коши для обыкновенного дифференциального уравне
ния второго порядка.
10. Какая связь между порядком обыкновенного дифференциального уравнения и
количеством начальных условий в задаче Коши?
11. Решить дифференциальное уравнение y²(t) + t2 × y¢ + t × y(t) = cos(t) при гранич
ных условиях y¢(0) = 3, y(0) = 8. Решение найти на интервале [0, 10] и построить
график решения.
12. Запишите дифференциальное уравнение движения математического маятника и
с помощью символьных вычислений получите закон движения этого маятника.
13. Решить дифференциальное уравнение y¢(t) = sin(2t) – y(t)tg(t) = cos(t) при гранич
ном условии, y(0) = 0. Решение найти на интервале [0, p] и построить график
решения. Точное решение определяется выражением –2cos2(t) + 2cos(t). Постро
ить график этого решения и сравнить его с графиком найденного решения.
14. Найти решения системы ОДУ:
4y11 2 ay1 3 y2 ;
5 1
7y2 2 y1 6 ay2
на интервале [0, 2p], шаг между узлами равен 0,05p, начальные условия y1(0) = 1,
y2(0) = –1. Решения ОДУ найти для двух значений коэффициента a: a = 0 и a = 2.
Графики решений построить в плоскости y1, y2.

166 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


ТЕМА 11. РЕШЕНИЕ
ТЕМА ОПТИМИЗАЦИОННЫХ ЗАДАЧ
В ПАКЕТЕ MathCAD PRIME

Оптимизационные задачи возникают в связи с многочис


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

11.1. РЕШЕНИЕ ОПТИМИЗАЦИОННЫХ ЗАДАЧ


БЕЗ ОГРАНИЧЕНИЙ
Для этого используются две функции MathCAD:
§ maximize (f, <список параметров>) — вычисление точки максимума;
§ minimize (f, <список параметров>) — вычисление точки минимума,
где f — имя функционала (целевой функции), определенного до обращения
к функции; <список параметров> содержит перечисление (через запятую)

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 167


имен параметров (переменные оптимизационной задачи), относительно ко
торых решается оптимизационная задача.
Функции maximize и minimize возвращают вектор искомых параметров,
при которых исследуемая функция имеет максимальное или минимальное
значение соответственно.
Функции maximize и minimize обязательно должны находится в Блоке
решения. Подробно этот блок был рассмотрен в параграфе 10.1. Поэтому здесь
только напомним, что блок решения в текст документа вставляется путем
обращения к вкладке Математика (Math) группы Области (Regions) и щелк
нуть по кнопке Блок решения (Solve Block). Этот блок применительно к реше
нию оптимизационных задач без ограничений имеет следующую структуру:
<Начальные условия на переменные задачи>,
т. е. точка «старта» алгоритма;
<Вызов функции maximize или minimize>.

Блок решения в тексте документа заключается в прямоугольную рамку.


Дальнейшие вычисления с найденным решением оптимизационной задачи,
как правило, осуществляются вне блока решения (рис. 11.1), хотя их можно
выполнять и внутри Блока решения.
Пример 11.1. Дан функционал:
1 141 1 32u 1 16u2 1 4v2 2 20v
f (u, v) 3 e4 . (11.1)
45 32
Определить значения u, v, при которых функционал f (u, v) достигает
максимального значения.
Решение. Фрагмент документа MathCAD, решающий эту задачу, приве
ден на рисунке 11.1. В последних строках документа выполнена проверка

Рис. 11.1
Безусловная максимизация функционала (11.1)

168 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


найденного решения на максимум — при небольшом отклонении от точки
минимума (–1; 2,5) значение функционала уменьшается (хотя и незначи
тельно). Видим, что Блок решения заключается в прямоугольную рамку, а
проверка найденного решения осуществляется уже вне блока решения.
Рассмотрим пример на движение тела под действием сил тяжести, что
часто встречается в физике и теоретической механике.
Пример 11.2. Тело брошено вертикально вверх с начальной скоростью
V0 = 40 м/с. Определить, в какой момент времени tmax тело поднимется на
максимальную высоту и значение этой высоты Hmax.
Решение. Высота подъема тела H(t) определяется следующим выражением:
g 2
H (t) 1 V0 t 2 t .
2
Для нахождения tmax сформулируем следующую оптимизационную зада
чу: найти время tmax, для которого функция H(t) принимает максимальное
значение. Для решения этой задачи будем использовать функцию MathCAD
maximize. На рисунке 11.2 приведен фрагмент документа, в котором реша
ется рассматриваемая задача.

Рис. 11.2
К примеру 11.2

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 169


Первоначально задача решается графически, определяются приближен
ные решения задачи. Из графика функции H(t) находится интервал време
ни, на котором тело достигает максимальной величины, и эта информация
отражается в Блоке решения неравенством 0 £ t £ 8. В двух последних стро
ках документа MathCAD (см. рис. 11.2) вычисляется решение оптимизаци
онной задачи и находится максимальная высота подъема тела.

11.2. РЕШЕНИЕ ОПТИМИЗАЦИОННЫХ ЗАДАЧ


С ОГРАНИЧЕНИЯМИ
При решении оптимизационных задач с ограничениями ис
пользуются те же функции maximize, minimize, но в блоке решения вставля
ются конструкции, определяющие заданные ограничения и Блок решения
имеет следующую структуру:

<Начальные условия>
<Ограничения>
<Вызов функции maximize или minimize>
Заметим, что внутри блока задаются ограничения в виде равенств или
неравенств, определяющие допустимую область значений переменных зада
чи условной оптимизации. Рассмотрим ряд примеров.
Пример 11.3. Дан функционал:
a
F (a, b) 1 100(a 2 b)2 2 50 (11.2)
b
и ограничения в виде
a 1 2b 2 5; b 3 1; a 3 0. (11.3)
Определить значения a, b, доставляющие максимальное значение функ
ционала (11.2) и удовлетворяющие неравенствам (11.3).

Рис. 11.3
Условная максимизация функционала (11.2)

170 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Решение. Фрагмент документа, решающий эту задачу, показан на рисун
ке 11.3. Начальные значения a, b (точка «старта» алгоритма) берется из до
пустимой области, определяемой ограничениями (11.3). В нижней части
документа (ниже Блока решения) выполнена проверка найденных значе
ний a, b. Ограничение a + 2b £ 5 стало равенством a + 2b = 5, и такие ограни
чения называют активными ограничениями.
Пример 11.4. Пусть вектор v состоит из трех проекций и дан функцио
нал:
N (v) 1 || v ||2 2 2v1 3 v2 2 2v3 . (11.4)
Вычислить точку минимума этого функционала при ограничениях:
3
3 vi 1 1, vi 2 0,2, i 1 1,3. (11.5)
i 11

Решение. Фрагмент документа, решающий эту задачу, показан на рисун


ке 11.4. В нижней части фрагмента выполнена проверка найденного реше
ния — проекции вектора v. Видно, что все проекции удовлетворяют ограни
чениям (11.5).

Рис. 11.4
Условная максимизация функционала (11.4)

В рассмотренных примерах целевая функция является нелинейной, и


примеры относятся к задачам нелинейного программирования. Рассмотрим
несколько примеров задач линейного программирования, в которых и целе
вая функция, и ограничения являются линейными функциями переменных
задачи. Рассмотренные задачи часто встречаются в планировании и органи
зации производства.
Пример 11.5. Цех малого предприятия должен изготовить 100 изделий
трех типов (x1, x2, x3) и не менее 20 шт. изделий каждого типа. На изделия
уходит 4; 3,4 и 2 кг металла соответственно при его общем запасе 340 кг, а
также расходуются по 4,75; 11 и 2 кг пластмассы при ее общем запасе 700 кг.

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 171


Рис. 11.5
Решение задачи оптимального планирования

Прибыль, полученная от каждого изделия, равна 4, 3 и 2 руб. Определить,


сколько изделий каждого типа необходимо выпустить для получения макси
мальной прибыли в рамках установленных запасов металла и пластмассы.
Эта задача относится к очень широкому классу задач, получившему на
звание «оптимальный план производства при ограниченных ресурсах».
Очевидно, что линейные ограничения могут распространяться не только на
сырьевые ресурсы, но и на оборудование, людские ресурсы и т. д.
Решение. Фрагмент документа MathCAD, решающий эту задачу, по
казан на рисунке 11.5. В конце фрагмента выполнена проверка найденно
го решения (56, 20, 24). Видно, что по требуемому количеству металла
(340 кг) достигнут уровень запаса — 340 кг (такое ограничение называют
активным).
Пример 11.6. Двум погрузчикам разной мощности не более чем за 24 ч
нужно погрузить на первой площадке 230 т, на второй — 218 т. Первый
погрузчик на первой площадке может погрузить 10 т/ч, на второй — 12 т/ч.
Второй погрузчик на каждой площадке может погрузить по 13 т/ч. Стои
мость работ, связанных с погрузкой одной тонны первым погрузчиком на
первой площадке, — 8 y. e., на второй — 7 y. e. Стоимость работ второго по
грузчика соответственно — 12 y. e. и 13 y. e. Нужно составить план работы,
т. е. найти, сколько времени должен проработать каждый погрузчик на ка
ждой площадке, чтобы стоимость всех работ по погрузке была минималь
ной. По техническим причинам первый погрузчик на второй площадке дол
жен работать не более 16 ч.

172 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 11.6
Решение задачи оптимального распределения оборудования

Решение. Фрагмент документа MathCAD, в котором решается рассмат


риваемая задача, приведен на рисунке 11.6. В качестве искомых параметров
приняты следующие переменные: xij — время работы iго погрузчика на jй
площадке. Обратите внимание на ограничения в виде равенств, стоящих в
Блоке решения, в которых стоит «жирный» знак =, вводимый с палитры
инструментов «Сравнение».
В нижней части документа выполнена проверка полученного решения
(переменные xc11, xc12, xc21, xc22). Видно, что найденное решение удовлетво
ряет ограничениям задачи.

11.3. РЕШЕНИЕ ОПТИМИЗАЦИОННЫХ ЗАДАЧ


ИЗ УСЛОВИЙ ЭКСТРЕМУМА
ЦЕЛЕВОЙ ФУНКЦИИ

Один из подходов к решению оптимизационных задач, как с


ограничениями, так и без ограничений является решение системы уравне
ний, полученной из условия экстремума целевой функции относительно
переменных оптимизационной задачи.
Напомним, что необходимые условия минимума или максимума функ
ционала f(x1, x2, ..., xm) (условия экстремума) имеют вид:

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 173


1
f (x1, x2 , ..., xm ) 2 0, j 2 1,2, ..., m. (11.6)
1xj
Достаточные условия максимума или минимума основаны на исследова
нии знака определенности матрицы вторых частных производных:

22f 22f 22f 22f


...
2x12 2x12x2 2x12xm 11 2x12xm
22f 22f 22f 22f
...
2x2 2x1 2x22 2x2 2xm 11 2x2 2xm
34 ... ... ... ... ... . (11.7)
22f 22f 22f 2 f
2
...
2xm 112x1 2xm 112x2 2xm
2
11
2xm 112xm
22f 22f 22f 22f
...
2xm 2x1 2xm 2x2 2xm 2xm 11 2xm
2

Для упрощения изложения ниже будем полагать, что в точке экстрему


ма, удовлетворяющей системе уравнений (11.6), будут удовлетворяться и
достаточные условия. Поэтому решение оптимизационной задачи будем на
ходить как решение системы уравнений (11.6).
Как найти это решение в пакете MathCAD? Условия экстремума (11.6)
порождают систему уравнений (чаще всего нелинейных), которые распола
гаются в Блоке решения, вместе с ограничениями, определяющими допусти
мую область. Само решение ищется с помощью функций find, minerr. Эти
функции были подробно рассмотрены в параграфе 10.2. Поэтому только на
помним. Функция find находит вектор решения системы уравнений. Вызов
этой функции имеет вид
find(x1, x2, ..., xm),
где x1, x2, ..., xm — проекции вектора решения. Если система уравнений не
имеет решения, то следует вызвать функцию minerr(x1, x2, ..., xm), которая
возвращает вектор приближенного решения.
Замечание 11.1. Использование численных методов в функциях find(x),
minerr(x) требует в Блоке решения задать начальные значения переменным,
по которым осуществляется поиск корней уравнения.
Пример 11.7. В качестве тестового функционала при поиске точки мини
мума часто используется функционал Розенброка:
f(x, y) = 100(y – x2) + (1 – x)2. (11.8)
«Поверхность» этого функционала напоминает глубокий овраг, что силь
но осложняет работу многих алгоритмов минимизации. Требуется вычис
лить точку минимума функционала при ограничениях:
x ³ 0; y ³ 0; y £ 9 – x. (11.9)
Решение. Документ MathCAD решения этой задачи показан на рисун
ке 11.7. В последней строке вычислено значение функционала в точке экс

174 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 11.7
Минимизация функции Розенброка

тремума (1,1) и показано, что в точках (1 + 0,001, 1), (1,1 + 0,001) значение
функционала возросло, т. е. точка (1,1) — точка минимума функционала
(11.8) при ограничениях (11.9).

ВОПРОСЫ И ЗАДАНИЯ ДЛЯ САМОПРОВЕРКИ


ПО ТЕМЕ 11

1. Какова формулировка задачи безусловной оптимизации?


2. Какова формулировка задачи условной оптимизации?
3. Какая функция в оптимизационной задаче называется целевой?
4. Какие функции MathCAD вычисляют точки максимума и минимума целевой
функции?
5. Решите задачу линейного программирования: определить точку максимума
функционала

F(x) = 2x0 + 9x1 + 15x2

при ограничениях
x0 1 0; x1 1 0; x2 1 0;
7x0 2 3x1 2 x2 3 47;
0,5x0 4 3x1 2 8x2 3 25;
9x0 2 2x1 4 10x2 3 29.
Вычислить значения функционала в этой точке.
Ответ: максимум функционала достигается в точке (0, 13, 8).
6. Решите задачу оптимального раскроя. Из металлического листа прямоуголь
ной формы (рис. 11.8) необходимо сварить бак максимального объема. Размеры
листа: L = 1, M = 2. Необходимо произвести вырез по углам прямоугольника на
величину a и сформировать стороны бака.
Необходимо определить величину a, при которой объем бака будет максималь
ным.

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 175


Рис. 11.8
Заготовка для бака

Рекомендация: выразите объем бака как функцию параметра a, а затем решай


L
те оптимизационную задачу с ограничениями 0 1 a 1.
2
7. Решите задачу 6 без ограничений на искомую величину a.
8. Решите задачу квадратичного программирования, в которой дан функционал:

Q(u, v, 1) 2 u(15 3 u) 4 5v(20 3 v) 4 21(12 3 1).

Необходимо определить точку максимума этого функционала при ограничениях:


u 1 0; v 1 0; 2 1 0;
3u 3 2v 3 42 4 100;
u 3 7v 3 2 4 90.
Ответ: максимум функционала достигается в точке (7,5; 10; 6).
9. Решите пример оптимального выпуска продукции: предприятие выпускает два
вида продукции — по 1,5 и 9,5 руб. за единицу. Для выпуска продукции выде
лено 5 тыс. единиц ресурсов и 180 нормочасов. На выпуск единицы продукции
первого и второго вида уходит по 60 и 90 единиц ресурсов и 3,5 и 2,8 нормочаса
соответственно. Сколько нужно произвести продукции первого и второго видов,
чтобы ее общая стоимость была максимальна?
Ответ: количество продукции первого и второго типа (15, 45).
10. Для питания нужно ежедневно принимать не менее 6 единиц белков, 8 единиц
жиров и 12 единиц углеводов. Есть два вида корма. Одна единица первого кор
ма содержит 21 единицу белка, 2 единицы жира, 4 единицы углеводов и стоит
3 руб. Для второго корма соответствующие цифры cледующие: 3, 2, 2 и 2. Со
ставьте оптимальный рацион питания, т. е. сколько и какого вида корма необ
ходимо принимать ежедневно при минимальной стоимости рациона.
11. В условиях примера 11.7 найти решение задачи минимизации функции Розен
брока без ограничений на переменные задачи.

176 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


ТЕМА 12. РЕШЕНИЕ ЗАДАЧ
ТЕМА
ТЕОРИИ ВЕРОЯТНОСТЕЙ
И МАТЕМАТИЧЕСКОЙ СТАТИСТИКИ
В ПАКЕТЕ MathCAD PRIME

Э
та глава содержит решение в пакете MathCAD часто встре
чаемых задач теории вероятностей и математической статистики. Исполь
зуемые определения и понятия можно посмотреть в соответствующей учеб
ной литературе.

12.1. ФОРМУЛА ИСПЫТАНИЙ БЕРНУЛЛИ


Предположим, что один и тот же опыт производится при
неизменных условиях n раз. В каждом из этих опытов случайное событие А
может произойти с вероятностью р и не произойти с вероятностью соответст
венно q = 1 – p. Вероятность того, что в этих n испытаниях событие А про
изойдет равно k раз (0 £ k £ n), вычисляется по формуле Бернулли:
Pn (k) 2 Cnk pk (1 1 p)n 1k , (12.1)
где Cnk — число сочетаний, равное
n!
Cnk 1 , (12.2)
(n 2 k)! k !
n! = 1 × 2 × 3 × ... × n — факториал числа n.
Ценность формулы Бернулли состоит в том, что она дает ответ в ситуа
ции, когда изза слишком большого числа элементарных исходов обычные
комбинационные способы подсчета вариантов неприменимы. Рассмотрим
применение формулы Бернулли в некоторых вероятностных расчетах, часто
встречающихся в теории вероятностей.
Вероятность того, что событие А произойдет не более, чем k раз. Обо
значим через Prob(k) вероятность того, что событие А произойдет не более
k раз. По теореме сложения вероятностей несовместных событий имеет ме
сто выражение
k
Prob(k) 1 Pn (0) 2 Pn (1) 2 ... 2 Pn (k) 1 3 Pn (i). (12.3)
i 10

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 177


Вероятность того, что событие А произойдет не менее, чем k раз. Эта
вероятность (обозначим как Rn(k)) равна сумме вероятностей:
n
Rn (k) 1 Pn (k) 2 Pn (k 2 1) 2 ... 2 Pn (n) 1 3 Pn ( j). (12.4)
j 1k

Учитывая, что

n
3 Pn (i) 1 Pn (0) 2 Pn (1) 2 ... 2 Pn (k) 2 ... 2 Pn (n) 1 1, (12.5)
i 10

имеем
Rn(k) = 1 – Prob(k – 1) (12.6)
Вероятность того, что событие А произойдет хотя бы один раз. Это
означает, что событие А произойдет не менее одного раза, т. е. оно может
произойти один, два и т. д. до n раз. Вероятность такого события равна:
n
Rn (1) 1 Pn (1) 2 Pn (2) 2 ... 2 Pn (n) 1 4 Pn ( j) 1 1 3 Pn (0). (12.7)
j 11

Вероятность того, что событие А произойдет не более одного раза. Эта


вероятность равна
Prob(1) = Pn(0) + Pn(1) = [1 + (n – 1)p](1 – p)n–1. (12.8)
Рассмотрим, как вычислить эти вероятности в пакете MathCAD. Для
этого можно использовать следующие функции:
§ combin(n, k) — вычисляет число сочетаний Cnk по формуле (12.2);
§ dbinom(k, n, p) — вычисляет по формуле Бернулли вероятность Pn(k)
(12.1);
§ pbinom(k, n, p) — вычисляет вероятность Prob(k) по формуле (12.3).
Пример 12.1. Для проверки качества изготовленных деталей была сфор
мирована контрольная группа — 10 деталей, из которых наугад осуществля
ется выборка отдельных деталей с возвращением взятой детали в контроль
ную группу после проверки (такая схема получила название выборки с воз
вратом). Доля бракованных деталей во всей изготовленной партии составляет
0,05. Каковы вероятности обнаружить в контрольной группе:
§ событие А — не менее одной бракованной детали;
§ событие B — не более двух кондиционных деталей;
§ событие C — не менее двух бракованных деталей.
Решение. Из условий задачи следует: n = 10, k = 2, p = 0,05, q = 1 – p = 0,95.
Вероятность события А равна вероятности того, что в контрольной группе
будет обнаружена хотя бы одна бракованная деталь, и эта вероятность опре
деляется по формуле (12.7), т. е.
10
P( A ) 1 R10 (1) 1 2 Pn ( j). (12.9)
j 11

178 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Вероятность события B определяется выражением (12.3):
2
Prob(2) 1 2 Pn ( j). (12.10)
j 10

Вероятность события C определяется выражением (12.4):


10
R10 (2) 1 3 Pn ( j) 1 1 2 Pr ob(1). (12.11)
j 12

На рисунке 12.1 показан фрагмент документа MathCAD, в котором вы


числяются вероятности событий A, B, С с использованием функций пользо
вателя Prob(n, k) и R(n, k).
Эти функции также позволяют провести исследование влияния исход
ных данных на результаты испытаний по схеме Бернулли. В качестве одного
из множества вариантов такого исследования (рис. 12.2) приводятся резуль

Рис. 12.1
Вычисление вероятностей событий примера 12.1

Рис. 12.2
Графики вероятностей Pn(k), Prob(k)

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 179


таты анализа влияния числа испытаний (n = 10 и n = 50) на вероятность
Pn(k) (рис. 12.2а, кривая 1 — n = 10 и кривая 2 — n = 30) и на вероятность
Prob(k) (рис. 12.4б, кривая 3 — n = 10 и кривая 4 — n = 50). Из приведенных
графиков видно: кривая P50(k) приобретает максимум в точке между k = 2 и
k = 3. Этот факт отражает закономерность, согласно которой максимум веро
ятности достигается при k = n × p = 50 × 0,05 = 2,5.
Пример 12.2. Пусть вероятность попадания в «десятку» при одном вы
стреле равна 0,2. Определить наименьшее число nmin выстрелов, которые
надо произвести, чтобы с вероятностью, не меньшей 0,9, попасть в десятку
хотя бы один раз.
Решение. Обратимся к формуле Бернулли. Событие A заключается в по
падании в «десятку», и вероятность этого события равна p = 0,2. Вероят
ность попадания в десятку хотя бы один раз при n выстрелов равна
1 1 Pn (0) 2 1 1 (1 1 p)n 2 1 1 q n ,
где q = 1 – p. Тогда искомое число выстрелов nmin определяется неравенством

1 1 q nmin 2 0,9. (12.12)

На рисунке 12.3 показан фрагмент документа, содержащий решение это


го неравенства. Функция ceil округляет решение неравенства до ближайше
го большого целого и дает результат nmin = 11.

Рис. 12.3
Вычисления к примеру 12.2

Задание 12.1. В условиях задачи 12.2 определить число наименьших


выстрелов при разных вероятностях p = 0,4; 0,7; 0,9. Объяснить выявлен
ную закономерность изменения nmin.

12.2. СЛУЧАЙНЫЕ ВЕЛИЧИНЫ


И ИХ ЧИСЛОВЫЕ ХАРАКТЕРИСТИКИ
Напомним, что случайной называют величину, которая в
результате испытаний принимает одно значение, априори (т. е. до опыта)
неизвестное и зависящее от некоторой совокупности случайных причин,
полный учет которых заранее не возможен. Случайные величины могут быть
дискретными и непрерывными.

180 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Дискретной называется такая случайная величина, которая может при
нимать конечное или бесконечное счетное множество значений. Для зада
ния такой случайной величины перечисляют все ее значения, например
x1, x2 , ..., xn и вероятности p1, p2, ..., pn появления этих значений.
Непрерывной случайной величиной называется величина, которая мо
жет принимать (случайным образом) любое значение на всей вещественной
оси (–¥, ¥) или из конечного отрезка [a, b]. Непрерывные случайные величи
ны являются предметом дальнейшего рассмотрения.
Основными законами, полностью описывающими непрерывные случай
ные величины, являются:
§ функция распределения
F (x) 1 P( X 2 x) (12.13)
— вероятность события, что значения случайной величины X меньше
заданного значения x;
§ плотность распределения
d
f ( x) 1 F (x). (12.14)
dx
В дальнейшем будем предполагать, что F(x) — непрерывная функция,
для которой можно доказать следующие свойства:
0 1 F (x) 1 1; (12.15)
F (23) 4 lim F (x) 4 0; (12.16)
x 123

F (2) 3 lim F (x) 3 1; (12.17)


x 12

F (b) 1 F (a), если b 2 a. (12.18)

Последнее свойство говорит о том, что F(x) является неубывающей функ


цией.
Плотность распределения f (x) позволяет вычислить F(x):
x
F ( x) 3 4 f (z)dz (12.19)
12

является неотрицательной функцией


f ( x) 1 0 (12.20)
и удовлетворяет условию
1

4 f (x)dx 3 1. (12.21)
21

Заметим, что для непрерывных случайных величин с непрерывной функ


цией F(x) имеют место следующие равенства вероятностей:
P(1 2 X 2 3) 4 P(1 5 X 2 3) 4 P(1 2 X 5 3) 4 P(1 5 X 5 3), (12.22)

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 181


где P(a < X < b) — вероятность попадания в открытый интервал (a, b);
P(a £ X < b) — в полузакрытый интервал [a, b); P(a < X £ b) — в полузакры
тый интервал (a, b]; P(a £ X £ b) — в закрытый интервал [a, b].
Вероятность попадания в интервал [a, b) можно вычислить двумя мето
дами:
P(1 2 X 3 4) 5 F (4) 6 F (1); (12.23)
1
P(2 3 X 4 1) 5 6 f (x)dx. (12.24)
2

Тогда, в силу равенств (12.22) соотношения (12.23) и (12.24) определяют


вероятность попадания случайной величины в отрезки с другими типами
границ.
Пример 12.3. Пусть функция F(x) задается выражением:

20, если x 1 0;
3 x2
3 , если 0 4 x 1 2;
316
F (x ) 5 6 7 11
3x 7 4 , если 2 4 x 1 4 ;
3
31, если x 8 11 .
9 4
Определить плотность f (x) и вероятность попадания случайной величи
ны X в интервал (1; 2,5).
Решение. На рисунке 12.4 приведен фрагмент документа MathCAD, в
котором решается данная задача. Приведены кривая 1 — график F(x), кри
вая 2 — график f (x). Вероятность попадания в отрезок (1; 2,5) вычислялась
двумя способами: выражение (A) (см. рис. 12.4) — формула (12.21), выраже
ние (B) — формула (12.22).
Пример 12.4. Задана плотность распределения случайной величины
20, x 1 2;
3
f ( x) 4 5 A
37 x2 , x 6 2.
Определить:
1) коэффициент A;
2) функцию F(x);
3) вероятность попадания случайной величины в интервал (2, 3);
4) вероятность того, что при четырех независимых испытаниях случай
ная величина ни разу не попадет в интервал (2, 3).
Решение. Неизвестный множитель A определяем из условия (12.21):
1 1
A dx
3 x2 dx 2 A 3 x2 2 1.
2 2

В документе, приведенном на рисунке 12.5, показано вычисление инте


грала в символьном виде, откуда следует уравнение
A
1 1 или A 1 2.
2

182 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 12.4
Статистические вычисления к примеру 12.3

Рис. 12.5
Вычисления к примеру 12.4

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 183


Тогда
20, x 1 2;
3
f ( x) 4 5 2
37 x2 , x 6 2.
В этом же документе в символьном виде вычислена F(x) на интервале
[2, ¥), откуда следует:
230, x 1 2;
F ( x) 4 5 x 6 2
38 x , x 7 2.

Далее вычисляется вероятность p = 0,333 попадания случайной величи


ны в интервал (2, 3), и по формуле
(1 1 p)4 2 q 4 2 0,6674 2 0,198
вычисляется вероятность того, что при четырех испытаниях случайная ве
личина ни разу не попадает в интервал (2, 3).
Напомним, что математическое ожидание случайной величины опреде
ляется как:
1
M ( x) 3 4 xf (x)dx. (12.25)
21

Дисперсия определяется выражением:


1 1
D(x) 3 4 (x 2 M(x))2 f (x)dx 3 4 x2f (x)dx 2 (M(x))2 . (12.26)
21 21
Заметим, что математическое ожидание и дисперсия являются уже не
случайными величинами: первая характеризует точку, вокруг которой груп
пируются значения случайной величины; вторая — степень разброса значе
ний случайной величины от ее математического ожидания.
Пример 12.5. Для случайной величины, плотность распределения кото
рой задается формулой:

20, если x 1 0;
3x
3 , если 0 4 x 1 2;
38
f ( x) 5 6 11
31, если 2 4 x 1 4 ; (12.27)
3
30, если x 7 11
8 4
вычислить M(x), D(x).
Решение. На рисунке 12.6 приведен фрагмент документа, в котором вы
числяются искомые числовые характеристики. Вычисление дисперсии осу
ществляется двумя способами (12.26).
Квантилем порядка p называется такое значение xp, для которого
P( X 1 x p ) 2 F (x p ) 2 p (12.28)

184 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


или xp

4 f (x)dx 3 p. (12.29)
12

Таким образом, вычисление xp сводится к решению либо уравнения (12.28),


либо (12.29). Лучше всего решать эти уравнения в пакете MathCAD.
Пример 12.6. Найти квантиль x0,05 случайной величины, плотность рас
пределения которой задана выражением (12.27).

Рис. 12.6
Вычисление числовых характеристик (пример 12.5)

Рис. 12.7
Вычисление квантилей (пример 12.6)

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 185


Решение. На рисунке 12.7 показан документ MathCAD, в котором вычис
ляется квантиль x0,05 из уравнения (12.29). Найденное значение равно 0,894.
Здесь же выполнена проверка этого значения.
Задание 12.2. Для функции плотности (12.27) вычислите квантили x0,05,
x0,75 как решения уравнения (12.28).

12.3. МОДЕЛИРОВАНИЕ
СЛУЧАЙНЫХ ВЕЛИЧИН
В научных и инженерных исследованиях широкое примене
ние находит метод статистического моделирования, или метод МонтеКар
ло. Для его реализации необходимо генерировать случайные (точнее, псев
дослучайные) числа, распределенные по требуемому закону с заданными
числовыми характеристиками (математическим ожиданием, дисперсией
и т. д.). Пакет MathCAD включает большой набор функций не только для
генерирования случайных чисел, но и для проведения различных статисти
ческих вычислений.
1 2 3 4 5 6 2 7 89
87

12345676869
6 9
  
386
25265
3


1234567829
35 39 96989
dnorm ( x , 2, 3 )
M(X)  a
1 7 ( x 1 2 )2 8 qnorm ( , 2, 3 )

exp 9 1
, 340
D ( X )  32
25 6 3 2 32 rnorm ( m, 2 , 3 )

dpois ( x,  )
x 1  M(X)  
5 39 96989
5 285
e
qpois ( ,  )

x!

D(X)  


9629
89235967829
 62



rpois ( m,  )

dunif ( x , a, b ) ab
1 M(X) 
582493829
35 39 96989
,
9 6
2
b1a qunif ( , a, b )

( b 1 a )2


 


9 6


 

runif ( m, a, b ) D( X) 
12
dbinom ( x, n, p )
8248567829
35 39 96989
M ( X )  np
qbinom ( , n, p )

Cnx p x (1 1 p )n 1 x ,
0  x  n
D ( X )  np (1 1 p )
rbinom ( m, n, p )

1

35 39 96989

9 6




dchisq ( x , n )
1 1x M(X)  n
e 2 x n /211 ,
9 6



qchisq ( , n )

2n /2  n
2   rchisq ( m, n )
D ( X )  2n




 62
9 989
2!2 "

5 39 96989
#7$ 985

M(X)  0
 
 n 1 1 n 1
dt ( x, n )

  
2 x2 2  ,если1n 2;

1
qt ( , n )

n5 6  n n D( X)   n
2 rt ( m, n )  ,если n 42.
 n 12




 62
9 989
2!2 "

1
186 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME
Функции MathCAD для вычисления плотности распределения. В табли
це 12.1 приведены функции (имена начинаются с буквы d — первая буква
слова density), позволяющие вычислить значения функции плотности наи
более используемых распределений (x — значение, для которого вычисляет
ся плотность распределения).
Кратко о c2распределении, которое широко используется в математиче
ской статистике. Пусть N1, ..., Nn — независимые, нормально распределен
ные случайные величины с нулевым математическим ожиданием и единич
ной дисперсией, т. е. Ni ~ N(0, 1), где N означает нормальное распределение,
0 — нулевое математическое ожидание, 1 — среднеквадратическое отклоне
ние, которое равно корню квадратному из дисперсии. Тогда распределение
случайной величины 12n 2 N12 3 N22 3 N32 3 ... 3 Nn2 называется распределени2
ем 12n с п степенями свободы, а сама величина 12n — случайной величи2
ной c2 с п степенями свободы.
Заметим, что количество степеней свободы п является единственным
параметром распределения, и значения c2 неотрицательны, т. е. P(12n 2 0) 3 0.
Распределение 12n с п степенями свободы имеет следующие математическое
ожидание и дисперсию: M [12n ] 2 n; D[12n ] 2 2n. При числе степеней свободы
n > 30 12n распределение хорошо аппроксимируется нормальным распреде
лением N(a, s) с параметрами a = n, 1 2 2n .
На рисунке 12.8 показаны плотности распределения f (x) случайной ве
личины 12n при n = 5 (сплошная кривая), n = 10 (точечная кривая) и n = 30
(штриховая кривая). Видно, что при увеличении n плотность f (x) «прибли
жается» к плотности нормального распределения.

Рис. 12.8
Плотности распределения c2

Функции MathCAD для вычисления квантилей распределения. Напом


ним, что число xp называется квантилем уровня p распределения с плотно
стью f (x), если оно является решением следующего нелинейного уравнения
xp
4 f (x)dx 3 p.
12

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 187


В таблице 12.1 в правой колонке (вторая строка) приведены функции
MathCAD (имена начинаются с буквы q) вычисления квантилей соответст
вующих вычислений.
Пример 12.7. Вычислить квантили уровней 0,90, 0,95, 0,99 для следую
щих распределений: нормального N(30, 8), 1230 распределения.
Решение. На рисунке 12.9 приведен фрагмент документа MathCAD, в
левой части которого приведены графики плотности распределений (сплош
ная кривая — распределение N(30, 8), точечная кривая — распределение
1230 ). В правой части документа вычислены нужные квантили. Видно хоро
шее совпадение квантилей одного уровня, но разных распределений, что
говорит о хорошей аппроксимации 1230 распределения нормальным распре
делением N(30, 8).

Рис. 12.9
Графики распределений примера 12.7

Заметим, что чем больше уровень квантиля, тем больше его значение.
Объясните, почему.
Функции MathCAD генерирования случайных векторов. Вектор, проек
ции которого являются случайными числами, распределенными по опреде
ленному закону, называется случайным вектором.
В таблице 12.1 в правой колонке (третья строка) приведены имена функ
ций (начинаются с буквы r), вычисляющих случайный вектор с соответст
вующим распределением его проекций. Параметр m — размерность случай
ного вектора.
Функция rnd(x) генерирует одно случайное число, равномерно распреде
ленное в интервале [0, 1].

188 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 12.10
Моделирование случайных чисел

Пример 12.8. На рисунке 12.10 приведен фрагмент документа MathCAD,


в котором генерируются два случайных вектора: xNпроекции имеют нор
мальное распределение (математическое ожидание равно 20, дисперсия 100);
xcпроекции имеют c2распределение (с числом степеней свободы 20). Раз
мерность векторов равна 100. Здесь же вычислено выборочное среднее (функ
ция mean) и выборочная дисперсия (функция var) этих векторов.
Задание 12.3. Составьте документ MathCAD, в котором генерируются слу
чайные векторы с числом проекций 200, проекции которых подчиняются:
§ распределению Пуассона с параметром l = 2;
§ равномерное распределение с параметрами a = 10, b = 20.
Построить графики проекций случайных векторов. Вычислить выбороч
ные среднее и дисперсию (пример 12.8).

12.4. ПОСТРОЕНИЕ ГИСТОГРАММЫ


ОТНОСИТЕЛЬНЫХ ЧАСТОТ
ПО ВЫБОРОЧНОЙ СОВОКУПНОСТИ

Напомним некоторые определения из математической ста


тистики. Предположим, что дана выборочная совокупность (проще, выбор
ка) {хi }, i 1 1, ..., N случайной величины Х (N — объем выборки). Введем
L + 1 точку z1 2 z2 2 ... 2 zL 2 zL 11 , при этом:

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 189


z1 2 min{xi }; zL 11 3 max{xi }. (12.30)

Тогда число значений xi, попавших в полузакрытый интервал [zk , zk 11 ),


k 1 1, ..., L, обозначим через nk и назовем частотой. Очевидно, что
L
2 nk 1 N. (12.31)
k 11
Величину
nk
wk 1 (12.32)
N
назовем относительной частотой, для которой выполняется условие
L
2 wk 1 1. (12.33)
k 11

В качестве оценки плотности распределения вероятности непрерывной


случайной величины Х используют гистограмму относительных частот,
т. е. систему прямоугольников, kй из которых основанием имеет kй интер
вал [zk , zk 11 ), k 2 1,2, ..., L, а высота yk* определяется по формуле
wk
yk* 2 , k 2 1, ..., L. (12.34)
zk 11 3 zk
Можно показать, что имеет место приближенное тождество
yk* 1 f (x* ), (12.35)
x*
где — некоторое число из интервала [zk , zk 11 ). Поэтому при больших объ
емах выборки и удачном выборе длин интервалов [zk , zk 11 ) гистограмма яв
ляется ступенчатой аппроксимацией плотности распределения f (x).
Возникает вопрос: как сформировать интервалы [zk , zk 11 )? Количество
интервалов L рекомендуется вычислять по формуле:
L 1 [1 2 3,222lg( N )] 2 1, (12.36)
где [Q] — целая часть числа Q. Обычно интервалы берут равной длины
h 2 zk 11 3 zk , и тогда узлы zk определяются выражением:
zk 1 z1 2 h 3 (k 4 1), k 1 1, ..., L 2 1, (12.37)
где
zk 11 2 z1
h3 . (12.38)
L
*
Значения wk, yk вычисляются по частотам nk. Поэтому для определе
ния nk по выборке {xi} в MathCAD включены две функции: hist(int, X),
histogram(int, X).
Функция hist. Параметры функции hist(int, X):
§ int — массив длины (L + 1), составленный из значений zk, k = 1, ..., L + 1.
Если параметр int задать целым числом, равным числу интервалов L, то
при выполнении функции формируется рабочий массив узлов {zk} по
формулам (12.37), (12.38);

190 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


§ X — массив длиной N, составленный из значений выборки {xi}.
Результатом работы функции является одномерный массив {nk}, k = 1,
..., L.
Функция histogram. Параметры функции histogram(int, X):
§ int — массив длины (L + 1), составленный из значений zk, k = 1, ..., L + 1.
Если int задать целым числом, равным числу интервалов L, то при вы
полнении функции формируется рабочий массив узлов {zk} по формулам:
zk 1 min{xi } 2 h 3 (k 4 1), k 1 1, ..., L 2 1,
где
max{xi } 1 min{xi }
h2 i i
;
L
§ Х — массив длиной N, составленный из значений выборки {xi}.
Результатом работы функции histogram является матрица размером L´2,
первый столбец содержит значения dk (середины отрезков [zk, zk+1) k = 1, ..., L,
а второй столбец — значения nk.
На наш взгляд, более предпочтительной является функция histogram,
так как значения dk более удобны для дальнейшего графического отображе
ния вычисленных величин nk, wk, yk* .
Пример 12.9. Построить гистограмму относительных частот по выборке
случайной величины, распределенной по нормальному закону N(–20, 10)
(см. пример 12.8). Объем выборки N = 1000.
Решение. На рисунке 12.11 приведен фрагмент документа MathCAD, в
котором:
§ сформирован случайный вектор xN, проекции которого играют роль эле
ментов выборочной совокупности (объем равен 1000);
§ по формуле (12.36) вычислено число отрезков гистограммы;
§ в результате обращения к функции hist(int, X) вычислены значения се
редин отрезков dk и частот nk, k = 1, ..., 12;
§ вычислены высоты прямоугольников гистограммы yk* ;
§ вычислены значения pk плотности нормального распределения N(–20, 10)
в точках dk;
§ построены соответствующие графики, где точками показаны значения
плотности нормального распределения, вычисленные при x = dk.
Видно хорошее совпадение высот гистограммы с теоретическими значе
ниями плотности распределения.
Замечание 12.1. Для отображения значений yk* в виде прямоугольников
необходимо обратиться к вкладке Графика, группа Кривые, кнопка Изме2
нить тип и в появившемся списке выбрать команду Кривая столбец.
Замечание 12.2. Фрагмент документа, представленного на рисунке 12.11,
можно использовать для построения гистограммы по реальной выборке (т. е.
по экспериментальным данным). Для этого вместо функции моделирования
случайного вектора вставить функцию чтения READPRN данных из файла.
Документ для построения гистограммы по реальной выборке приведен на
рисунке 12.12. Файл с выборочными значениями имеет имя sample.prn. Объ

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 191


Рис. 12.11
Гистограмма выборки нормального распределения

ем выборки равен 100. На графике отображается только гистограмма, так


как теоретические значения плотности вероятности pk на практике отсутст
вуют. Хотя выборка была сделана из нормального распределения, ее малый
объем привел к некоторому отличию гистограммы от формы плотности нор
мального распределения.
Задание 12.4. Запрограммируйте в документе MathCAD следующие про
цедуры:
§ формирование двух случайных векторов, содержащих 100 и 2000 слу
чайных чисел, подчиняющихся 110 2 распределению с числом степеней

свободы 10;
§ вычисление двух гистограмм и вычисление теоретических значений плот
ности 110
2 распределения;

§ построение графиков гистограмм и теоретических значений плотности


(см. пример 12.9);
§ анализ построенных гистограмм и вывод о связи точности гистограммы
с объемом выборки.

192 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 12.12
Построение гистограммы по реальной выборке

12.5. ВЫЧИСЛЕНИЕ ВЫБОРОЧНЫХ ОЦЕНОК


ДЛЯ ЧИСЛОВЫХ ХАРАКТЕРИСТИК
СЛУЧАЙНЫХ ВЕЛИЧИН
К числовым характеристикам случайной величины относят
ся: математическое ожидание (или среднее), дисперсия, среднеквадратиче
ское отклонение и т. д. Часто возникает необходимость оценить эти характе
ристики по выборке значений случайной величины объема N. Такие оценки
называют выборочными, или точечными, оценками числовых характеристик.
В таблице 12.2 приведены имена функций, вычисляющих выборочные
оценки часто используемых числовых характеристик. Здесь X, Y — векто
ры размерности N, составленные из выборочных значений случайных вели
чин X и Y.
Поясним некоторые числовые характеристики.
Медиана случайной величины X — это значение элемента выборки, при
ходящееся на середину упорядоченной выборочной совокупности. Если вы

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 193


1 2 3 4 5 6 2 7 89
97
123456789
8 232 29  299

123452367489
4
6 264 872
 4676  
68486 872
 4676  
4 492 2367489
4
39
464 872
 4676   
14 622 872
 4676  
1
2 872
 4676   

46
 5
543  872 4676     
1

борка имеет четное число элементов, то значение моды будет равно среднему
двух значений, находящихся посередине упорядоченной выборочной сово
купности. Например, медиана выборки (200, 236, 250, 305, 337, 220) будет
равна (236 + 250)/2 = 243.
Мода случайной величины X — это наиболее часто встречающееся значе
ние в выборке, т. е. значение, встречающееся в выборке с максимальной
частотой. Если нет повторяющихся значений, то выдается сообщение об
этом и мода не вычисляется.
Корреляционным моментом mX,Y случайных величин X и Y называется
математическое ожидание случайной величины ( X 1 M( X)) 2 (Y 1 M(Y )), т. е.

1 X,Y 2 M [( X 3 M( X)) 4 (Y 3 M (Y ))]. (12.39)

Величина корреляционного момента может изменяться от –¥ до ¥. Для


независимых случайных величин X и Y момент mX,Y = 0. Случайные величи
ны, корреляционный момент которых равен нулю, называются некоррели2
рованными.
Более удобной характеристикой взаимосвязи случайных величин явля
ется коэффициент корреляции, определяемый соотношением:

1 X,Y
2 X,Y 3 . (12.40)
42X 5 42Y

Коэффициент корреляции является важной и удобной характеристикой


связи двух случайных величин. Приведем некоторые свойства коэффициен
та корреляции.
1. –1 £ rXY £ 1 (|rXY| £ 1).
2. Если случайные величины Х и Y являются независимыми (не влияют
друг на друга), то rXY = 0.
3. Если rXY = +1 (положительная корреляция), то между Х и Y существует
функциональная линейная зависимость Y = aX + b, где а > 0. Если rXY = –1
(отрицательная корреляция), то между Х и Y существует функциональная
обратная зависимость Y = aX + b, где а < 0.
Для иллюстрации статистического смысла коэффициента корреляции
приведем диаграммы рассеяния (геометрические места точек (xi, yj) на плос

194 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 12.13
Диаграммы рассеяния при разных коэффициентах rXY

кости) для разных коэффициентов корреляции. На рисунке 12.13а диаграм


ма рассеяния соответствует коэффициенту корреляции, равному 0, на ри
сунке 12.13б коэффициент корреляции равен 0,94. Видно, что при увеличе
нии модуля |rXY| расположение точек на плоскости стремится к прямой ли
нии (подтверждение свойства 3 коэффициента корреляции).
Пример 12.10. Составить программу, выполняющую генерацию двух вы
борок объемом 500 из двух нормальных распределений: N(–20, 10), N(20, 10),
и вычислить по этим выборкам оценки числовых характеристик.
Решение. Фрагмент документа приведен на рисунке 12.14. Вычисленный
коэффициент корреляции, равный 0,008, говорит об очень слабой статистиче
ской зависимости между сгенерированными случайными величинами.

Рис. 12.14
Вычисление выборочных оценок

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 195


& ВОПРОСЫ И ЗАДАНИЯ ДЛЯ САМОПРОВЕРКИ
ПО ТЕМЕ 12

1. На телефонной станции проводились наблюдения над числом Х неправиль


ных соединений в минуту. Наблюдения в течение часа дали следующие 60 зна
чений:

3; 1; 3; 1; 4; ï 1; 2; 4; 0; 3; ï 0; 2; 2; 0; 1; ï 1; 4; 3; 1; 1;
4; 2; 2; 1; 1; ï 2; 1; 0; 3; 4; ï 1; 3; 2; 7; 2; ï 0; 0; 1; 3; 3;
1; 2; 1; 2; 0; ï 2; 3; 1; 2; 5; ï 1; 2; 4; 2; 0; ï 2; 3; 1; 2; 12.
В документе MathCAD запрограммировать построение гистограммы по этой вы
борке и вычисление оценок для математического ожидания и дисперсии вели
чины Х.
2. Непрерывная случайная величина Х имеет следующую функцию распределения:
20, x 1 0;
3
F (x) 4 6kx, x 5 [0,4];
31, x 7 4.
8

Необходимо вычислить неизвестную константу k, плотность распределения f (x),


построить графики f (x), F(x), найти M(X), D(X) и определить вероятность собы
тия A 1 {2 2 X 2 3}.
3. Непрерывная случайная величина Х имеет плотность распределения:
20, x 1 2;
3
f (x) 4 6kx, x 5 [2,4];
30, x 7 4.
8
Необходимо вычислить неизвестную константу k, функцию распределения F(x),
построить графики f (x), F(x), найти M(X), D(X) и определить вероятность собы
тия C 1 {2,5 2 X 2 3,5}.
4. Как определяется корреляционный момент mX,Y?
5. Определить коэффициент корреляции. Объяснить его теоретиковероятност
ный смысл.
6. Какими свойствами обладает коэффициент корреляции?
7. В каких случаях значения коэффициента корреляции равны +1 и –1?
8. Сформируйте выборку объемом 200 случайной величины Х, подчиняющейся
нормальному распределению с характеристиками: M(X) = 10, D(X) = 9; выбор
ку объемом 200 случайной величины Y, подчиняющейся равномерному распре
делению на интервале [5, 15]. Вычислить коэффициент корреляции между эти
ми случайными величинами.

196 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


ТЕМА 13. ОБРАБОТКА
ТЕМА
ЭКСПЕРИМЕНТАЛЬНЫХ
ДАННЫХ

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

13.1. СГЛАЖИВАНИЕ (ФИЛЬТРАЦИЯ)


ЗАШУМЛЕННЫХ ДАННЫХ
В большинстве случаев экспериментальные (выборочные)
данные соответствуют следующей схеме измерений:
yi 1 f (xi ) 2 3i 1 fi 2 3i , i 1 1, ..., n, (13.1)
где xi — значения независимой переменной; yi — измеренные (зарегистриро
ванные) значения функции f (x) в точках xi; ei — случайные величины, ото
бражающие погрешности измерений (регистрации). При этом предполагает
ся, что среднее значение ei равно нулю, т. е.
M (1i ) 2 0, i 2 1, ..., n. (13.2)
Для фильтрации таких погрешностей рассмотрим несколько фильтров,
часто используемых на практике и реализованных в пакете MathCAD. При
ведем описание этих функций.
Функция ksmooth. Эта функция сглаженное значение 541 123 вычисляет
по формуле 1
3 72 2 73 4

8 68
79 5 92
31 456 1 2 111 2 3 1 12 3332 12
3 72 2 73 4 (13.3)

8 68
79
2 11

где «весовая» функция h(t) определяется выражением:

4 exp 16 5 2.
1 t2
h(t) 3 2 7
(13.4)
28 4 0,37 9 2 4 (0,37)

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 197


Видно, что сглаженное значение 541 123 есть сумма всех измерений yi с
экспоненциальными весами. Следовательно, рассматриваемый алгоритм
2 xi 1 xj 3
обрабатывает все значения yi, но с разными весами h 4 5. Величина
6 b 7
весовых множителей зависит от:
§ параметра b — чем больше величина параметра, тем в бо´льшей степени
сглаживаются «зашумленные» значения yi;
§ «расстояния» xi – xj — чем меньше эта величина, с тем бо´льшим весом
значение yi войдет в результат 541 123.

Рис 13.1
График функции h 12
x
b

На рисунке 13.1 приведен график значений функции h 1 xb 2, вычислен


ных при b = 2 и определяющих весовые множители суммы (13.2). Видно, что
значимые веса определяются для значений x Î [–1,5b; +1,5b]. Для значе
ний x вне этого интервала весовые множители очень малы, и, следователь
но, соответствующие значения yi практически не учитываются при вычисле
нии yjKSM .
Обращение к функции ksmooth имеет вид ksmooth(x, y, b), где x, y —
массивы длиной n, содержащие значения xi, yi. Соответственно, b — ска
лярный параметр, задающий степень сглаживания исходных данных (чем
больше величина параметра, тем в большей степени сглаживаются значе
ния yi). Результатом работы является одномерный массив длиной n, содер
жащий значения yjKSM .
Пример 13.1. Используя функцию MathCAD ksmooth, выполним вычис
лительный эксперимент по сглаживанию зашумленных (искаженных слу
чайным шумом) данных. Подготовка таких данных показана на рисунке 13.2

198 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 13.2
Сглаживание с использованием функции ksmooth

Рис. 13.3
Результаты сглаживания зашумленных данных

(вставленные комментарии позволяют легко понять назначение той или иной


конструкции MathCAD). Точные значения f (xi) (кривая 1 на рисунке 13.3)
искажались нормально распределенными случайными числами с нулевым
средним и дисперсией, задаваемой относительным уровнем шума d. Истин
| 1|
ный относительный уровень шума равен 2 0,362 (см. рис. 13.2), т. е. 36,2%
| y|
(что говорит о высоком уровне шума).

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 199


Зашумленные данные (кривая 2 на рисунке 13.3) дважды сглаживались
функцией ksmooth с двумя значениями параметра b:

a) b 3 0,3 1 hb 3 32; б) b 3 0,9 1 hb 3 92.


При этом точность фильтрации определялась относительной ошибкой фильт
рации, вычисляемой по формуле:
1
4 50 1 123 52
6
254 2 5 264 332 7
31 273 1 6 4 1 0 50 7 4
6 7
6
5 264 32
7
8 4 10 9
Видно, что при первом значении параметра результат сглаживания со
держит остаточный шум (функция «недоглажена») и dФ(0,3) = 0,224. Второе
значение параметра b обусловило приемлемые результаты фильтрации (см.
кривую 4 на рисунке 13.3) с относительной ошибкой dФ(0,9) = 0,102. Таким
образом, использование функции ksmooth при соответствующем выборе па
раметра уменьшило уровень шума больше чем в 3 раза (с 0,362 до 0,102).
Так как задача сглаживания часто возникает при обработке эксперимен
тальных данных и успех применения для этой цели функции ksmooth зави
сит от выбора величины параметра b, то выполним еще один вычислитель
ный эксперимент, который даст ответ на вопрос: как величина параметра b
влияет на ошибку сглаживания?
На рисунке 13.4 приведен фрагмент документа MathCAD, в котором
организован цикл по параметру b и для каждого текущего значения bj,

Рис. 13.4
Сглаживание зашумленных данных при разных значениях параметра

200 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 13.5
Зависимость ошибки сглаживания от параметра b

j = 0,1, ..., 20, вычисляются вектор сглаженных значений Yj и относитель


ная ошибка сглаживания 21 j . График зависимости 21 j (bj ) приведен на ри
сунке 13.5.
Анализируя вид этой зависимости, видим, что существует оптимальное
значение bopt » 1, при котором относительная ошибка сглаживания мини
мальна. При значениях b < bopt наблюдается увеличение ошибки сглажива
ния за счет увеличения «остаточной» случайной ошибки сглаживания —
эффект «недоглаживания» (примером является кривая 4 на рисунке 13.3).
Если b > bopt, то возрастание происходит изза увеличения систематической
ошибки сглаживания — в сглаженной функции не сохраняются быстрые
изменения («тонкие» детали), присутствующие в «точной» функции f (x), —
эффект «переглаживания».
Таким образом, при использовании функции ksmooth надо задавать па
раметр b » bopt. Как определить bopt — это отдельный и достаточно сложный
вопрос, который здесь не рассматривается. Заметим только, что величина
bopt зависит от:
§ от вида функции f (x) — чем «глаже» функция, тем больше значение bopt;
§ от относительного уровня шума — чем выше уровень, тем больше значе
ние bopt.
Функция medsmooth. Реальные экспериментальные данные могут содер
жать аномальные измерения, когда некоторые значения yi могут существенно
отличаться (на порядок и более) от рядом стоящих измерений. Эффективно

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 201


удалить аномальные измерения позволяет локальный медианный фильтр.
Принцип работы медианного фильтра заключается в следующем.
Из n наблюдений выбирается M = 2L + 1 < n рядом стоящих наблюде
ний, о которых говорят, что они попали в апертуру медианного фильтра
размером M. Далее эти M значений упорядочиваются по возрастанию (полу
чается так называемый вариационный ряд). В качестве выходного сигнала
541 123 медианного фильтра принимается значение yi, стоящее в середине ва
риационного ряда. Если обозначить операцию вычисления медианы как
med(), то выходной сигнал медианного фильтра определяется выражением
641 123 3 789 2
4 1 5 34443
4 11 3
4 3
4 21 3
4 2 5 53 (13.5)
где в скобках перечислены M = 2L + 1 значений, по которым вычисляется
медиана. «Перемещая» апертуру медианного фильтра от начала выборки к
концу, можно обработать все наблюдения выборки.
Эффективное удаление аномальных наблюдений медианным фильтром
можно объяснить тем, что аномальные измерения располагаются либо в на
чале вариационного ряда, либо в конце. Поэтому результатом работы меди
анного фильтра не могут быть аномальные измерения (при правильно вы
бранной длине апертуры, а именно количество аномальных измерений, по
павших в апертуру не больше величины L).
В пакете MathCAD медианную фильтрацию можно осуществить с помощью
функции medsmooth. Обращение к этой функции имеет вид medsmooth(y, M),
где y — вектор, составленный из наблюдений yi, i = 1, 2, ..., n; M < n — размер
апертуры (нечетная величина).
Пример 13.2. Используя функцию MathCAD medsmooth, выполним вы
числительный эксперимент по сглаживанию аномальных измерений. Под
готовка таких данных показана на рисунке 13.6 (вставленные комментарии
позволяют легко понять назначение той или иной конструкции). Точные
значения f (xi) (кривая 1 на рисунке 13.7) искажались нормально распреде
ленными случайными числами с нулевым средним и дисперсией, задавае
мой относительным уровнем шума d. Истинный относительный уровень шума
| 1|
равен 2 0,362 (см. рис. 13.6), т. е. 36,2% (что говорит о высоком уровне
| y|
шума). Затем вносились три аномальных измерения (кривая 2 на рисун
ке 13.7), которые почти в девять раз увеличивали относительный уровень
шума (было 0,362, стало 3,129). Зашумленные таким образом данные (вклю
чающие в себя аномальные измерения) сглаживались тремя способами:
§ функцией ksmooth c параметром b = 0,3;
§ функцией medsmooth с размером апертуры M = 13;
§ функцией medsmooth с размером апертуры M = 19.
Какие выводы можно сделать?
1. Функция ksmooth неэффективна для сглаживания аномальных изме
рений (относительная ошибка сглаживания равна 1,562, т. е. 156,2%), так
как она не удаляет аномальные измерения, а только их немного сглаживает
(кривая 3 на рисунке 13.7).

202 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 13.6
Сглаживание аномальных измерений функцией medsmooth

Рис. 13.7
Результаты сглаживания аномальных измерений

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 203


2. Функция medsmooth эффективно удаляет аномальные шумы (штрихо
вая кривая на рисунке 13.7).
3. Ошибка сглаживания функцией medsmooth зависит от величины апер
туры M. Это хорошо видно из рисунка 13.6 (при M = 13 относительная ошиб
ка фильтрации равна 0,235, при M = 19 — 0,377). Поэтому выбор оптималь
ного размера апертуры является актуальной проблемой и для этой функции.
Функция supsmooth. Фильтрация «зашумленных» данных осуществля
ется построением линейной регрессии по k — ближайшим точкам xi с адап
тивным выбором «размера» k окна сглаживания.
Обращение к функции имеет вид supsmooth(X, Y).
Параметры: X — массив элементы xi которого должны быть упорядочены
по возрастанию; Y — вектор, составленный из наблюдений yi, i = 1, 2, ..., n.
Отметим, что supsmooth не требует задания никакого «управляющего» пара
метра, что для обычного пользователя является определенным преимущест
вом функции supsmooth.
Пример 13.3. Используя функцию MathCAD supsmooth, выполним вы
числительный эксперимент по сглаживанию зашумленных данных. Подго
товка таких данных показана на рисунке 13.8 (вставленные комментарии

Рис. 13.8
Сглаживание зашумленных данных с помощью функции supsmooth

позволяют легко понять назначение той или иной конструкции). Точные


значения f (xi) (кривая 1 на рисунке 13.9) искажались нормально распреде
ленными случайными числами с нулевым средним (кривая 2 на рисун
| 1|
ке 13.9). Относительный уровень шума равен 2 0,362 (см. рис. 13.8), т. е.
| y|
36,2% (что говорит о высоком уровне шума). Эти зашумленные данные сгла
живались двумя способами:

204 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 13.9
Результаты сглаживания зашумленных данных

1. функцией supsmooth;
2. функцией ksmooth с параметром b = 0,9.
Из рисунка 13.9 видно, что сглаживание с помощью функции supsmooth
дает меньшую точность по сравнению с функцией ksmooth при удачно вы
бранном параметре b (кривая 3 на рисунке 13.9 — функция supsmooth; кри
вая 4 — функция ksmooth).

13.2. ИНТЕРПОЛЯЦИЯ ДИСКРЕТНЫХ ДАННЫХ


Как правило, экспериментальные данные представляют со
бой значения некоторой функции f (x) на множестве дискретных значений
аргумента xi, i = 1, ..., n. Такие данные можно назвать дискретными. К этим
же данным относятся результаты фильтрации «зашумленных» данных с
помощью функций, описанных в п. 13.1. Однако часто возникает необходи
мость вычислить значение функции для x, не совпадающих с узлами xi,
i = 1, ..., n. Таким образом, приходим к задаче интерполяции: необходимо
построить некоторую функцию 11 223 , которая удовлетворяет условиям ин
терполяции:
21 231 3 1 2 231 34 1 1 145554 4 (13.6)
и достаточно «близко» подходит к f(x) для x ¹ xi, i = 1, ..., n.
Такую функцию называют интерполяционной. В качестве функции 11 223
берут полином не очень высокого порядка, коэффициенты которого нахо
дятся из условий (13.6) (а также других требований, например непрерывно
сти первой производной).

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 205


Кусочно"линейная интерполяция. В этом случае функция 11 223 является
кусочнолинейной, т. е. графически это означает просто соединение точек 
(xi, yi) отрезками прямых. В пакете MathCAD кусочнолинейная интерполя
ция выполняется с помощью функции linterp. Обращение к функции имеет вид
linterp(vx, vy, x),
где vx, vy — векторы, содержащие значения xi, yi, i = 1, ..., n, соответствен
но; x — значение аргумента, при котором будет вычисляться одно значение
интерполяционной функции.
Замечание 13.1. Вектор vx должен содержать вещественные значения,
расположенные в порядке возрастания. Поэтому в дальнейшем будем пола
гать, что значения xi упорядочены по возрастанию, т. е.
x1 < x2 < ... < xn–1 < xn. (13.7)
Если это не выполняется, то необходимо использовать функцию csort,
как это сделано в примере 13.4. Рассмотрим пример построения линейной
интерполяции.
Пример 13.4. По дискретным данным, содержащимся в матрице data
(рис. 13.10), построить кусочнолинейную интерполяцию.

Рис. 13.10
Кусочнолинейная интерполяция

206 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Решение. На рисунке 13.10 представлен фрагмент документа MathCAD,
в котором решается эта задача. Так как исходные значения xi не упорядоче
ны (первый столбец матрицы data), то функцией csort выполняется упорядо
чивание по первому столбцу матрицы data. Результатом является новая
матрица data1, из столбцов которой формируются векторы x, y.
Кубический интерполяционный сплайн. Линейная интерполяция при
небольшом числе узловых точек (менее 10) оказывается довольно грубой.
Более точный результат дает сплайновая кубическая интерполяция, кото
рая строит функцию f1 2x34 которая на интервале [xi, xi+1] является кубиче
ским полиномом, удовлетворяет условиям (13.6) и во внутренних узлах xi,
i = 2, ..., n – 1 имеет непрерывные первые и вторые производные.
Для осуществления кубического сплайна MathCAD предлагает четыре
встроенные функции: cspline, pspline, lspline и interp. Первые три из них
служат для вычисления вторых производных сплайна в узлах и отличаются
только используемыми краевыми условиями, которые определяют вид функ
ции 11 223 в крайних точках x1, xn:
§ lspline(vx, vy) возвращает вектор vs вторых производных и генерирует
кривую сплайна, которая приближается к прямой линии в граничных
точках;
§ pspline(vx, vy) возвращает вектор vs вторых производных и генерирует
кривую сплайна, которая приближается к параболе в граничных точках;
§ cspline(vx, vy) возвращает вектор vs вторых производных и генерирует
кривую сплайна, которая может быть кубическим полиномом в гранич
ных точках.
Функция interp(vs, vx, vy, x) возвращает интерполируемое значение 11 223
для заданных векторов vs, vx, vy и заданного значения аргумента х.
Таким образом, сплайнинтерполяция проводится в два этапа. На первом
с помощью функции MathCAD cspline, pspline или lspline отыскивается век
тор vs вторых производных сплайна, а затем на втором этапе для каждой
искомой точки вычисляется значение 11 223 с помощью функции interp.
Пример 13.5. Используя исходные данные примера 13.4, построим куби
ческий сплайн с тремя типами краевых условий — кубическим, линейным и
параболическим.
Решение. На рисунке 13.11 приведен фрагмент документа, в котором
решается эта задача.
Первоначально, с помощью функций cspline, lspline, pspline вычислим
соответственно векторы vsc, vsl и vsp, которые содержат вторые производ
ные интерполяционной кривой в узлах сплайна. Затем с помощью функ
ции interp определим три функции пользователя (три сплайна) с соответ
ствующими краевыми условиями. Построим графики значений этих функ
ций в 200 узлах мелкой сетки. Заметим, что сплайновая кубическая
интерполяция, несмотря на малое число узлов, в которых задаются значе
ния функции (их всего 6), дает хорошие результаты: график функции ока
зывается плавным, и точки его перегиба вообще незаметны. Отличие меж
ду графиками на первом и последнем интервале обусловлены разными
краевыми условиями.

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 207


Рис. 13.11
Построение кубических сплайнов
Задание 13.1. Исходные данные даны следующими массивами:
x = {0,4; 1,6; 3,1; 4,2; 5,0}; t = {25; 11; 9,4; 16,2; 21,2; 26,1}.
Построить три кубических сплайна с разными краевыми условиями,
вычислить их значения на равномерной сетке с 150 узлами и построить
графики этих сплайнов.

13.3. ПОСТРОЕНИЕ ПАРНЫХ


ЭМПИРИЧЕСКИХ ЗАВИСИМОСТЕЙ
В научных и инженерных исследованиях часто возникает
задача математического описания некоторого исследуемого процесса или
объекта. Для определенности предположим, что связь независимой пере

208 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


менной x и зависимой переменной y выражается в общем случае нелинейной
функцией y = f(x). Функция f (x) является неизвестной, но значения пере
менных x, y могут быть измерены, и результаты таких измерений представ
лены таблицей {xi, yi}, i = 1, ..., n, где yi = f (xi) + ei, ei — погрешности измере
ний, имеющие случайную природу.
Задача построений эмпирической зависимости состоит в нахождении
функции S(x), как можно точнее аппроксимирующей неизвестную f(x).
Решение этой задачи включает два этапа.
Этап 1. Выбор класса функций, из которого выбирается S(x). Например,
S(x) выбирается из класса линейных функций вида S(x) = а0 + а1х, где а0,
а1 — параметры. Таким образом, на этом этапе эмпирическая зависимость
выбирается с «точностью» до ее параметров. Выбор класса функций осуще
ствляется на основе анализа диаграммы рассеяния (в декартовой системе
координат наносятся точки {xi, yi}, i = 1, ..., n) или на основе достоверной
априорной информации. Например, из курса физики известно, что сопро
тивление металлического проводника линейно зависит от его температуры.
Этап 2. Вычисление неизвестных параметров функции S(x) с использо
ванием таблицы измерений. Параметры вычисляются из условия минимума
некоторого функционала F(a). Наиболее часто в качестве такого функциона
ла используется функционал метода наименьших квадратов, имеющий вид:
n
F (a) 1 3 (yi 2 S(a, xi ))2 , (13.8)
i 11
где запись S(а, x) указывает на наличие у функции S(x) параметров {aj},
j = 1, 2, ..., M. Рассмотрим выполнение второго этапа на примере линейной
парной зависимости.
Вычисление коэффициентов линейной парной эмпирической зависимо"
сти. Предположим, что в качестве эмпирической зависимости принята ли
нейная функция:
S(a, x) = a0 + a1x. (13.9)
Для вычисления в пакете MathCAD коэффициентов a0, a1 зависимости
(13.9) на основе метода наименьших квадратов используются функции, при
веденные в таблице 13.1.
Пример 13.6. По заданным значениям {xi}, {yi}, i = 1, ..., 9 (рисунок 13.12,
векторы x, y) вычислить коэффициенты a0, a1, используя функции MathCAD,
приведенные в таблице 13.1.
Решение. Фрагмент документа MathCAD, содержащий обращения к функ
циям, показан на рисунке 13.12. Построенная эмпирическая зависимость
имеет вид
S(a, x) = –2,641 + 1,005x.
1 2 3 4 5 6 2 7 89
87
12345678 9
3
36 8

12343 56789
9 388  313 8 3  99883312343323313
12343 56789
9 388  323 8 3  99883312343323313
12343 56789
 9 3388  322313 8 3  99883312343323313
1
РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 209
Рис. 13.12
Вычисление коэффициентов a0, a1

Вычисление коэффициентов нелинейной парной эмпирической зависи"


мости. Нелинейность эмпирической зависимости может быть обусловлена
двумя причинами:
§ нелинейность по объясняющей переменной;
§ нелинейность по коэффициентам регрессии.
Нелинейность по объясняющей переменной. Примером такой нелиней
ности может служить эмпирическая зависимость вида:
S(a, x) 1 a0 2 a1 x .
В этом случае, вводя новую переменную Z = X1/2, приходим к линейной
зависимости:
S(a, z) = a0 + a1z,
коэффициенты a0, a1 которой вычисляются на основе метода МНК, исполь
зуя функции таблицы 13.1.
Нелинейность по коэффициентам. К такому классу нелинейных зави
симостей относятся уравнения, в которых зависимая переменная нелиней
ным образом зависит от коэффициентов. Примером таких нелинейных мо
делей могут служить функции: степенная S(a, x) 1 a0 x a1 ; показательная
S(a, x) 1 a0 a1x и т. д. Вычислить коэффициенты нелинейной эмпирической
зависимости в пакете MathCAD можно одним из следующих подходов:
§ используя стандартные (встроенные) функции пакета MathCAD, кото
рые непосредственно вычисляют коэффициенты уравнения регрессии
определенного вида;
§ используя функцию minimize, которая вычисляет коэффициенты рег
рессии из условия минимума заданного функционала.
Вычисление коэффициентов с использованием стандартных функций
MathCAD. Функции MathCAD, вычисляющие коэффициенты регрессии,
можно разделить на две категории:
§ специализированные;
§ универсальные.
Все эти функции находят коэффициенты уравнения регрессии из усло
вия минимума функционала метода наименьших квадратов, т. е. ищут точ
ку минимума функционала метода наименьших квадратов:
n
F (a) 1 3 (yi 2 S(a, xi ))2 .
i 11

210 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


1 2 3 4 5 6 2 7 89
7
12345678 9
3
36 82345668
56789
388  63123223339 8
38989 83
12323147 S ( a, x ) 1 a1 e a2 x 2 a3 . 35  3131 9 8343 
3 739  23
3 3 37
 37 8 3
312322333
56789
3  388  34231232313
88
3898
9 8383123 43!343"31 3"31 13
3
#$%3313 8 3333&4356789
  1232347
6 388  63 '# 9 33 
 8#' 3   2378 393
3 6552333 
3  3
a1
56789
388  63123223338989 83 S ( a, x ) 1 .3
!12323147 1 2 a e 4 a3 x
2
5  3131 9 8343 
39  6 37 8 3
312322333
!"12347 56789
3 63123238989 83123 43!31353()1 43"323
56789
388  63123223338989 83123 43!31353()1 3"3243"333
!#12323147 5  3131 9 8343 39  6 37 8 3
312322333
56789
388  639  838989 83 S ( a, x ) 1 a x a2 2 a3 . 35 
$12323143 3 31 9 8343 39  6 37 8 3
3 23 123 3
1 1 2 3

1
Так как точка минимума ищется численными методами, то для некото
рых функций MathCAD необходимо задать стартовую точку (вектор a0). Для
уменьшения числа итераций и вычисления правильной точки минимума
(при отсутствии глобального минимума) стартовую точку желательно зада
вать максимально близко к искомой точке минимума функционала.
Специализированные функции вычисляют коэффициенты уравнения
регрессии определенного вида. Список таких функций приведен в табли
це 13.2. В этой таблице X, Y — векторы, содержащие исходные данные xi, yi,
i = 1, 2, ..., n соответственно.
Замечание 13.2. Для некоторых функций нумерация коэффициентов
зависимости начинается с 1 и отличается от введенной ранее. Однако это
различие не вызовет путаницы при работе с функциями MathCAD.
Пример 13.7. По данным, приведенным на рисунке 13.13 (векторы x, y,
число наблюдений n = 8), построить уравнение регрессии вида
S(b, x) 1 b1eb2x 2 b3 .
Решение. Для вычисления коэффициентов используем функцию expfit
(см. табл. 13.2). Фрагмент документа MathCAD с обращением к этой функции
показан на рисунке 13.13. Здесь же показаны исходные данные {xi, yi} и кри
вая, соответствующая зависимости S(b, x) с вычисленными коэффициентами:
b1 = 3,762; b2 = 0,453; b3 = 3,006.
Заметим, что в документе MathCAD вычисленные коэффициенты явля
ются проекциями вектора b и поэтому их индексы в функции yc(x) вводятся
как индексные выражения, т. е. после левой прямоугольной скобки.
В нижней части документа стоит оператор, вычисляющий коэффициент
детерминации R2 (переменная R2) по формуле
Q
R2 1 1 2 e ,
n n Q
где Q 1 3 ( yi 2 y )2; Q 1
e 3 ( S ( a, xi ) 2 yi ) 2;
y — среднее значение yi.
i 11 i 11

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 211


Рис. 13.13
Построение нелинейной парной регрессии (к примеру 13.7)

Величина R2 показывает, какая часть (доля) вариации зависимой пере2


менной обусловлена вариацией объясняющей переменной, и изменяется в
диапазоне
0 £ R2 £ 1. (13.10)
Чем ближе R2 к 1, тем лучше построенная зависимость аппроксимирует
эмпирические данные. Так как в этом примере величина R2 = 0,955 близка
к 1, то можно сделать вывод об адекватности построенной зависимости урав
нения исходным данным.
Внимание! Стрелки, стоящие над операторами суммирования, задают
векторизованные операции (выполняемые для каждого элемента) и вводят
ся нажатием [Ctrl + –].

212 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 13.14
Построение нелинейной зависимости (к примеру 13.8)

Пример 13.8. По исходным данным, приведенным на рисунке 13.14, по


строить полиномиальную эмпирическую зависимость вида S(a, x) = a0 + a1x +
+ ... + akxk при k = 2, k = 3.
Решение. Построение регрессий при заданных порядках полинома пока
зано в документе MathCAD, приведенном на рисунке 13.14. Для вычисления
коэффициентов зависимости будем использовать функцию regress. Коэффи
циенты полинома второго порядка (в программе обозначен y2(X)):

S2 (a, x) 1 a0 2 a1x 2 a2 x2 (13.11)

являются проекциями вектора coef2 (начиная с 4й проекции), а коэффици


енты полинома (в программе обозначен y3(X))

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 213


S3 (x) 1 a0 2 a1x 2 a2 x2 2 a3 x3 (13.12)

находятся в векторе coef3 (начиная с 4й проекции). В нижней части доку


мента вычисляется коэффициент детерминации:
§ для k = 2 R2 = 0,904;
§ для k = 3 R2 = 0,955.
Видно, что регрессия S3(a, x) проходит ближе к заданным yi, i = 1, 2, ..., n,
по сравнению с S2(a, x). Это также видно из сопоставления графиков регрес
сий на рисунке.
Универсальные функции позволяют строить уравнение регрессии в виде:
S(a, x) 1 a121 (x) 3 a2 22 (x) 3 ... 3 am 2m (x), (13.13)
где функции jj(x) можно рассматривать как базисные функции, aj интерпре
тировать как коэффициенты разложения функции S(a, x) по заданным ба
зисным функциям.
В таблице 13.3 приведены имена двух функций. Первая функция —
linfit — вычисляет коэффициенты bj для уравнения регрессии S(a, x) вида
(13.13). Вторая функция — genfit — вычисляет коэффициенты aj для эмпи
рической зависимости произвольного вида. Например,
S(a, x) 2 e a0 1 a1x 1 a2x .
2
(13.14)
1 2 3 4 5 6 2 7 89
97

56789
388  631232232313
8 38883
123433111143321214333111143896 38831114232312143
 12323143

 9 3 ! 8 83  !"88311423!8! 3#3!$ "
8 33883  3
56789
3 ! !631232232313
8 %3! 8 3! %! 99883
12343&3!$ 8 3!8! 9 3312343'3  !"8 3! !"
9 83133(42399 
 38393883123438379 6)3 !8#"
  123232123343 2S ( a , x )
6)3 , 333(232323213'3  !3! !9 832399 
6383
2a j
9 ! 6)37 83 ! !332333(23233193 !8 !3(*(+43
1
Пример 13.9. По исходным данным примера 13.8 определить коэффици
енты уравнений (13.11), (13.12).
Решение. В этом примере для вычисления коэффициентов вместо функ
ции regress будем использовать функцию linfit. При этом векторфункция
Ф(х) будет иметь следующий вид:
1
1
x
если k = 2, то Ф(x) 1 x ; если k = 3, то Ф(x) 1 .
2 x2
x
x3
Обращение к функции linfit и вычисленные коэффициенты приведены
на рисунке 13.15. Сравнивая эти коэффициенты с соответствующими проек
циями векторов coef2, coef3 (рис. 13.14), видим совпадение этих величин.

214 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 13.15
Построение нелинейной зависимости (к примеру 13.9)

Рис. 13.16
Построение нелинейной зависимости (к примеру 13.10)

Обратите внимание на задание функций y2(X), y3(X) с использованием ска


лярного произведения векторфункции и вычисленных векторов коэффици
ентов.
Пример 13.10. По исходным данным примера 13.9 (векторы x, y) постро
ить эмпирическую зависимость вида:
2
S(a, x) 1 e a0 2 e a1x 2 e a2x . (13.15)

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 215


Решение. Для вычисления коэффициентов будем использовать функцию
genfit (см. табл. 13.3). Перед обращением к этой функции необходимо задать
векторфункцию Ф1(x, a) (рис. 13.16), первой проекцией которой является
сама зависимость (13.15), а остальные три проекции — частные производ
1S(a, x)
ные , j = 1, 2, 3. Вычисленные коэффициенты являются проекция
1aj
ми вектора a и равны:
a1 = 2,822; a2 = –1,197; a3 = 0,179.
Тогда получаем следующую эмпирическую зависимость:
S(a, x) 3 e2,82211,197 x 2 0,179x .
2

Замечание 13.3. Разница между функциями linfit и genfit заключается в


том, что параметры а1, ..., аm функции linfit находятся из решения линей
ной системы уравнений, а в функции genfit из нелинейной системы, и поэто
му задается точка старта (вектор а0) итерационной процедуры построения
решения этой нелинейной системы.

13.4. МНОЖЕСТВЕННАЯ
ЭМПИРИЧЕСКАЯ ЗАВИСИМОСТЬ
В такой эмпирической зависимости переменная Y зависит от
нескольких независимых переменных X1, X2, ..., Xk. Можно выделить ли
нейную и нелинейную зависимости.
Построение линейной множественной зависимости. Такая зависимость
имеет вид:
S(a, x) 1 a0 2 a1x1 2 ... 2 ak xk , (13.16)
где а0, а1, ..., ak — неизвестные коэффициенты.
Вычисление коэффициентов а0, а1, ..., ak можно осуществить с помощью
функции MathCAD regress.
Функция regress. Обращение к функции имеет вид:
regress(X, Y, N),
где X — матрица размером n´k (k — количество независимых переменных),
содержащая значения xi,j, i = 1, 2, ..., n; j = 1, 2, ..., k; Y — вектор размерно
сти n, содержащий значения yi, i = 1, 2, ..., n; n — количество измерений;
N — порядок полинома (для множественной линейной зависимости N = 1).
Результатами работы этой функции является вектор следующей струк
туры. Первые три проекции всегда содержат «служебную информацию».
Например, третья проекция равна степени полинома, а первая проекция —
номеру функции. Остальные проекции содержат коэффициенты, но в опре
деленном порядке. Так, для k = 2 и линейной регрессии имеется соответст
вие: четвертая проекция — a1; пятая — a2; шестая — a0 (см. пример 13.11).
Следует отметить, что вектор, являющийся результатом работы функции
regress, используется функцией interp для вычисления значений уравнения
множественной регрессии.

216 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Обращение к функции interp имеет вид:
interp(coef, X, Y, z),
где coef — вектор, результат работы функции regress; X, Y — те же, что у
функции regress; z — вектор, состоящий из k проекций, определяющих
значения x1, x2, ..., xk, при которых вычисляется значение эмпирической
зависимости, и это значение является результатом работы функции interp
(см. пример 13.11).
Заметим, что, используя функцию regress, можно построить линейную
регрессию для любого числа независимых переменных (величина k).
Пример 13.11. По данным, приведенным на рисунке 13.17, построить
множественную линейную регрессию, используя функцию regress.
Решение. Фрагмент документа MathCAD, в котором осуществляется
построение регрессии, приведен на рисунке 13.17.
Следует обратить внимание на:
§ вычисление значений y1 i 1 S2a3 xi1 3 xi2 43 i = 1, ..., n (в документе MathCAD
это формирование массива yy);

Рис. 13.17
Построение
линейной
множественной
зависимости
(к примеру 13.11)

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 217


§ структуру вектора coef — результат работы функции regress. Коэффици
енты регрессии а0, а1, а2 определяются следующими проекциями векто
ра coef:
a0 = coef(6); a1 = coef(4); a2 = coef(5). (13.17)
Построение нелинейной множественной зависимости. В линейной эмпи
рической зависимости переменные имели первую степень. Однако далеко не
всегда связь между факторами в физических и экономических процессах
можно выразить линейными функциями. Так, нелинейными оказываются
производственные функции (зависимость между объемом произведенной
продукции и основными факторами производства), функции спроса (зависи
мость между спросом на товары или услуги и их ценами или доходом) и
другие функции. Так же как в случае парной нелинейной регрессии, можно
выделить два вида нелинейности:
§ по переменным;
§ по параметрам.
В общем случае коэффициенты а0, а1, ..., ak вычисляют из условия мини
мума функционал метода наименьших квадратов:
1
4 250 3 51 3 4443 52 5 1 3 263 2 61 3 52 3 (13.18)
3 11

где y2 1 S3a1 xi11 1 xi12 14441 xi1k 51 i 1 114441 n 6 значения эмпирической зависимости
при заданных значениях независимых переменных.
Для минимизации этого функционала используют функцию MathCAD
minimize. При этом возможно задание ограничений на значения искомых
коэффициентов а0, а1, ..., ak (т. е. решается задача условной минимизации
функционала). Для иллюстрации этой возможности рассмотрим следующий
пример.
Пример 13.12. Производственная функция Кобба — Дугласа (рис. 13.18)
имеет вид:
Q( K, L) 1 a0 2 K a1 2 La2 , (13.19)
где Q — объем производства; K — затраты капитала; L — затраты труда.
Коэффициенты a1, a2 должны удовлетворять следующему условию:
a1 + a2 = 1. (13.20)
Необходимо по данным таблицы 13.4 вычислить коэффициенты a0, a1, a2
на основе метода наименьших квадратов.
Решение. Нахождение коэффициентов a0, a1, a2 нелинейной модели
(13.19) будем осуществлять из решения следующей задачи условной мини
мизации:
2n 3
min 6
(Qi 4 a0 5 Kia1 5 Lai 2 )2 7
8 i 11 9 (13.21)
при ограничении (13.20). Решение этой задачи приведено на рисунке 13.18.
Здесь не показано формирование матрицы x из значений Li, Ki, а только выве
дены значения элементов. Аналогичная ситуация с вектором y — значения Qi.
В Блоке решений (подробнее см. параграф 11.2) задается ограничение (13.20)
и начальные значения для вычисляемых коэффициентов, а также осуществ

218 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


Рис. 13.18
Вычисление коэффициентов нелинейной модели Кобба — Дугласа

1 2 3 4 5 6 2 7 89
7
7 1234 56774 68634 86234 97
24
98
4
7 5164 6824 8264 3584 579 4 52184
7 63
4 55134 71
4 22924
55
4 5 4
9
4
1
ляется вызов функции minimize. Результатом работы этой функции являются
следующие коэффициенты (с округлением): a0 = 3,199; a1 = 0,332; a2 = 0,668,
которые удовлетворяют (13.20). Уравнение регрессии принимает вид:
Q( K, L) 1 3,199 2 K 0,332 2 L0,668 . (13.22)

& ВОПРОСЫ И ЗАДАНИЯ ДЛЯ САМОПРОВЕРКИ


ПО ТЕМЕ 13
1. В чем состоит задача сглаживания зашумленных данных?
2. Какие функции MathCAD PRIME можно использовать для сглаживания за
шумленных данных?
3. В чем заключается задача интерполяции?
4. Что такое кусочнолинейная интерполяция?
5. Что такое кубический интерполяционный сплайн?
6. Чем отличаются друг от друга функции cspline, pspline, lspline, которые исполь
зуются для построения кубического интерполяционного сплайна?
7. По данным примера 13.12 построить вычислить коэффициенты модели Коб
ба — Дугласа в случае отсутствия ограничения (13.20). Объясните причину
отличия вычисленных коэффициентов от коэффициентов, найденных в приме
ре 13.12.

РАЗДЕЛ 3. РЕШЕНИЕ НАУЧНОИНЖЕНЕРНЫХ ЗАДАЧ В ПАКЕТЕ MathCAD PRIME 219


ЗАКЛЮЧЕНИЕ

В данном учебном пособии авторы стремились изложить ос


новы вычислений и программирования в пакете MathCAD PRIME с исполь
зованием функциональных возможностей последних версий этого пакета.
К сожалению, ограниченный объем учебного пособия не позволил под
робно изучить возможности пакета для решения часто встречающихся за
дач. Это, прежде всего, относится к решению задач математического про
граммирования, вычислительной математики, обработке эксперименталь
ных данных, включая задачи математической статистики и регрессионного
анализа. Некоторым «оправданием» этого может служить то обстоятельст
во, что функции MathCAD PRIME для решения этих задач в большинстве
случаев совпадают с соответствующими функциями пакета предыдущих
версий MathCAD 14, MathCAD 15. Поэтому заинтересованные читатели и
пользователи могут обратиться к соответствующим разделам в литературе
по MathCAD 14, MathCAD 15, в том числе приводимой ниже:
§ решение задач регрессионного анализа экспериментальных данных и
моделирования в пакете MathCAD [1];
§ решение задач математического анализа в пакете MathCAD [2];
§ решение задач вычислительной математики в пакете MathCAD [3], [4];
§ решение оптимизационных задач в пакете MathCAD [3], [4], [5];
§ решение задач теории вероятностей и математической статистики в па
кете MathCAD [5], [6];
§ решение других задач в пакете MathCAD [7], [8].
Авторы желают читателям (особенно студентам, магистрантам и аспи
рантам), чтобы пакет MathCAD стал для них дружелюбным и незаменимым
помощником в решении широкого круга учебных заданий и научноинже
нерных задач.

220 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


БИБЛИОГРАФИЧЕСКИЙ
СПИСОК

1. Воскобойников, Ю. Е. Регрессионный анализ данных в пакете MathCAD. —


СПб. : Лань, 2011. — 286 с.
2. Макаров, Е. Г. Инженерные расчеты в MathCAD 15 : учеб. курс. — СПб. :
Питер, 2011. — 400 с.
3. Поршнев, С. В. Численные методы на базе MathCAD. — СПб. : БХВПетер
бург, 2005. — 464 с.
4. Охорзин, В. А. Прикладная математика в системе MathCAD : учеб. посо
бие. — СПб. : Лань, 2009. — 352 с.
5. Ивановский, Р. И. Теория вероятностей и математическая статистика с при
мерами и задачами в среде MathCAD. — СПб. : БХВПетербург, 2008. —
528 с.
6. Черняк, А. А. Математика для экономистов на базе MathCAD / А. А. Черняк,
В. А. Новиков, О. И. Мельников [и др.]. — СПб. : БХВПетербург, 2003. —
496 с.
7. Воскобойников, Ю. Е. Вычисления и программирование в пакете MathCAD
PRIME 2.0 : учеб. пособие / Ю. Е. Воскобойников, А. Ф. Задорожный // НГА
СУ (Сибстрин). — Новосибирск : НГАСУ (Сибстрин), 2013. — 196 с.
8. Основы вычислений и программирования работы в пакете MathCAD : учеб.
пособие / Ю. Е. Воскобойников [и др.] ; под. ред. Ю. Е. Воскобойникова ;
НГАСУ (Сибстрин). — Новосибирск : НГАСУ (Сибстрин), 2012. — 212 с.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК 221


СОДЕРЖАНИЕ

Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

РАЗДЕЛ ПЕРВЫЙ
ВЫЧИСЛЕНИЯ В ПАКЕТЕ MATHCAD
Тема 1. Математические пакеты. Общая характеристика пакета MathCAD 6
1.1. Современные математические пакеты . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2. Возможности и структура пакета MathCAD . . . . . . . . . . . . . . . . . . . . 7
1.3. Программное окно MathCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4. Ленточный интерфейс пакета Mathcad . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5. Работа с документами MathCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Тема 2. Вычисления в пакете MathCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.1. Константы, переменные, операторы присваивания и вывода . . . . . . 18
2.2. Арифметические операции MathCAD . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3. Встроенные функции и функции пользователя . . . . . . . . . . . . . . . . . . 25
2.4. Операторы математического анализа . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Тема 3. Массивы в пакете MathCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.1. Определение и обозначение массива в пакете MathCAD . . . . . . . . . . . 31
3.2. Создание массивов в пакете MathCAD . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.3. Выделение столбца и строки матрицы . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.4. Таблицы и работа с ними в пакете MathCAD . . . . . . . . . . . . . . . . . . . . 37
3.5. Основные функции обработки массивов . . . . . . . . . . . . . . . . . . . . . . . 38
3.6. Вычисления с массивами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.7. Функции сортировки элементов векторов и матриц . . . . . . . . . . . . . . 43
Тема 4. Графика в пакете MathCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.1. Основные инструменты для построения графиков . . . . . . . . . . . . . . . 46
4.2. Построение графиков функции одной переменной
в декартовой системе координат . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.3. Построение графиков функции одной переменной
в полярной системе координат . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.4. Построение графиков функций двух переменных . . . . . . . . . . . . . . . . 55
4.5. Построение диаграмм . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Тема 5. Символьные вычисления в пакете MathCAD . . . . . . . . . . . . . . . . . . . 63
5.1. Команды символьных вычислений . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.2. Выполнение символьных вычислений . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.3. Символьное решение уравнений и систем уравнений . . . . . . . . . . . . . 70
Тема 6. Чтение и запись данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.1. Средства доступа к файлам . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.2. Функции доступа к структурированным ASCIIфайлам . . . . . . . . . . . 80
6.3. Функции доступа к графическим файлам . . . . . . . . . . . . . . . . . . . . . . 82

222 ОСНОВЫ ВЫЧИСЛЕНИЙ И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ MathCAD PRIME


РАЗДЕЛ ВТОРОЙ
ПРОГРАММИРОВАНИЕ В ПАКЕТЕ MATHCAD PRIME
Тема 7. Безмодульное программирование в пакете MathCAD PRIME . . . . . . 87
7.1. Программирование линейных алгоритмов . . . . . . . . . . . . . . . . . . . . . 87
7.2. Программирование разветвляющихся алгоритмов . . . . . . . . . . . . . . . 88
7.3. Программирование циклических алгоритмов . . . . . . . . . . . . . . . . . . . 95
Тема 8. Модульное программирование в пакете MathCAD PRIME . . . . . . . 102
8.1. Сущность и преимущества модульного программирования . . . . . . . 102
8.2. Описание подпрограммыфункции
и локальный оператор присваивания . . . . . . . . . . . . . . . . . . . . . . . . . 103
8.3. Обращение к подпрограммефункции Mathcad . . . . . . . . . . . . . . . . . 105
8.4. Программирование линейных алгоритмов
в подпрограммефункции MathCAD . . . . . . . . . . . . . . . . . . . . . . . . . . 106
8.5. Программирование разветвляющихся алгоритмов
в подпрограммефункции MathCAD . . . . . . . . . . . . . . . . . . . . . . . . . . 107
8.6. Программирование циклических алгоритмов
в подпрограммефункции MathCAD . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Тема 9. Программирование типовых задач
в подпрограммах"функциях MathCAD PRIME . . . . . . . . . . . . . . . . . 125
9.1. Программирование разветвляющихся алгоритмов . . . . . . . . . . . . . . 125
9.2. Программирование циклов типа арифметической прогрессии . . . . 127
9.3. Программирование итерационных циклов . . . . . . . . . . . . . . . . . . . . 135

РАЗДЕЛ ТРЕТИЙ
РЕШЕНИЕ НАУЧНО"ИНЖЕНЕРНЫХ ЗАДАЧ
В ПАКЕТЕ MATHCAD PRIME
Тема 10. Решение нелинейных уравнений
и дифференциальных уравнений в пакете MathCAD PRIME . . . . . 143
10.1. Решение нелинейных уравнений . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
10.2. Решение систем уравнений в пакете MathCAD . . . . . . . . . . . . . . . . . 148
10.3. Решение обыкновенных дифференциальных уравнений
в пакете MathCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Тема 11. Решение оптимизационных задач в пакете MathCAD PRIME . . . . 167
11.1. Решение оптимизационных задач без ограничений . . . . . . . . . . . . . 167
11.2. Решение оптимизационных задач с ограничениями . . . . . . . . . . . . . 170
11.3. Решение оптимизационных задач из условий экстремума целевой
функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Тема 12. Решение задач теории вероятностей
и математической статистики в пакете MathCAD PRIME . . . . . . . . 177
12.1. Формула испытаний Бернулли . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
12.2. Случайные величины и их числовые характеристики . . . . . . . . . . . 180
12.3. Моделирование случайных величин . . . . . . . . . . . . . . . . . . . . . . . . . . 186
12.4. Построение гистограммы относительных частот
по выборочной совокупности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
12.5. Вычисление выборочных оценок для числовых
характеристик случайных величин . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Тема 13. Обработка экспериментальных данных . . . . . . . . . . . . . . . . . . . . . . 197
13.1. Сглаживание (фильтрация) зашумленных данных . . . . . . . . . . . . . . 197
13.2. Интерполяция дискретных данных . . . . . . . . . . . . . . . . . . . . . . . . . . 205
13.3. Построение парных эмпирических зависимостей . . . . . . . . . . . . . . . 208
13.4. Множественная эмпирическая зависимость . . . . . . . . . . . . . . . . . . . 216
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Библиографический список . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

СОДЕРЖАНИЕ 223
Юрий Евгеньевич ВОСКОБОЙНИКОВ,
Анатолий Филиппович ЗАДОРОЖНЫЙ

ОСНОВЫ ВЫЧИСЛЕНИЙ
И ПРОГРАММИРОВАНИЯ В ПАКЕТЕ
MathCAD PRIME
Учебное пособие

Зав. редакцией
физикоматематической литературы Н. Р. Крамор
Ответственный редактор С. В. Макаров
Технический редактор Е. Е. Егорова
Корректор М. В. Бекрешева
Подготовка иллюстраций А. П. Маркова
Выпускающие Н. А. Крылова, Е. П. Королькова

ЛР № 065466 от 21.10.97
Гигиенический сертификат 78.01.07.953.П.007216.04.10
от 21.04.2010 г., выдан ЦГСЭН в СПб
Издательство «ЛАНЬ»
lan@lanbook.ru; www.lanbook.com
196105, СанктПетербург, пр. Юрия Гагарина, д. 1, лит. А.
Тел./факс: (812) 3362509, 4129272.
Бесплатный звонок по России: 88007004071
ГДЕ КУПИТЬ
ДЛЯ ОРГАНИЗАЦИЙ:
Для того, чтобы заказать необходимые Вам книги, достаточно обратиться
в любую из торговых компаний Издательского Дома «ЛАНЬ»:
по России и зарубежью. «ЛАНЬТРЕЙД».
192029, СанктПетербург, ул. Крупской, 13
тел.: (812) 4128578, 4121445, 4128582; тел./факс: (812) 4125493
email: trade@lanbook.ru; ICQ: 446869967; www.lanpbl.spb.ru/price.htm
в Москве и в Московской области. «ЛАНЬПРЕСС».
109263, Москва, 7я ул. Текстильщиков, д. 6/19
тел.: (499) 1786585; email: lanpress@lanbook.ru
в Краснодаре и в Краснодарском крае. «ЛАНЬЮГ».
350901, Краснодар, ул. Жлобы, д. 1/1
тел.: (861) 2741035; email: lankrd98@mail.ru
ДЛЯ РОЗНИЧНЫХ ПОКУПАТЕЛЕЙ:
интернет2магазин
Издательство «Лань»: http://www.lanbook.com
магазин электронных книг
Global F5: http://globalf5.com/

Подписано в печать 16.02.16.


Бумага офсетная. Гарнитура Школьная. Формат 70´100 1/16.
Печать офсетная. Усл. п. л. 18,20. Тираж 200 экз.

Заказ № 02416.

Отпечатано в полном соответствии с качеством


предоставленного оригинал-макета.
в ПАО «Т8 Издательские Технологии».
109316, г. Москва, Волгоградский пр., д. 42, к. 5.

Вам также может понравиться