Министерство образования Российской Федерации Дальневосточный государственный технический университет ( ДВПИ им. В.В. Ку...
49 downloads
1170 Views
819KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Министерство образования Российской Федерации Дальневосточный государственный технический университет ( ДВПИ им. В.В. Куйбышева )
MathCad 2000 Методические рекомендации к самостоятельной работе для слушателей института повышения квалификации и студентов
Владивосток 2003
Одобрено научно-методическим советом ДВГТУ УДК 681.3 Шейкер Т.Д. MathCad 2000. – Владивосток: Изд-во ДВГТУ, 2003 г. – 80 с. В методических рекомендациях приводятся сведения по основным возможностям системы MathCad и предлагаются задания для самостоятельного выполнения. Основное назначение работы – облегчить слушателям института повышения квалификации и студентам освоение программы.
Отпечатано с оригинал-макета, подготовленного автором
© Т.Д. Шейкер, 2003 © Изд-во ДВГТУ, 2003 2
ВВЕДЕНИЕ В настоящее время существует много систем, облегчающих выполнение математических расчетов. Для эффективного решения прикладных задач можно использовать специализированные математические системы и пакеты общего назначения. Разработанные математические системы позволяют не тратить время на рутинные вычисления, а сосредоточить усилия на сути проблемы. Кроме того, существенно облегчается документирование расчётов, составление и оформление отчётов и статей. Появляется прекрасная возможность качественного графического представления результатов. Системы поддержки математических вычислений постоянно совершенствуются, появляются новые версии с расширенными возможностями и улучшенным интерфейсом. Дружественный интерфейс существенно облегчает работу с системами, но не освобождает от необходимости их освоения. В работе приводятся сведения по основным возможностям системы MathCad и предлагаются задания для самостоятельного выполнения. Изложение учебного материала предполагает наличие аудиторных занятий для освоения пакета. Методические рекомендации не заменяют учебник, основное назначение работы – облегчить слушателям института повышения квалификации и студентам освоение программы. Предлагаемые задания подобраны так, чтобы можно было на конкретных примерах освоить разные приёмы работы в системе. Кроме того, по трём темам приводится большое количество вариантов однотипных задач, которые целесообразно использовать в качестве индивидуальных заданий. Так как студенты технических специальностей знакомятся с математическими пакетами в дисциплине «Информатика» на первом курсе, то освоить MathCad можно только в объёме, соответствующем уровню математической подготовки. В дальнейшем полученные знания и навыки используются для более глубокого освоения системы MathCad и применения её при изучении специальных дисциплин, при выполнении курсовых и дипломных работ. Автор надеется, что предлагаемые рекомендации помогут освоить самостоятельно те разделы системы, в которых возникла необходимость при решении специальных задач. 3
1. НАЗНАЧЕНИЕ И ВОЗМОЖНОСТИ СИСТЕМЫ MATHCAD MathCad – это интегрированная математическая система, предназначенная для решения научно-технических задач. MathCad позволяет находить решения численными и аналитическими методами, имеет удобный математико-ориентированный интерфейс, обладает прекрасными графическими возможностями. Система, разработанная фирмой MathSoft (США), занимает особое место среди других математических пакетов, таких как MatLab, Maple , Mathematica . Популярность системы MathCad объясняется достаточно широким классом решаемых задач и удобным интерфейсом, делающими её полезной и доступной большому числу пользователей. На сегодняшний день MathCad является единственной системой, в которой описание задач и их решения даются с помощью общепринятых математических обозначений. Отличительной чертой системы MathCad является возможность создания документов, объединяющих задание исходных данных, математическое описание их обработки и результаты вычислений. Документ MathCad может содержать текст, формулы, графики, таблицы, иллюстрации и выглядеть как статья, реферат или текст доклада. При этом записанные формулы реализуют заданный алгоритм вычислений: можно изменить данные и получить документ с обновлёнными по всей цепочке вычислений результатами. MathCad – это система, объединяющая текстовый, графический и формульный редакторы с достаточно хорошими вычислительными возможностями. MathCad является мощным инструментальным средством для подготовки статей, монографий, электронных учебников и справочников. Фирма MathSoft за период с 1986 по 2001 годы выпустила несколько версий системы. Современные версии MathCad работают под Windows и являются 32-разрядными. Реализованный в MathCad подход записи расчётных формул в привычной форме избавляет пользователя от изучения языка программирования. Тем не менее язык программирования существует, но применяет его сама система. По мере того, как пользователь создаёт в окне объекты (формулы, таблицы, тексты, 4
графики), система составляет программу, которая хранится в оперативной памяти до тех пор, пока не будет записана в файл. Файлы, содержащие программы MathCad, имеют расширение .mcd. В MathCad встроен интерпретатор, который обрабатывает документы. Блоки, из которых состоит документ, просматриваются слева направо и сверху вниз. Как только блок распознаётся, система автоматически запускает внутренние подпрограммы для выполнения необходимых действий. Для работы в системе пользователю надо ознакомиться с формальными правилами и приёмами подготовки заданий на вычисления, то есть освоить входной язык системы.
2. СОЗДАНИЕ И РЕДАКТИРОВАНИЕ ФОРМУЛ И ТЕКСТА 2.1.Курсор При перемещении по документу курсор принимает разные формы в зависимости от того, в какой области он находится, какой редактор работает и какие действия выполняются. Маленький красный крестик служит для указания места для новых блоков. Такой вид курсор имеет только на свободном месте экрана, то есть вне блоков. Для задания отдельных элементов в формулах используется курсор в виде уголка из синих линий. Внешний вид уголка позволяет судить, что является операндом для следующей операции. Чтобы изменить фрагмент формулы, к которому будет относиться задаваемое действие, можно воспользоваться клавишами со стрелками или пробелом. При создании многоуровневых формул, чтобы записывать символы в нужном месте, клавишу «пробел» приходится использовать постоянно. В текстовых блоках курсор приобретает вид вертикальной красной черты. На границе выделенных блоков курсор имеет форму руки. При такой форме курсора выполняется перемещение блоков мышью. 2.2. Шаблоны При подготовке задания на вычисления можно пользоваться наборными панелями и комбинациями клавиш. 5
Записанные формулы выглядят в привычной математической форме, документ на экране дисплея похож на текст математической книги или научной статьи. Однако в процессе ввода нажимаемая клавиша и изображение в окне иногда различаются. Это объясняется тем, что многих математических символов нет на клавиатуре. Начиная с версии 6.0 эта проблема снята, так как практически все отсутствующие на клавиатуре символы можно ввести через наборные панели. Тем не менее для удобства пользователя в методических указаниях приводятся комбинации клавиш, которые задают различные операции, шаблоны и значения. Для часто повторяемых действий, например для задания математических действий, предпочтительным является использование клавиатурных комбинаций, так как это значительно быстрее и удобнее. Так как при подготовке документов используется большое число шаблонов, то они объединены в группы, расположенные на наборных панелях (палитрах). Разрешено выводить одновременно на экран нужное число наборных панелей и располагать их в удобном для конкретной ситуации месте. Любую наборную панель можно вывести на экран через меню View|Toolbars. Однако во многих случаях целесообразно иметь постоянно открытой панель Math, через которую в нужный момент легко вывести любую другую палитру. Шаблон или элемент из палитры выбирается щелчком мыши и записывается в позицию курсора. Сложные шаблоны имеют поля ввода отдельных данных, обозначаемые маленькими чёрными прямоугольниками. В начальный момент активно одно из полей ввода, в него можно записать данные. Активное поле ввода отмечено уголком из синих линий. Для перехода на другое поле можно щёлкнуть по нему мышью или воспользоваться клавишами смещения курсора (клавишами со стрелками). Однако наиболее удобным является применение клавиши Tab, которая позволяет последовательно перемещаться по полям ввода не выходя за пределы блока. 2.3. Текстовые области Для создания текстовой области можно выполнить команду Insert|Text region (Вставка|Текстовая область) или напечатать символ “ (этот символ появляется при использовании комбинации 6
клавиш Shift+” в латинской раскладке клавиатуры). Текстовая область появляется в месте расположения курсора (красного крестика), который задаёт левый верхний угол текстовой области. В текстовом режиме курсор имеет вид вертикальной красной черты. Первоначально размер текстовой области определяется длиной введённой строки и может быть изменён растягиванием мышью. При вводе текста клавишу Enter, как принято в текстовых редакторах, нажимают для создания нового абзаца. При работе с текстами внутри блока пользуются обычными приёмами перемещения курсора и редактирования. Кроме того, выделив текстовую область, с ней можно работать как с блоком: перемещать по экрану, изменять размеры, копировать, вырезать, удалять. Стирание всех символов в текстовой области приводит к тому, что удаляется собственно область. При записи текста на русском языке надо не только переключить раскладку клавиатуры, но и выбрать шрифт с кириллицей, так как для записи формул по умолчанию используется шрифт без кириллицы. Когда курсор находится в текстовой области, в меню Format доступны команды Text и Paragraph, которые позволяют изменять параметры шрифта, формировать списки, задавать отступы и правила выравнивания абзацев. Шрифт и правила форматирования абзаца можно задавать для выделенного фрагмента текста. Кроме того, для всей текстовой области можно задать нужный стиль, выбрав его из списка доступных стилей или создав новый по своему усмотрению (команда Format|Style). Использование стилей облегчает создание качественно оформленного документа. Текстовые блоки могут содержать любые математические выражения. Причём можно вставлять готовые формулы через буфер обмена или формировать выражение в процессе набора текста. Для записи формул следует установить курсор в нужное место текста и дать команду Insert|Math region (Вставка|Математическая область): появится поле для ввода математического выражения и изменится внешний вид курсора. При заполнении полей ввода можно использовать палитры математических знаков. Другой способ внесения текста в документ MathCad – это подготовка его в текстовом редакторе (например, Word) и добавление через буфер. При этом имеет принципиальное значение, 7
в какую область добавляется текст. Если курсор находился в текстовой области, то с добавленным текстом можно будет работать как с обычным текстовым комментарием (изменять шрифт, форматировать). Если же в момент вставки курсор имел вид красного крестика, то будет добавлен объект со всеми вытекающими последствиями. В последних версиях системы MathCad предусмотрена возможность использования гиперссылок. Для создания гиперссылки необходимо создать текстовую область, выделить в ней фрагмент (текст или формулу) и дать команду Insert|Hyperlink (Вставка|Гиперсвязь). В открывшемся диалоговом окне следует указать адрес документа, задать способ его отображения и записать текст сообщения, выводимого в строке состояния. Если установлен флажок Отображать как документ, то файл будет выведен в отдельное окно, расположенное поверх рабочего документа. Если же флажок снят, то вызываемый гиперссылкой документ заменит текущий. В некоторых случаях целесообразно оформить гиперссылку в виде кнопки, содержащей адрес документа. Место будущей кнопки задаётся щелчком мыши на свободном поле (отмечается красным крестиком). Параметры гиперссылки задаются в диалоговом окне которое открывается командой Insert|Reference (Вставка|Ссылка). 2.4. Задание размерности Система MathCad позволяет выполнять действия с размерными величинами. Можно после числового значения записать условное обозначение размерности либо поставить знак умножения, а затем записать или выбрать нужную размерность из окна Insert Unit, которое открывается одноимённой командой или щелчком по кнопке с изображением мерной кружки на панели инструментов. Предпочтение следует отдать выбору размерности из предлагаемого перечня, так как это исключает ошибки ввода. При выполнении вычислений контролируется соблюдение размерностей и если возникает несоответствие, то выдаётся сообщение об ошибке.
8
3. ВХОДНОЙ ЯЗЫК СИСТЕМЫ 3.1. Общие сведения MathCad можно рассматривать как объектноориентированный язык программирования очень высокого уровня, предназначенный для математических расчётов. Во многих случаях решение задачи сводится к записи алгоритма на входном языке, напоминающем общепринятый язык описания математических и научно-технических расчётов. 3.2. Алфавит Алфавит языка составляют: большие и малые латинские буквы; большие и малые греческие буквы; цифры от 0 до 9, служебные слова и специальные символы. 3.3. Элементарные конструкции Из символов алфавита составляют элементарные конструкции – имена и числа. Имена могут иметь любую длину, должны начинаться с буквы. В именах можно использовать латинские, греческие буквы, цифры, символы подчёркивания, бесконечности ∞, процента %, ~, нижние индексы. В имени различаются регистры (большие или малые буквы), типы шрифтов, их размеры и стили (жирный, курсив). Внутри имени можно использовать символы, принадлежащие только к одному типу шрифта. Разрешается в одном имени применять как латинские, так и греческие буквы. В имени не должно быть пробелов. Имена должны быть уникальными. Десятичные числа могут быть целыми и дробными. В качестве разделителя целой и дробной части используется точка. Десятичные числа можно задавать в экспоненциальном представлении, в виде мантиссы и порядка. В этом случае сначала указывается мантисса, которая затем умножается на 10 в нужной степени. Предусмотрена работа с мнимыми и комплексными числами. При использовании мнимых чисел надо ввести символ i или j после последней цифры (без пробела). Например 5i, 1j. Избыточная единица в числе 1j исчезнет после завершения ввода. Комплексные 9
числа задаются в алгебраической форме, в виде действительной и мнимой части. Например, 3 – 2.5i. 3.4. Выражения Выражения состоят из операндов и знаков операций. Определены операции отношения и математические. Ниже приводятся наиболее часто используемые операции и указываются клавиши, которые применяются для их ввода. Арифметические операции: сложение + комплексное сопряжение " деление / возведение в степень ^ факториал ! абсолютная величина | умножение * отрицание корень n-ной степени Ctrl+\ произведение Ctrl+Shift+3 произведение по дискретному аргументу # суммирование по дискретному аргументу $ квадратный корень \ вычитание суммирование Ctrl+Shift+4 Операции отношения: больше меньше больше либо равно меньше либо равно не равно равно
> < Ctrl+0 Ctrl+9 Ctrl+3 Ctrl+=
Операции математического анализа: дифференцирование ? интегрирование & производная n-ного порядка Ctrl+? Результатом операций отношения может быть 1, если условие выполнено, или 0, если условие не выполнено. Причём, 10
математически значения логических 1 и 0 совпадают со значениями числовых констант 1 и 0. Поэтому можно записать 2*(5>0), результатом будет число 2. 3.5. Операторы В MathCad определены операторы: := присваивания; вводится клавишей с двоеточием; ≡ глобального присваивания; = вывода значений. Оператор присваивания используется для задания значений переменным: слева от знака операции записывается имя переменной, а справа – число или выражение. Например, а:=6.75. Оператор локального присваивания применяют для задания значения переменной до того, как она будет использована. Глобальное присваивание ≡ разрешено использовать в любом месте документа. Во всех случаях переменная, которой задано значение оператором ≡ , получает это значение. Оператор глобального присваивания может быть в конце документа, а переменная, к которой он относится – в начале. В дальнейшем значение переменной можно изменить оператором локального присваивания. Оператор = используется для вывода на экран значений переменных и результатов вычисления выражений. 3.6. Константы и переменные Константы можно задавать в десятичной, двоичной, восьмеричной и шестнадцатеричной системах счисления. Двоичные, восьмеричные и шестнадцатеричные числа могут быть только целыми. Для записи восьмеричных чисел используются цифры 0 – 7. За последней цифрой числа записывается буква о. Признаком двоичного числа является приписанная в конце буква b или B. Для записи шестнадцатеричных чисел используются цифры 0 – 9 и буквы A – F. После последней цифры ставится буква h или H. Если шестнадцатеричное число начинается с буквы, то перед ней записывают цифру 0, чтобы отличить число от имени. В системе имеются предопределённые постоянные (системные переменные): 11
∞ 10307 – системная бесконечность (Ctrl+z); π 3.142 – число π (Ctrl+p); e 2.718 – основание натурального логарифма; % 0.01 – процент; TOL 0.001 – погрешность численных методов; ORIGIN 0 – нижняя граница индексации массивов; PRNCOLWIDTH 8 – число столбцов функции WRITEPRN; PRNPRECISION 4 – число десятичных знаков, используемых функцией WRITEPRN. Значение любой из системных переменных можно изменить прямо в рабочем документе с помощью оператора присваивания. Кроме того, для задания переменных TOL, ORIGIN, PRNCOLWIDTH и PRNPRECISION предусмотрена вкладка Built-In Variables диалогового окна, открываемого командой Math Options. Кроме обычных переменных в MathCad определены дискретные (ранжированные) переменные. Это такие переменные, которые принимают ряд фиксированных значений от начального до конечного с заданным шагом. В общем случае дискретная переменная задаётся оператором присваивания вида: Name := Nbegin, NextVal .. Nend Следующее значение NextVal вычисляется как сумма начального Nbegin и шага. NextVal может быть опущено: Name := Nbegin .. Nend В этом случае шаг принимается равным 1, если начальное значение меньше конечного и равным -1 , если Nbegin больше Nend. Например: x := 1, 1.2 .. 2 t := 2 .. -4 Переменная x будет иметь значения 1, 1.2, 1.4, 1.6, 1.8, 2. Для переменной t получим: 2, 1, 0, -1, -2, -3, -4 . Особенность ввода дискретных переменных заключается в том, что диапазон .. записывается клавишей с символом ; (точка с запятой). Фактически на клавиатуре надо набрать: x:1,1.2;2 t:2;-4 Дискретные переменные используются при организации многократных вычислений. 12
Особым видом констант являются единицы измерения размерных величин. 3.7. Функции Функция есть правило, согласно которому проводятся некоторые вычисления с её аргументами и вырабатывается числовое значение. 3.7.1. Встроенные функции Система MathCad содержит достаточно широкий набор встроенных функций. Функции задаются своим именем и значениями аргументов в круглых скобках. Имена функций можно ввести с клавиатуры либо поместить в рабочий документ с помощью диалогового окна, вызываемого командой Insert|Function. Второй путь исключает ошибки при записи функций, так как вставляется полная синтаксическая форма, в которой надо задать аргументы, заполнив поля ввода. Для быстрого вызова окна с перечнем функций предусмотрена кнопка f(x) на панели инструментов. 3.7.2. Функции, принимающие несколько значений Функция if(условие, выражение1, выражение2) похожа на условные операторы в языках программирования. Если условие выполняется, то вычисляется выражение1 и возвращается его значение, в противном случае возвращается значение выражения2. Например: x := 0, 0.1..20 y(x) := if(sin(x)≥0, 2⋅sin(x), 0) Функция until(выражение1, выражение2) похожа на оператор цикла в языках программирования. Функция until возвращает значение выражения2 до тех пор, пока выражение1 не станет отрицательным. Выражение1 может быть арифметическим или логическим и обязательно должно содержать дискретный аргумент. Например: b := 5 a := 1..6 c := 9 until(a
В примере показано два варианта вывода таблицы значений выражения с+а. Функция until сохранена в современных версиях системы для совместимости с предыдущими версиями. В новых разработках применять её не рекомендуется. Для организации циклов в состав системы включены программные операторы. Функция Хевисайда (единичного скачка) Φ(х) возвращает значение 0 при x< 0 и 1 в противном случае. Функция δ(m,n), именуемая символом Кронекера, возвращает 1 при m=n и 0 в противном случае. 3.7.3. Функции, определяемые пользователем Функции пользователя определяются с помощью оператора присваивания. В левой части записывается имя функции и список аргументов в круглых скобках. Аргументы отделяются друг от друга запятыми. В правой части записывается выражение. Все переменные, используемые в выражении, должны быть определены заранее или входить в список аргументов. Например: x := 0,0.1..1 f(x) := 2⋅sin(x)+0.7
4. РАБОТА С ДОКУМЕНТАМИ MathCad работает с документами (Sheets), объединяющими описание решаемой задачи с данными, комментариями и результатами вычислений. Документ состоит из отдельных блоков. Каждый блок занимает в окне редактирования некоторую область прямоугольной формы. В обычном состоянии границы областей невидимы. Чтобы сделать блок видимым, надо щёлкнуть по нему мышью. Блок будет выделен чёрной рамкой. Для выделения нескольких блоков достаточно установить курсор на свободном участке и протянуть его мышью по экрану. Блоки будут выделены чёрными пунктирными линиями. Для выделения всех блоков используется команда Edit|Select All (Выделить все). Блоки не должны перекрываться. Чтобы избавиться от пересечения блоков, достаточно выполнить команду Format|Separate Regions. Расположение блоков имеет принципиально важное значение, так как определяет последовательность выполняемых 14
действий. Задать нужное положение блоков можно перетаскивая их по экрану или выполняя обычные операции редактирования через буфер (Cut, Copy, Past). Кроме того, командами Across и Down меню Format|Align Region можно упорядочить блоки по горизонтали или вертикали. Для быстрого выполнения этих действий предусмотрены кнопки на панели инструментов. Следует помнить, что до выполнения операций с блоками, они должны быть выделены. Команда View|Regions (Показать области) выделяет области цветом. По чёрной точке, имеющейся у каждого блока в этом режиме, можно судить о положении блока на листе. Таким образом, в режиме Regions хорошо видна последовательность выполнения блоков. Доступная область окна редактирования превышает видимую на экране. Горизонтальными штриховыми линиями документ делится на страницы. При необходимости командой Insert|Page Break можно потребовать принудительное формирование в документе новой страницы. Длинной вертикальной линией окно делится на левую и правую части. Как правило, в правой невидимой части помещают вспомогательные вычисления и справочные сведения. Для перемещения по всему документу целесообразно использовать линии прокрутки. В документе разрешено формировать заблокированные и скрытые области. Заблокированная область недоступна для редактирования посторонними людьми. Скрытая область не видна на экране, но имеющиеся в ней блоки участвуют в вычислениях. Формирование областей выполняется по единому сценарию: командой Insert|Area перейти в режим создания области. На экране появятся две горизонтальные линии с направленными друг к другу стилизованными стрелочками; записать в области необходимые выражения или переместить линии области так, чтобы в неё попали нужные блоки; в меню Format|Area выбрать нужную команду: Lock – для блокировки, Collapse – для скрытия. При использовании команды Lock появляется окно для ввода пароля. Если задать пароль, то в дальнейшем область можно будет разблокировать. Чтобы разблокировать или вывести на экран скрытую область используются соответственно команды Unlock и Expand из меню Format|Area. Для удаления ограничительных линий, любую 15
из них надо выделить и нажать на клавишу Delete. Выделение линии выполняется щелчком на значке в её начале. В документе разрешено изменять цвет фона и блоков. Для этого используются команды BackGround и Highlight соответственно из меню Format|Color. Документ MathCad можно сохранить в формате htm и rtf. Файл rtf удобно использовать при подготовке текстов в редакторе Word. Кроме того, фрагменты рабочего листа MathCad можно передавать в редактор Word через буфер.
5. ВЫПОЛНЕНИЕ ВЫЧИСЛЕНИЙ В системе предусмотрены автоматический и ручной режимы вычислений. В автоматическом режиме вычисления выполняются сразу после внесения изменений. В строке сообщений присутствует слово AUTO ("авто"). В ручном режиме вычисления выполняются после нажатия клавиши F9, либо после выбора пунктов Сalculate (Пересчитать) и Сalculate Worksheet (Пересчитать всё) из меню Math (Математика), либо после нажатия кнопки со знаком равенства на панели инструментов. Переключение режимов выполняется командой Automatic Сalculation (Автоматический режим) из меню Math. Галочка слева от названия команды показывает, что автоматический режим включён. По умолчанию MathCad выполняет только ту часть вычислений, которая необходима для обновления окна. Для выполнения вычислений во всём документе предусмотрена команда Math|Сalculate Worksheet (Пересчитать всё). Чтобы избежать пересчёта результатов на экране при каждом вносимом изменении, целесообразно отключить автоматический режим и для обновления результатов явно задавать команду Пересчитать одним из имеющихся способов. Прерывание вычислений осуществляется клавишей Esc. Для возобновления вычислений достаточно нажать F9. При обработке документа MathCad прочитывает его дважды, двигаясь каждый раз слева направо и сверху вниз. Во время первого прохода MathCad выполняет все действия, предписанные глобальным оператором присваивания и отображает все 16
необходимые результаты вычислений. При следующем проходе выполняются все остальные действия. Команда Math|Optimization предназначена для оптимизации вычислений. Если этот режим включён, то MathCad пытается выполнить аналитические преобразования с целью упрощения выражений перед применением численных методов. В ряде случаев вычисления с оптимизацией позволяют получить более точный результат или избежать переполнения. Результаты вычислений выводятся на экран с количеством десятичных знаков, задаваемых в диалоговом окне, которое открывается командой Format|Result. В этом окне на вкладке Number Format (Формат числа) можно выбрать формат вывода чисел и указать требуемое количество десятичных знаков. Каждый оператор имеет точку привязки. MathCad использует точки привязки, чтобы определить порядок следования операторов. Чтобы увидеть точки привязки, надо выполнить команду View|Regions.
6. ВЕКТОРЫ И МАТРИЦЫ В MathCad предусмотрено использование числовых и символьных массивов. Массивы могут быть одномерные и двумерные. Двумерные массивы (матрицы) рассматриваются как совокупность одномерных массивов одинаковой длины. Одномерные массивы могут быть векторами-строками и векторами-столбцами. Массив задаётся именем, обращение к элементам массива выполняется с помощью индексированных переменных. 6.1. Создание и отображение массивов Самый простой способ создания массива чисел состоит в задании массива из пустых полей и их последующем заполнении. Шаблон массива задаётся в диалоговом окне, которое можно открыть командой Insert|Matrix, комбинацией клавиш Ctrl+M или кнопкой с изображением шаблона матрицы в наборной панели. Любое из этих действий вызывает появление диалогового окна, в котором надо указать размер матрицы, то есть количество ее строк и столбцов. Для векторов один из этих параметров должен быть равен единице. 17
Если задана одна строка, то получим вектор-строку, если же в поле Columns задать 1, то получим вектор-столбец. Затем в пустые поля вводятся значения. Нужное поле выбирается щелчком мыши либо для перемещения между полями используется клавиша Tab. Если существует формула для вычисления элементов массива, то при его формировании используются дискретные переменные, позволяющие определить все значения. Кроме того, можно сформировать массив, задавая значения отдельным его элементам. Из данных, записанных в файле, тоже можно сформировать матрицу или вектор. Этот вопрос рассматривается в разделе, посвящённом работе с файлами. Массивы, в которых меньше десяти строк и столбцов, MathCad отображает в виде матрицы или вектора. Если массив имеет более девяти строк или столбцов, то по умолчанию MathCad отображает его как таблицу вывода с полосами прокрутки. Можно предписать системе выводить в виде матриц и массивы, размеры которых превышают указанные выше. Для этого надо командой Format|Result открыть окно задания формата результатов, перейти на вкладку Display Options и в поле Matrix display style выбрать Matrix (Отображать как матрицу). Чтобы выводить матрицы вместо таблиц вывода во всём рабочем документе, следует дополнительно установить флажок Expand nested arrays в том же диалоговом окне. 6.2. Задание элементов массивов Нумерация элементов в одномерном массиве начинается со значения, определяемого системной переменной ORIGIN (по умолчанию – с нуля). Чтобы обратиться к элементу массива, необходимо указать один индекс для вектора и два индекса – для матрицы. Индексы определяют расположение элемента в массиве и могут быть только целыми числами. Для выделения элемента матрицы используется конструкция с двумя нижними индексами, записанными через запятую: a1,3. Для обращения к элементу вектора-столбца надо указать один нижний индекс, например, x3. Для обращения к элементу вектора-строки, 18
необходимо указать верхний индекс или нижний индекс для транспонированного массива: d
〈2〉
( T)2 .
или d
Для выделения целого столбца матрицы следует добавить к имени массива верхний индекс: А<1> означает обращение к столбцу матрицы А с номером 1. Чтобы обратиться к целой строке, нужно добавить верхний индекс к транспонированному массиву: (АT)<1>. Записывать индексы можно с помощью шаблонов наборной панели Matrix или последовательным вводом символов, задающих требуемые действия. Так, для формирования нижнего индекса можно после имени массива ввести символ [ , а затем значение индекса. Например, чтобы записать x3, надо нажать клавиши х [ 3. Для перехода в режим ввода верхнего индекса надо после имени массива нажать Ctrl+6. Набор последовательности z Ctrl+6 0 = выводит на экран первый столбец матрицы z.
i := 0 .. 4 j := 0 .. 3 gi , j := 1 + i ⋅ j
⎛ ⎜ ⎜ g=⎜ ⎜ ⎜ ⎝
1 1 1
1 ⎞
1 2 3
4
1 3 5
7
1 4 7 10
⎟ ⎟ ⎟ ⎟ ⎟ ⎠
1 5 9 13 b0 := 11 b1 := 22
d := ( 101 202 303 )
( dT ) 0 = 101 ( dT ) 1 = 202 ( dT ) 2 = 303 b2 := 33
〈〉 d 0
= ( 101 )
〈〉 d 1
= ( 202 )
〈〉 d 2
= ( 303 )
⎛⎜ 11 ⎞⎟ b = ⎜ 22 ⎟ ⎜ 33 ⎟ ⎝ ⎠
6.3. Векторные и матричные операции При рассмотрении матричных операций приняты следующие обозначения: V – вектор, M – матрица, z – скалярная величина. Основные операции приведены в таблице 1. 19
Таблица 1 Векторные и матричные операции Операция
V1+V2 M+z V1-V2 M-z -V
M1+M2
V+z
M1-M2
V-z
*
V1⋅V2 V⋅z
M1⋅M2 z⋅M
/
V z
M z
^-1
М-1
Ctrl !
VT
|
|M|
^
M3
|
|V|
“
V
Alt $
∑V
Ctrl *
V1×V2
Ctrl -
V
Сложение
+
Вычитание
-
Смена знака
-
Умножение Деление на скаляр Обращение матрицы Транспонирование Вычисление определителя Возведение в степень Вычисление квадратного корня Получение комплексносопряжённого Сумма элементов вектора Кросс-умножение Векторизация
Примеры
Клавиши
-M z⋅V
MT
M
M
Под векторизацией понимается одновременное выполнение математических операций в их скалярном значении над всеми элементами вектора или матрицы, которые помечены символом векторизации. Другими словами векторизация – это поэлементное выполнение математических операций. 20
Для задания векторизации над именем или выражением записывается стрелка. Например, если А и В – векторы, то А⋅В дает скалярное произведение этих векторов. Но то же произведение под знаком векторизации создает новый вектор, каждый j -й элемент которого есть произведение j -х элементов векторов А и В. Итак, векторизация позволяет использовать скалярные операции и функция с массивами. Нередко это заметно упрощает запись математических алгоритмов. Векторизация может изменить смысл математических выражений и даже превратить недопустимое в прежних версиях MathCad выражение во вполне допустимое. Например, если V – вектор, то выражение cos(V) будет недопустимым, поскольку аргументом функции cos может быть только скалярная переменная. Однако с оператором векторизации функция cos(V) возвращает вектор, каждый элемент которого есть косинус соответствующего элемента исходного вектора V. В MathCad 8/2000 введено очередное усовершенствование – в качестве аргумента функции можно задавать векторы и матрицы. Таким образом, выражение cos(V), где V – вектор, становится допустимым и без применения операции векторизации. Система MathCad 8/2000 стала более «интеллектуальной» – в подобных случаях векторизация выполняется автоматически. В примере cos(V) будет возвращен вектор, каждый элемент которого равен косинусу соответствующего элемента вектора V. 6.4. Векторные и матричные функции 6.4.1. Формирование матриц Функции augment(A,B) и stack(A,B) позволяют объединить две матрицы в одну. Для объединения матриц, имеющих одинаковое число строк, бок о бок используется augment. Чтобы объединить два массива с одинаковым числом столбцов, располагая их друг над другом, применяется функция stack. Функция submatrix(M, ir, jr, ic, jc) предназначена для выделения подматрицы, в которую включены элементы матрицы М, расположенные в строках с ir по jr и столбцах с ic по jc . Функция identity(n) создаёт единичную квадратную матрицу порядка n. 21
Функция diag(V) формирует диагональную матрицу, у которой на главной диагонали расположены элементы вектора V. Если определена функция f, возвращающая значение элемента в зависимости от индексов, то для создания матрицы используется matrix(m,n,f). Функции Re(M) и Im(M) создают матрицы (векторы) действительных и мнимых частей матрицы (вектора) с комплексными коэффициентами. 6.4.2. Определение размеров массивов и значений элементов cols(A) – количество столбцов матрицы; rows(A) – количество строк матрицы; length(V) – длина вектора (число элементов в одномерном массиве); last(V) – номер последнего элемента вектора. max(A) – максимальный элемент; min(A) – минимальный элемент; mean(A) – среднее значение элементов массива; median(A) – медиана элементов массива.
⎛⎜ 1 ⎞⎟ v1 := ⎜ 2 ⎟ ⎜ 3 ⎟ ⎝ ⎠ v3 := v1 ⋅ v2 v3 = 26 s :=
∑v1
⎛⎜ 3 ⎞⎟ v2 := ⎜ 4 ⎟ ⎜ 5 ⎟ ⎝ ⎠
i := −1
⎛ 1 + 2i 0 ⎞ ⎟ ⎝ 0 4 − 5i ⎠
A := ⎜
v4 := v1 × v2
⎛⎜ −2 ⎞⎟ v4 = ⎜ 4 ⎟ ⎜ −2 ⎟ ⎝ ⎠
⎯ B := A
⎛ 1 − 2i 0 ⎞ ⎟ ⎝ 0 4 + 5i ⎠
B=⎜
min( v1) = 1
s =6
last ( v1) = 2
max( v1) = 3
⎛⎜ 1 0 0 ⎞⎟ diag( v1) = ⎜ 0 2 0 ⎟ ⎜ 0 0 3 ⎟ ⎝ ⎠
cols ( v1) = 1
22
⎛ ⎜ ⎜ v := ⎜ ⎜ ⎜ ⎝
1 ⎞
⎟ ⎟ 3 ⎟ 4 ⎟ ⎟ 5 ⎠ 2
length( v1) = 3
rows( v1) = 3
→ ⎯ u := ln( v1)
u2 := ln( v1)
⎛⎜ 0 ⎟⎞ u = ⎜ 0.693 ⎟ ⎜ 1.099 ⎟ ⎝ ⎠
⎛⎜ 0 ⎟⎞ u2 = ⎜ 0.693 ⎟ ⎜ 1.099 ⎟ ⎝ ⎠
⎛ ⎜ ⎜ augment( m , v) = ⎜ ⎜ ⎜ ⎝
m := identity( 5)
⎛ ⎜ ⎜ m= ⎜ ⎜ ⎜ ⎝
1 0 0 0 0 ⎞
⎟ ⎟ 0 0 1 0 0 ⎟ 0 0 0 1 0 ⎟ ⎟ 0 0 0 0 1 ⎠ 0 1 0 0 0
1 0 0 0 0 1 ⎞
⎟ ⎟ 0 0 1 0 0 3 ⎟ 0 0 0 1 0 4 ⎟ ⎟ 0 0 0 0 1 5 ⎠ 0 1 0 0 0 2
tr( m) = 5
6.4.3. Сортировка векторов и матриц sort(V) – сортировка элементов вектора по возрастанию; reverse(V) – перестановка элементов вектора после применения sort в обратном порядке (сортировка по убыванию); csort(M,n) – перестановка строк матрицы так, чтобы отсортированным оказался n-й столбец; rsort(M,n) – перестановка столбцов матрицы так, чтобы отсортированной оказалась n-я строка. 6.4.4.Специальные характеристики матрицы rank(M) – ранг матрицы; tr(M) – след квадратной матрицы; norm1(M), norm2(M), norme(M), normi(M) – первая, вторая, Евклидова и неопределённая нормы матрицы М; lu(M) – треугольное разложение матрицы M, такое, что P⋅M=L⋅U. Матрицы M, P, L, Q квадратные, одного порядка; L и Q соответственно нижняя и верхняя треугольные матрицы; qr(A) – разложение матрицы А на Q и R: A=Q⋅R, где Q ортогональная матрица и R - верхняя треугольная матрица; 23
cond1(M), cond2(M), conde(M), condi(M) – числа обусловленности, вычисленные в соответствующих нормах; svd(A) – сингулярное разложение матрицы А размером n⋅m: A=U⋅S⋅VT, где U и V – ортогональные матрицы размером m⋅m и n⋅n соответственно; S – диагональная матрица, на диагонали которой расположены сингулярные числа матрицы А; svds(A) – вектор, содержащий сингулярные числа матрицы А размером m⋅n, причём m≥ n; geninv(A) – матрица L, являющаяся левой обратной к матрице A, так что L⋅A=E, Е – единичная матрица размером n⋅n, L – прямоугольная матрица размером n⋅m, А – прямоугольная матрица размером m⋅n . eigenvals(M) – вектор собственных значений квадратной матрицы М; eigenvec(M,z) – вектор, принадлежащий собственному значению z; eigenvecs(M) – матрица, столбцами которой являются собственные векторы матрицы М (порядок расположения собственных векторов соответствует порядку собственных значений, возвращаемых функцией eigenvals).
7. ПОСТРОЕНИЕ ГРАФИКОВ 7.1. Графические возможности MathCad позволяет строить графики на плоскости и в пространстве, в декартовых и полярных координатах, использовать разные цвета и типы линий, задавать координатную сетку, линейный и логарифмический масштабы осей, отмечать отдельные точки, выполнять надписи. Большинство параметров, необходимых для построения графика, задаётся по умолчанию, что существенно облегчает работу. В дальнейшем, для получения качественного изображения отдельные параметры можно изменить. График является объектом и с ним можно выполнять обычные действия: изменять размеры, перемещать, помещать в буфер, удалять. Кроме того, многие пространственные графики можно вращать, приближать к наблюдателю, анимировать. Для построения графиков используются шаблоны. Их перечень выводится на экран командой Insert|Graph: 24
X-Y Plot [@] – график на плоскости в декартовой системе координат; Polar Plot [Ctrl+7] – график в полярной системе координат; Surface Plot [Ctrl+ 2] – график поверхности; Contour Plot [Ctrl+ 5] – карта линий уровня; 3D Scatter Plot – точечный график; 3D Bar Chart – трёхмерная гистограмма; Vector Field Plot –векторное поле. Графики можно строить обычным и упрощённым способом. Упрощённое создание графиков на плоскости появилось в версии 8. Начиная с версии MathCad 2000 существенно легче стало создавать трёхмерные графики. 7.2. Создание графиков на плоскости При построении графиков различных типов обычным путём следует придерживаться приведённого ниже сценария: задать значения аргументов в выбранном интервале. Для этой цели определить дискретную переменную; записать функции, графики которых необходимо построить; установить курсор (красный крестик) в левый верхний угол будущего графика; задать шаблон графика; заполнить поля ввода шаблона. Количество полей ввода у различных типов графиков разное; нажать клавишу Enter или F9 или щёлкнуть мышью вне области графика. Для просмотра фрагмента графика в увеличенном масштабе необходимо выполнить действия: выделить график; выполнить команду Zoom из меню Format|Graph или контекстного. Откроется окно просмотра графика Zoom; выделить фрагмент графика; нажать на кнопку Zoom. Для двумерных графиков предусмотрена операция трассировки. Под трассировкой понимается определение координат точек кривых, приведённых на графике. Чтобы выполнить трассировку, необходимо: выделить график; 25
выполнить команду Trace из меню Format|Graph или контекстного. Откроется окно трассировки двумерных графиков Trace и в области графика появится перекрестие из двух пунктирных линий; переместить мышью перекрестие в нужную точку графика. В окне трассировки появятся координаты выбранной точки. Координаты определяются дискретно, в соответствии с заданным шагом изменения абсциссы; при необходимости скопировать координаты точки с помощью кнопок Copy X и Copy Y. В пакете предусмотрены средства размещения надписей в области графиков. Для этого надо предварительно подготовить тестовый блок в стороне от графика, а затем переместить его мышью в нужное место. Чтобы надпись располагалась поверх рисунка, следует воспользоваться командой контекстного меню Bring to Front. Команда Send to Back отправляет текст на задний план. Рассмотренный способ создания надписей целесообразно использовать в тех случаях, когда штатными средствами форматирования графиков трудно подготовить надписи на русском языке. 7.2.1. График в декартовых координатах (X-Y Plot) Задать шаблон графика можно командой Insert|Graph X-Y Plot или выбрав нужный тип графика на наборной панели. Однако проще всего вывести шаблон обычного графика на плоскости клавишей @. Перед применением этой команды необходимо определить функции, графики которых должны строиться, и изменение их аргумента (например, х) в заданном интервале. Простые функции, если они в дальнейшем не используются, можно указать в шаблоне самого графика. Далее надо в документе щелчком мыши задать место левого верхнего угла графика, а затем вывести шаблон графика. Незаполненный шаблон представляет собой пустой прямоугольник с полями ввода данных в виде маленьких тёмных прямоугольников около осей. Для построения графика достаточно поместить в средние поля ввода имя аргумента (у оси абсцисс) и функцию или имя функции у оси ординат и нажать на клавишу Enter или F9.
26
Крайние поля ввода служат для задания предельных значений абсцисс и ординат, то есть они задают масштабы по осям. Если оставить их незаполненными, то автоматически записанные значения могут оказаться неудобными. Нужное поле ввода выбирается мышью, клавишей Tab или клавишами смещения курсора по горизонтали. Для упрощенного построения двумерного графика некоторой функции f (x) надо вывести его шаблон, по вертикали указать функцию, а по горизонтали – независимую переменную х. Таким образом можно строить на одном рисунке графики многих функций, перечисляя их через запятую у вертикальной оси. Графики будут построены линиями разного типа и цвета. Также можно вначале записать функцию, а затем (оставив курсор в области функции) вывести шаблон графика; функция окажется записанной у вертикальной оси, и останется только указать независимую переменную у горизонтальной оси.
x := −π , −π + 0.001 .. π 4 2 sin ( x) 0.25 x 3⋅sin ( 4x)
5
0
5
2 4 x , x , 5⋅cos ( 2x)
Рис.1. Графики в декартовой системе координат При упрощенном способе построения графики строятся при значениях независимой переменной от -10 до +10. В дальнейшем операцией форматирования этот диапазон и другие параметры графиков можно изменить. 27
Для задания параметров уже построенного графика его необходимо выделить и открыть диалоговое окно одним из трёх способов: двойным щелчком по выделенному графику; командой Format|Graph|X-Y Plot; командой Format контекстного меню. Окно форматирования имеет четыре вкладки: задание параметров осей (X-Y Axes); выбор линий и маркеров (Traсеs); нанесение надписей (Labels) и параметры по умолчанию (Default). Раскрыв нужную вкладку и изменив установки, следует нажать кнопку Apply (Применить): график будет перестроен. Кнопка Применить позволяет изменять график при раскрытом окне форматирования. Другой путь получения обновлённого графика заключается в снятии выделения. Вкладка Default содержит два переключателя. Выбор Use for Default позволяет запомнить сделанные установки и использовать их в дальнейшем по умолчанию. Кнопка Change to Default отменяет внесённые изменения и возвращает значения параметров по умолчанию. 7.2.2. График в полярной системе координат (Polar Plot) В полярной системе координат каждая точка задается углом φ и радиусом-вектором длиной R(φ). График функции обычно строится при изменении угла φ в определенных пределах, чаще всего от 0 до 2π. Шаблон полярного графика имеет форму окружности и содержит поля ввода данных. Перед построением таких графиков надо задать изменение ранжированной переменной φ в заданных пределах. После вывода шаблона следует записать φ в шаблон снизу и функцию R(φ) в поле ввода слева, а также указать пределы изменения длины радиусвектора Rmin и Rmax в полях ввода справа. При упрощённом построении графика достаточно вывести и заполнить шаблон. При этом аргумент обязательно надо обозначить символом х.
28
1) a := 2
r ( α ) :=
2)
3 ⋅ a ⋅ cos ( α ) ⋅ sin ( α )
120
cos ( α ) + sin ( α ) 3
90
x ( t) := a ⋅ cos ( t)
3
y ( t) := a ⋅ sin ( t)
3
3
60 2
150 r( α )
30
180
0 0
2
4
210
6
y( t)
0
330 240
270
300
α
2 x ( t)
Рис.2. Графики на плоскости: 1 – в полярной системе координат; 2 – при параметрическом задании кривой 7.3. Построение трёхмерных графиков 7.3.1. Создание трёхмерных графиков До версии MathCad 2000 при построении трёхмерных графиков предварительно требовалось: задать функцию двух переменных; определить целочисленные индексы; сформировать матрицу аппликат; вывести шаблон; в единственное поле ввода записать имя матрицы аппликат. Поскольку график строится на основе матрицы, содержащей только координаты высот фигуры, то истинные масштабы по осям Х и Y не известны и на рисунках не проставляются. Однако можно вывести порядковые номера элементов матриц в заданном направлении (по Х и по Y). Большие возможности дает несколько иной способ задания трехмерных поверхностей – в параметрическом виде. При этом приходится формировать три матрицы – X, Y и Z – и указывать их в шаблоне в виде (X, Y, Z). 29
z( x , y) := cos ( x ⋅ y) i := 0 .. 20
j := 0 .. 20
⎛ i − 10 , j − 10 ⎞ ⎟ 5 ⎠ ⎝ 5
mi , j := z⎜
m Рис.3. Построение поверхности Современные версии пакета допускают построение трёхмерных графиков без задания матрицы аппликат, что существенно упростило задачу. Достаточно определить функцию двух переменных и указать её имя в поле ввода на шаблоне. Единственным недостатком такого метода является неопределённость масштабирования. На одном графике допускается строить несколько пересекающихся или непересекающихся поверхностей. Для этого следует в шаблоне графика указать через запятую имена матриц или функций. Причём, возможно использование разных способов описания поверхностей, например, в виде обычной функции двух переменных и в параметрической форме. MathCad позволяет очень просто разворачивать графики в пространстве, чтобы добиться наилучшей наглядности. Вращение графика выполняется при нажатой левой кнопке мыши. Если дополнительно использовать клавишу Ctrl, то можно приблизить объект к наблюдателю или удалить от него. 30
2
z1( x , y) := x + y
(
2
2
z2( x , y) := − x + y
2
)
z1 , z2
Рис. 4. Соприкасающиеся поверхности Если же удерживать клавишу Shift, то после отпускания мыши будет вращение. Чтобы его прервать, необходимо щёлкнуть по графику. 7.3.2. Форматирование трехмерных поверхностей Наглядность представления трехмерных поверхностей зависит от множества факторов: масштаба построений, углов поворота фигуры относительно осей, применения алгоритма удаления невидимых линий или отказа от него, использования функциональной закраски и т. д. Для изменения этих параметров следует использовать операцию установки формата графика. Применение алгоритма удаления невидимых линий делает рисунок трехмерной поверхности намного более наглядным. Дальнейшее повышение наглядности обеспечивается применением функциональной закраски. По существу, она дает дополнительную информацию о третьем измерении. Окно форматирования проще всего вывести на экран двойным щелчком в области графика. Для задания внешнего вида графика используется очень большое количество параметров,
31
которые распределены по девяти вкладкам. Так, для смены типа графика используется вкладка General, на которой расположен переключатель, определяющий способ построения графика. Так как форматирование поверхностей является довольно сложным процессом, то в состав пакета включён мастер построения трёхмерных графиков. Чтобы воспользоваться мастером, надо определить функцию и выполнить команду Insert|Graph|3D Plot Wizard. Затем в окне мастера Plot Type выбрать тип графика, в окне Appearance задать вид графика (линии сетки, окрашенная поверхность, окрашенная поверхность с линиями), а в окне Coloring указать способ задания цветовой гаммы (в зависимости от высоты, в зависимости от освещённости, заливка одним цветом). Завершив работу с мастером, следует в поле ввода шаблона записать имя функции. Процесс создания графика с помощью мастера очень наглядный и не вызывает затруднений. Однако мастер использует не все возможности форматирования. 7.3.3. Построение контурных графиков (Contour Plot) Представление поверхности линиями равного уровня широко применяют в картографии. По умолчанию строится чёрнобелый контурный график без указания значений, соответствующих разным линиям уровня. Чтобы добавить оцифровку, следует открыть окно форматирования, перейти на вкладку Special и в группе Contour Options включить опцию Numbered. К сожалению, во многих случаях задание численных характеристик загромождает график. В ряде случае целесообразно задать аппликаты разного уровня с помощью цвета. Для использования функциональной окраски надо перейти на вкладку Appearance и выбрать опцию Fill Contours. 7.3.4. Построение точечного графика (3D Scatter Plot) Нередко трехмерные поверхности представляют в виде находящихся в этом пространстве точек, кружочков или иных фигур. Каждая из этих фигур несет информацию о геометрическом положении ее центра в трехмерном пространстве. Размеры точек, их вид и окраску можно изменять с помощью команды изменения формата ЗD-графика. Наглядность точечных графиков не очень высока. Их стоит использовать не для показа
32
трехмерных поверхностей, а лишь для демонстрации расположения на них небольшого числа объектов. 7.3.5. Построение трёхмерной гистограммы Одной из форм представления ЗD-поверхностей является изображение ее рядом трехмерных столбцов, высота которых определяется значением координаты z(x у). Графики 3D Bar Chart широко применяются при анализе сложных статистических данных, например представленных тремя независимыми переменными. 7.3.6. Векторное поле (Vector Field Plot) Векторное поле представляет собой совокупность коротких стрелочек-векторов. Стрелка обращена остриём в сторону нарастания высоты поверхности, а плотность расположения стрелок зависит от скорости этого нарастания. Построение векторного поля требует выполнения большого объёма вычислений, поэтому графики этого типа раньше строились редко. Этот тип графика целесообразно применять при анализе электромагнитных, тепловых, гравитационных и других полей.
7.4. Применение функций CreateMesh и CreateSpace Для формирования поверхностей можно применять функции CreateMesh и CreateSpace. Функция CreateMesh (F, s0, s1, t0, t1, sgrid, tgrid, fmap) возвращает массив из трёх матриц, задающих координаты x, y, z для функции F, определённой в векторной параметрической форме в виде функции двух переменных sgrid, tgrid. Аргументы s0, s1, t0, t1 задают пределы изменения переменных sgrid, tgrid. Параметр fmap – трёхэлементный вектор значений, задающий число линий сетки. Чтобы воспользоваться функцией CreateMesh для задания поверхности, необходимо: определить функцию двух переменных; задать пределы изменения переменных; используя функцию CreateMesh сформировать матрицу поверхности; вывести шаблон графика Surface Plot и указать имя матрицы значений. 33
Например, определим функцию H(x,y):=sin(x,y). Зададим пределы изменения переменных и вычислим матрицу поверхности: u0:=-2, u1:=2, v0:=-2, v1:=2 C:= CreateMesh(H, u0, u1, v0, v1). После указания имени С в шаблоне графика Surface Plot получим искомую поверхность. Если для формирования матрицы воспользоваться выражением C:= CreateMesh(H, u0, u1, v0, v1, 10), то при построении поверхности будет использовано 10 линий сетки. Функцию CreateMesh можно использовать для построения объёмной фигуры путём вращения кривой f(x,y) вокруг оси x или y. Функция CreateSpace отличается от CreateMesh тем, что использует заданную в векторной форме функцию одной переменной. 7.5. Импорт изображений MathCad позволяет включать в документы изображения, созданные различными графическими системами (Paint, AutoCad, Pcad и др.). Рисунки можно передавать через буфер обмена либо загружать из файлов. Для импорта файла с рисунком необходимо выполнить команду Insert|Picture и в поле ввода появившегося шаблона записать полное имя файла. Так как имя файла задаётся строкой, то его надо записывать в кавычках. Например: "G:\MathCad\Ballns1.bmp". Рисунок из буфера включается в нужное место документа командой Edit|Paste.
8. ДАННЫЕ ФАЙЛОВОГО ТИПА В системе MathCad можно работать с данными файлового типа. Разрешено применять последовательные текстовые файлы, использующие коды ASCII. В сущности файлы данных представляют собой векторы и матрицы, записанные в текстовом формате. При записи файла система считывает значения векторов и матриц поэлементно (для матриц слева направо и сверху вниз) и по ходу считывания преобразует числовые значения элементов в их 34
символьные эквиваленты, использующие ASCII-коды. Эти символьные значения и записываются в файл. Существует семь операций для работы с файлами. Создаваемые или используемые ими файлы можно просмотреть и отредактировать в любом текстовом редакторе, использующем коды ASCII. При считывании файлов система обеспечивает обратное преобразование символьных представлений элементов массивов в числовые значения. Таблица 2 Функции для работы с файлами Функция READPRN (“Имя_файла”)
WRITEPRN (“Имя_файла”) APPENDPRN (“Имя_фaйлa”) READRGB (“Имя_файла”) READ (“Имя_файла”) WRITE (“Имя_файла”) APPEND (“Имя_фaйлa”)
Выполняемые действия Считывание из файла матрицы, каждая строка которой соответствует строке текстового файла Запись в файл матрицы построчно. Добавление данных в конец существующего файла с матрицей Считывание RGB-изображения Считывание простого списка чисел Запись простого списка чисел Добавление чисел в конец существующего списка.
Имена всех функций записываются прописными буквами. Имя файла является строкой, поэтому указывается в кавычках. Если используемый файл расположен не в текущей папке, то следует задавать полное имя файла. Функции READ и READPRN используют для присваивания значений массивам: A:= READ (“Имя_файла”) B:= READPRN (“Имя_файла”) Функции WRITE, WRITEPRN записывают в файл массивы. Причём способ формирования массива значения не имеет: можно 35
предварительно создать массив с помощью шаблона, задать выражение или определить функцию пользователя. WRITE (“Имя_файла”):=V WRITEPRN (“Имя_файла”):=f(x) WRITEPRN (“Имя_файла”):=x2 Функции APPEND и APPENDPRN, дописывающие данные в конец файла, используются аналогично функциям записи. Начиная с версии MathCad 8 основными функциями для работы с файлами являются READPRN, WRITEPRN, APPENDPRN, оперирующие данными определённой структуры. Функции READ, WRITE, APPEND сохранены для совместимости с предыдущими версиями пакета. Эти функции работают с простыми последовательностями чисел (списками) и требуют для формирования матрицы или вектора задания ранжированных переменных. Считывание одномерного массива из файла
i := 1 .. 6 ti := READ( "f2.txt") Запись вектора в файл
x := 0 .. 4
f ( x) := x2
WRITE ( "VECTOR.txt") := f ( x) Создание матрицы из списка, сформированного в блокноте
k := 0 .. 2
m := 0 .. 2
matrk , m := READ( "f1.txt" ) Дополнение массива APPEND ( "f2.txt" ) := f ( x) При создании файла данных в виде простого списка в текстовом редакторе или другой программе можно данные записывать в строку через пробел или каждое число записывать на отдельной строке. Если дальнейшая обработка выполняется функциями READ и APPEND, то форма записи данных в исходном файле значения не имеет. Если же используются функции READPRN и APPENDPRN, то структура файла имеет принципиальное значение. Лучше при формировании простого 36
списка располагать данные в строку, так как именно таким образом записывает их MathCad процедурой WRITE. При использовании функций READPRN, WRITEPRN, APPENDPRN действия выполняются с матрицей, имеющей определённое число строк и столбцов. Запись матрицы в файле соответствует представлению её на экране, то есть имеет привычный вид двумерного массива. Структура данных определяется автоматически, что облегчает выполнение операций чтения и записи данных, но лишает пользователя возможности управлять этим процессом. Особое внимание на структуру данных надо обращать при дополнении массива. Чтобы добавить данные в конец существующего файла со структурированными данными, необходимо убедиться в том, что число столбцов в добавляемых данных совпадает с количеством столбцов в файле данных. Например, если в файле f.txt хранится матрица: 1 55 99 88 77 44 10 20 30 40 50 60 31 32 33 34 35 36 41 42 43 44 45 46 51 52 53 54 55 56 то можно сформировать массив matr4 matr4 := ( 5 55 555 55 5 555 ) и дополнить им данные в файле командой
APPENDPRN ( "f.txt" ) := matr4 В итоге в файле будет записан массив: 1 55 99 88 77 44 10 20 30 40 50 60 31 32 33 34 35 36 41 42 43 44 45 46 51 52 53 54 55 56 5 55 555 55 5 555 Предусмотрена возможность хранения в файлах матриц с комплексными элементами. В этом случае MathCad действительную и мнимую часть каждого числа записывает через запятую и заносит в файл служебную информацию. Поэтому создавать файлы с массивами комплексных чисел целесообразно в среде MathCad, а не в каком-либо текстовом редакторе. 37
⎛ ⎝
1 + 2j 3 + 4j
⎞ ⎟ WRITEPRN ( "comp.txt") := C 5 + 6j 7 + 8j ⎠ ⎛ 1 + 2i 3 + 4i ⎞ NewC := READPRN ( "comp.txt") NewC = ⎜ ⎟ ⎝ 5 + 6i 7 + 8i ⎠
j := −1
C := ⎜
9. СИМВОЛЬНЫЕ ВЫЧИСЛЕНИЯ 9.1. Организация символьных вычислений Символьными называют вычисления, результаты которых представляются в аналитическом виде. Системы символьной математики (компьютерной алгебры) снабжаются специальным процессором для выполнения аналитических вычислений. Его основой является ядро, хранящее всю совокупность формул и формульных преобразований, с помощью которых выполняются аналитические вычисления. Чем больше этих формул в ядре, тем надежней работа символьного процессора и тем вероятнее, что поставленная задача будет решена, разумеется, если такое решение существует в принципе Ядро символьного процессора системы MathCad – несколько упрощенный вариант ядра известной системы символьной математики Maple V фирмы Waterloo Maple Software, у которой MathSoft приобрела лицензию на его применение. Символьная математика включена в MathCad начиная с версии 3.0. Введение символьных вычислений придает системе MathCad качественно новые возможности, при этом символьные вычисления выполняются достаточно просто. В отличие от численных методов, дающих решение задачи в частном случае, аналитические вычисления позволяют получить результат в общем виде. Полученные аналитические зависимости можно проанализировать, оценить влияние разных факторов на результат. Кроме того, в ряде случаев предварительно выполненные аналитические преобразования позволяют гораздо быстрее получить численный результат. Существуют два способа проведения символьных преобразований выражений: с помощью команд меню Symbolics (Символы) или использованием операций системы SmartMath. 38
Операции символьного вывода экспертной системы SmartMath появились несколько позже и являются более мощным и удобным средством выполнения аналитических вычислений. 9.2. Меню Symbolics 9.2.1. Обзор команд меню Symbolics Все команды символьного меню работают примерно одинаково: нужно выделить выражение частично или целиком, а затем выбрать соответствующую команду из меню Symbolics (Символы). MathCad выводит преобразованное выражение в текущий рабочий документ. В зависимости от установленного способа расположения результата MathCad или замещает выделенное выражение, или помещает новое выражение справа или снизу от исходного. Если исходное выражение записано корректно, но символьное преобразование не удалось, то новое выражение совпадает со старым. Расположение результата задаётся в диалоговом окне Стиль вычислений, которое выводится на экран командой Symbolics|Evaluation Style. В этом окне можно установить три типа вывода результата символьных преобразований: Vertically, inserting lines – расположение результата под основным выражением с включением пустых линий, Vertically, without inserting lines – расположение результата прямо под основным выражением; Gorizontally – расположение результата рядом с основным выражением. Кроме того, переключатель Show Comments позволяет вывести комментарии, а переключатель Evaluate in Place задаёт режим замещения результатом исходного выражения. Запись результата на том же месте удобна для преобразования выражения, являющегося частью формулы. Через меню Symbolics вычисления выполняются в командном режиме. При использовании команд меню нельзя в исходном выражении применять функции пользователя, и результаты преобразований не меняются при внесении изменений в рабочий документ.
39
Для проведения символьных операций необходимо выделить объект, над которым эти операции будут выполняться. Чтобы выделить выражение или его фрагмент, надо установить на него указатель мыши и щёлкнуть левой кнопкой, появится синий уголок. При необходимости следует распространить выделение на нужную часть выражения. Если объект отсутствует, доступа к соответствующим операциям меню Symbolics нет. Объектом операции может быть самостоятельное математическое выражение, часть такого выражения, результат предшествующей операции и т. д. При выполнении вычислений в аналитическом виде иногда получаются сложные и громоздкие решения. В этом случае решение можно поместить в буфер обмена и использовать его для оценки пользователем (но не для дальнейших преобразований системой в автоматическом режиме). Символьные операции разбиты на четыре характерных раздела, рассмотренные ниже. 9.2.2. Операции с выделенными выражениями К операциям с выделенными выражениями относятся: Evaluate – Расчёты (Вычислить) – преобразовать выражение с выбором вида преобразований из подменю Symbolically, Floating Point, Complex (Символьные, С плавающей запятой, Комплексные); n
Результат
1 3 1 2 1 ⋅n − ⋅n + ⋅n 2 6 3
⌠ sin( t) ⎮ dt ⎮ t ⌡0
Результат
Si ( x )
⎛1 2⎞⎛x y ⎞ ⎜ ⎟ ⋅⎜ ⎟ ⎝3 4⎠⎝y x ⎠
Результат
⎛ x + 2⋅y y + 2⋅x ⎞ ⎜ ⎟ ⎝ 3⋅x + 4⋅y 3⋅y + 4⋅x ⎠
∑
2
n
x
Simplify – Упростить – упростить выделенное выражение с выполнением таких операций, как сокращение подобных слагаемых, приведение к общему знаменателю, использование основных тригонометрических тождеств и т. д.;
40
Expand – Расширить (Разложить по степеням) – раскрыть выражение, например, для (Х + Y) (Х – Y) получаем X2 – Y2; Factor – Фактор (Разложить на множители) – разложить число или выражение на множители, например, X2 – Y2 даст (X + Y)(X – Y); Collect – Подобные (Разложить по подвыражению) – собрать слагаемые, подобные выделенному выражению, которое может быть отдельной переменной или функцией со своим аргументом. Результатом будет многочлен относительно выбранной переменной или функции; Polynomial Coefficients – Коэффициенты Полинома – найти коэффициенты полинома по заданной переменной или выражению. Применяется для выражений, представимых в виде многочлена. Команда Evaluate|Symbolically пытается выполнить все возможные числовые операции и представить выражение в наиболее простом виде, в том числе при работе с символьными матрицами, интегралами и производными. Команда Evaluate|Floating Point позволяет выводить результат с большим количеством цифр (до 4000). Если количество выводимых цифр очень велико, то система предлагает поместить результат в буфер. Режим комплексных вычислений Evaluate|Complex существенно расширяет возможности вычислений, например, позволяет находить квадратные корни из отрицательных выражений. Операция Simplify позволяет упрощать математические выражения, содержащие алгебраические и тригонометрические функции, а также выражения с полиномами. Эта операция не имеет точного определения (иногда трудно понять, что проще), но полезна при выполнении вычислений. С помощью этой операции можно вычислять производные как первого, так и высших порядков. Эта же операция позволяет находить аналитические выражения для интегралов. В том числе можно вычислять кратные интегралы, пределы которых – функции. В результате преобразований могут появиться специальные функции, встроенные в систему (Бесселя, гамма-функции, интеграл вероятности и др.) и дополнительные функции, используемые символьным процессором (интегральные синус и косинус, интегралы Френеля, эллиптические интегралы и др.). К сожалению, символьный процессор MathCad обладает только частью возможностей системы Maple и далеко не всегда находит результат.
41
Команда Разложить по степеням Expand перемножает сомножители при раскрытии скобок. Эту команду можно, например, использовать для того, чтобы записать рациональное выражение с числителем - многочленом в виде суммы дробей, или чтобы записать выражения, подобные sin (5x), в виде многочленов со степенями синусов и косинусов. Действие этой команды в некотором смысле противоположно команде Simplify. Операция Factor используется для разложения выражений и чисел на простые множители. Она способствует выявлению математической сущности выражений, например, представляет полином через его действительные корни. Если у полинома есть комплексно-сопряжённые корни, то порождающее их выражение записывается в виде квадратного трёхчлена. В некоторых случаях применение операции Factor упрощает выражение. MathCad пытается разложить на множители все выделенное выражение. Попытки разложения на множители подвыражений не предпринимаются. Следует учитывать, что выражения, содержащие константы с десятичными дробями, на множители не раскладываются. Команда Collect применяется для преобразования суммы одночленов к виду многочлена по выделенной переменной. Её целесообразно использовать для выражения, зависящего от нескольких переменных, в тех случаях, когда требуется представить его в виде степенного многочлена относительно одной из переменных. Для приведения подобных необходимо выделить подвыражение (переменную). Polynomial Coefficients применяется для Команда выражений, которые являются полиномами или могут быть представлены полиномом относительно выделенной переменной или подвыражения. Результатом является вектор-столбец, составленный из коэффициентов полинома, начиная с самой низкой степени. Если выражение представимо в виде многочлена относительно какой-либо переменной или подвыражения, то надо выделить эту переменную или подвыражение и выполнить команду Symbolics|Polynomial Coefficients. Система MathCad сформирует вектор, первым элементом которого будет свободный член многочлена.
42
9.2.3. Операции с выделенными переменными К числу операций с выделенными переменными относятся несколько команд меню Symbolics|Variable: Solve – Переменная|Решить – найти значения выделенной переменной, при которых содержащее ее выражение становится равным нулю (решить уравнение или неравенство относительно выделенной переменной); Substitute – Переменная|Подстановка – заменить указанную переменную содержимым буфера обмена; Differentiate – дифференцировать все выражение, содержащее выделенную переменную, по отношению к этой переменной (остальные переменные рассматриваются как константы); Integrate – интегрировать всё выражение, содержащее выделенную переменную, по этой переменной; Expand to Series – Разложить в ряд – найти несколько членов разложения выражения в ряд Тейлора относительно выделенной переменной; Convert to Partial Fraction – Разложить на элементарные дроби – разложить на элементарные дроби выражение, которое рассматривается как рациональная дробь относительно выделенной переменной. удобно использовать для решения Команду Solve алгебраических уравнений и для определения корней полиномов. Чтобы найти корни уравнения, надо: записать выражение; выделить в любом месте выражения переменную, относительно которой решается уравнение; выбрать пункт Variable|Solve из меню Symbolics. При вычислении корней уравнения выражение автоматически приравнивается к нулю и выдаётся результат в виде матрицы. Однако можно записать уравнение в привычной форме. При записи уравнения с правой частью необходимо ставить жирный знак равенства из наборной панели Boolean или использовать комбинацию клавиш Ctrl+=. Команда Substitute заменяет некоторым выражением указанную переменную. Предварительно это выражение надо скопировать или вырезать в буфер, а затем выделить заменяемую переменную. Если переменная фигурирует в выражении несколько
43
раз, MathCad заменит все её вхождения на содержимое буфера обмена. Эта команда позволяет перейти от символьного представления результата к числовому. Команда Substitute не может подставлять матрицы. Чтобы подставить скалярное выражение вместо переменной, которая находится в матрице, надо поместить выражение в буфер обмена, а затем щёлкать кнопкой мыши на каждом элементе матрицы, который содержит заменяемую переменную, и применять команду Substitute. Для вычисления производной или интеграла в символьном виде, необходимо: записать выражение; выделить переменную; выбрать команду Variable|Differentiate или команду Variable|Integrate из меню Symbolics. Действия выполняются над всем выражением, содержащим выделенную переменную. Остальные переменные рассматриваются как константы. При вводе выражения символы интеграла и дифференциала не записываются, только само выражение, которое рассматривается как подынтегральная функция или дифференцируемая функция. При выполнении команд Differentiate и Integrate в состав исходных выражений и результатов могут входить встроенные в систему специальные математические функции. Для вычисления производных высшего порядка следует повторить вычисления нужное число раз. Если пределами интегрирования являются символьные выражения или числа без десятичных точек, то по команде Integrate MathCad попытается найти точное символьное значение неопределённого интеграла по заданной переменной или численное значение интеграла. При наличии в подынтегральном выражении десятичных чисел, MathCad вырабатывает 20-значное приближенное значение интеграла, если он существует. n
a⋅x
( n+ 1 )
Интеграл
x ⋅a ( n + 1)
Другой способ найти символьное выражение для производной или интеграла заключается в применении команды Symbolics|Evaluate|Symbolically. Однако в этом случае необходимо 44
записывать выражение полностью, с использованием символов интегрирования и дифференцирования. При разложении в ряд Тейлора необходимо указать переменную, относительно которой строится ряд, и задать количество членов ряда n. По умолчанию n=6. Число n определяет порядок, до которого нужно выписать разложение. Например, если n=6, то отбрасываются слагаемые со степенью 6 и более, а присутствуют в разложении степени 0, 1, 2, 3, 4, 5. Команда Expand to Series выполняет разложение в ряд в окрестности нуля. Чтобы получить разложение в ряд вокруг точки, отличной от нуля, нужно использовать сдвиг переменной. Например, ln(x) не может быть разложен вокруг 0, но можно разложить ln вокруг 1 путем разложения ln(1+x) вокруг 0. sin( x) x
Разложить в ряд Тейлора
1−
1 2 1 4 ⋅x + ⋅x 6 120
По команде Convert to Partial Fraction символьный процессор пытается разложить знаменатель выражения на линейные или квадратичные многочлены с целочисленными коэффициентами. Если это удаётся, то выражение будет разложено на сумму дробей с найденными многочленами в качестве знаменателей. Обязательное требование: константы в исходном выражении должны быть целыми числами или простыми дробями. 9.2.4. Операции с выделенными матрицами Символьный процессор системы MathCad обеспечивает проведение в символьном виде трёх наиболее распространённых матричных операций: транспонирования, обращения матрицы и вычисления детерминанта. Подлежащая преобразованию матрица должна быть выделена. Операции с матрицами Matrix представлены в подменю, которое содержит операции: Transpose – получить транспонированную матрицу; Invert – Обратить – создать обратную матрицу; Determinant – вычислить определитель (детерминант) матрицы. При использовании этих команд нужно выделять саму матрицу. Нельзя присвоить переменной матричное значение и выделить эту переменную.
45
Транспонирование матрицы означает перестановку строк и столбцов. Обращение матрицы означает создание такой матрицы, которая при умножении на исходную даёт единичную матрицу, то есть матрицу, у которой диагональные элементы равны 1, а остальные равны 0. Обращение выполнимо только для квадратных матриц. Если элементы матрицы числа, то соответствующие операции выполняются в числовой форме. 9.2.5. Операции преобразования Пункт меню Преобразование содержит следующие команды: Fourier Transform – выполнить прямое преобразование Фурье относительно выделенной переменной; Inverse Fourier Transform – выполнить обратное преобразование Фурье относительно выделенной переменной; Laplace Transform – выполнить прямое преобразование Лапласа относительно выделенной переменной (результат – функция от переменной s); Inverse Laplace Transform – выполнить обратное преобразование Лапласа относительно выделенной переменной (результат – функция от переменной t); Z Transform (Z-преобразование) – выполнить прямое Zпреобразование выражения относительно выделенной переменной (результат – функция от переменной z); Inverse Z Transform – выполнить обратное Zпреобразование выражения относительно выделенной переменной (результат – функция от переменной n).
9.3. Система SmartMath 9.3.1 Операции символьного вывода Для выполнения символьных преобразований применяются операция символьного вывода и операция расширенного символьного вывода . Символы операций можно выбрать в палитре Symbolic или задать с помощью клавиатурных комбинаций Ctrl+.(точка) или Ctrl+Shift+.(точка). Расширенный оператор имеет два шаблона, в первый вводится символьное выражение, а во второй – директива. Кроме того, в такой оператор можно включить
46
другой символьный оператор, чтобы получить составной оператор и поля для записи нескольких директив.
(2
)
f (x) := x⋅⎡⎣ x + 2⋅x − 1⎤⎦ b
⌠ 1 4 2 3 1 2 1 4 2 3 1 2 ⎮ f (x) dx → ⋅b + ⋅b − ⋅b − ⋅a − ⋅a + ⋅a ⌡a 4 3 2 4 3 2 Чтобы воспользоваться оператором символьного вывода, надо задать его одним из имеющихся способов, а затем заполнить поля ввода. При работе с оператором расширенного вывода в первом поле ввода записывается выражение, а во втором – директива. Можно поступить наоборот, сначала записать выражение, а потом задать оператор символьного вывода и заполнить поля ввода. i :=
−1
2
( 2 + 3 ⋅ i) complex → −5 + 12 ⋅ i
При указании директив появляются дополнительные поля ввода для уточнения операции. В некоторых случаях требуется задать переменную, относительно которой выполняются преобразования. Если уточнений не требуется, то появившееся дополнительное поле ввода следует удалить. 1 collect, a ⎡⎣ ( a + b) n ⋅a − a( n+ 1) + ( a + b) n ⋅b ⎤⎦ ⌠ n → ⎮ ( a + b ⋅x) dx simplify ⌡0 [ b ⋅( n + 1) ]
При вычислении интегралов и производных их записывают в привычной математической форме, выбирая соответствующие шаблоны из наборных панелей. 9.3.2.Состав директив При вводе после выражения стрелки фактически (по умолчанию) выполняется операция Simplify (Упростить). Но что подразумевается под этим, ясно не всегда. При необходимости выполняемую операцию можно уточнить с помощью ключевых слов. Ключевые слова можно выбирать из палитры или набирать только строчными буквами (кроме Modifier – первая буква в этом слове должна быть прописной). solve – решить уравнение 47
simplify – упрощение выражений; expand – разложение выражения по степеням; factor – разложение выражения на простые множители; complex – преобразования в комплексной форме; assume – присваивание переменным неопределенного значения, даже если до этого им были присвоены значения и заданы ограничения на значения переменных; series – разложение в ряд по заданным переменным; float – преобразование в формат чисел с плавающей точкой; parfac – разложение на элементарные дроби; coeffs – получение коэффициентов полинома; fourier – прямое преобразование Фурье; 1ар1асе – прямое преобразование Лапласа; ztrans – прямое Z-преобразование; invfourier – обратное преобразование Фурье; invlaplace – обратное преобразование Лапласа; invztrans – обратное Z-преобразование; МТ – транспонирование матрицы; М-1 – инвертирование матрицы; |М| – вычисление детерминанта матрицы; Modifier – модифицированные команды: • assume – вводное слово для приведенных ниже определений; • real – для var=real означает вещественное значение переменной var; • RealRange для var=RealRange(a,b) означает принадлежность вещественной переменной var к интервалу [а,b]; • trig – задает направление тригонометрических преобразований. В современных версиях пакета директивы охватывают все возможные символьные преобразования и прямо указывают на выполняемые действия. При этом их стало даже больше, чем команд меню Symbolics. Использование операторов символьного вывода имеет несколько существенных преимуществ: в математических выражениях разрешено использовать функции пользователя; можно организовывать цепочки символьных преобразований; 48
предоставляется возможность наглядного отображения исходных данных и результатов.
f (x) := e
x
f (x) series , x , 4 → 1 + x +
1 2 1 3 ⋅x + ⋅x 2 6
9.3.3. Вычисление пределов Пределом функции f(x) называют то её значение b, к которому функция неограниченно приближается в точке x=a (предел в точке) или слева либо справа от неё. Предполагается, что функция определена на некотором промежутке, включающем точку x=a и во всех точках, близких к ней слева и справа. Пределом может быть число, математическое выражение и положительная или отрицательная бесконечность.
lim
x→0
sin( x) x
1
→1
0.5
sin ( x)
sin(x) f (x) := x
x 10
lim f ( x) → 1
0
10
0.5
x→0
x
1 s (x) := x−2
10
lim s (x) → ∞ + x→2 lim s (x) → −∞ − x→2
5 s ( x)
10
0
10
5 10
Рис. 5. Вычисление пределов Для вычисления пределов используется оператор limit, три варианта шаблона которого имеются на наборной панели Calculus.
49
Заполнив поля шаблона предела, следует применить операцию символьного вывода . 9.3.4. Специальные функции Специальные функции часто входят в ответы при интегрировании, суммировании и решении уравнений. Они не принадлежат к числу встроенных функций MathCad и поэтому не могут быть вычислены непосредственно с помощью знака =. Чтобы найти численное значение результата, содержащего такую функцию, нужно вычислить значение выражения, с помощью которого определяется специальная функция. К таким функциям относятся интегральный синус Si(x) и косинус Ci(x), «пси»функция Psi(x) и её производные Psi(n,x), интегралы Френеля FresnelC(x), FresnelS(x) и другие. 9.3.5. Большие символьные результаты Если символьный результат оказывается слишком большим, чтобы его можно было включить в документ, то MathCad запрашивает разрешение на размещение результата в буфере обмена. Большие результаты получаются, например, при интегрировании и дифференцировании сложных выражений, при отыскании корней полиномов в символьном виде и при символьном вычислении функций, имеющих очень большие целые значения. Увидеть большой ответ, сохранённый в буфере обмена, можно, открыв окно буфера обмена Windows. Содержимое буфера обмена можно напечатать, поместив его в непосредственно рабочий документ или в текстовую область.
10. РЕШЕНИЕ УРАВНЕНИЙ И СИСТЕМ В системе MathCad уравнения и системы уравнений можно решать численными и аналитическими методами. Погрешность решения при использовании численных методов задаётся системной переменной TOL. 10.1. Решение уравнения с одной неизвестной Многие уравнения, например, трансцендентные, не имеют аналитического решения. Для численного решения нелинейных и трансцендентных уравнений с одной неизвестной 50
f(x) = 0 используется функция root. Эта функция возвращает значение x, при котором выражение в левой части уравнения равно нулю. Корень вычисляется методом итераций с точностью, заданной системной переменной TOL. Применение функции root требует задания начального приближения к корню. Если уравнение имеет несколько корней, то найденное решение будет зависеть от начального приближения. Для поиска второго корня первый исключается делением f(x) на (xx1). Для поиска следующего корня надо повторить процедуру деления f(x) на найденный корень. При поиске комплексного корня следует задать начальное приближение комплексным числом. Функцию root можно использовать в составе функции пользователя. В версии MathCad 2000 возможности функции root расширены. Теперь она может искать корень не только по заданному приближению (функция с двумя параметрами), но и в заданном интервале (функция с четырьмя параметрами). Такое применение функции root позволяет избежать получения корней, не представляющих интереса, и не требует задания начального значения корня: root(f(x),x), root(f(x),x, a, b), где f(x) – функция пользователя или выражение в левой части уравнения; x – переменная, относительно которой надо решить уравнение; [a, b] – интервал изоляции корня. 10.2. Поиск всех корней полинома Для определения корней многочлена (полинома) степени n используется функция polyroots(V). Эта функция возвращает вектор, содержащий все корни многочлена, коэффициенты которого задаются вектором V, имеющим длину n+1. При формировании вектора V коэффициенты полинома располагаются в порядке возрастания степеней. Корни полинома могут быть как вещественными, так и комплексными числами.
51
10.3. Решение систем нелинейных уравнений и неравенств При решении систем нелинейных уравнений организуется специальный вычислительный блок, использующий служебное слово Given и имеющий следующую структуру: начальные приближения Given уравнения ограничения операторы с функциями find или minerr Начальные условия определяют начальные значения искомых переменных и задаются с помощью оператора присваивания. Уравнения записываются с применением жирного знака равенства между левой и правой частями уравнений. Ограничения задаются в виде неравенств или равенств, которые должны удовлетворяться при решении системы уравнений. В некоторых задачах ограничения могут отсутствовать. При формировании ограничений используются логические операции: >, <, ≤, ≥, ≠, =. Функция find(v1, v2, .., vn) возвращает значение одной или ряда переменных, являющихся решением системы. Эта функция используется в тех случаях, когда решение системы уравнений реально существует. Функция minerr(v1, v2, .., vn) пытается найти максимальное приближение даже к несуществующему решению путём минимизации среднеквадратичной погрешности. Функцию minerr применяют для получения приближенного решения. Функции find и minerr могут использоваться для решения одного уравнения или системы. Число уравнений должно равняться числу неизвестных. Аргументы v1, v2,..,vn – это скалярные переменные, значения которых ищутся в блоке вычислений. Когда блок решения уравнений ищет одну неизвестную, функции возвращают скаляр. Если неизвестных несколько, то возвращается вектор, первым элементом которого является искомое значение переменной v1, вторым элементом – v2 и т. д. Пример решения системы уравнений приведён на рис.6. Если система имеет несколько решений, то найденные корни определяются указанными начальными приближениями. 52
Полученное решение подстановки.
обязательно
надо
3 ⋅ x − cos ( y)
Дана система уравнений
проверить
методом
0.9
sin( x − 0.6) − y 1.6 Чтобы воспользоваться блоком Given необходимо задать начальные приближения для корней. Отделим корни графически. Для этого перепишем уравнения в виде y ( x)
sin ( x − 0.6) − 1.6
0.9 + cos ( y)
x ( y)
3
Для построения двух кривых на одном графике, введём другое обозначение неизвестных для второго уравнениия y ( x) := sin ( x − 0.6) − 1.6
0.9 + cos ( y1) 3
x1 ( y1) :=
10 y ( x) y1
10
0
10
10 x , x1 ( y1)
Явно зададим изменение аргумента у1 для второго уравнения y1 := −3 , −2.95 .. 2 2 y ( x)
x := 0.16
10
0
y1
2
y := −2
4
Given sin ( x − 0.6) − y r := Find( x , y)
x , x1 ( y1)
1.6
3 ⋅ x − cos ( y)
0.9
⎛ 0.151 ⎞ ⎟ ⎝ −2.034 ⎠
r=⎜
53
10
Рис. 6. Пример решения системы нелинейных уравнений Вычислительный блок Given можно использовать как для численного, так и для аналитического решения уравнений и систем. 10.4. Решение систем линейных уравнений Решение системы линейных уравнений в матричной форме А⋅Х=В определяется соотношением Х = А-1 ⋅ В , где А – матрица коэффициентов; В – вектор свободных членов. Для решения системы линейных уравнений А⋅Х=В можно воспользоваться функцией lsolve(A,B), которая возвращает вектор Х. Если уравнений n, то размерность вектора В должна быть n, а матрицы А – n⋅n . 10.5. Символьное решение алгебраического уравнения Для решения уравнений с одной неизвестной можно использовать команду Symbolics|Variable|Solve или расширенный оператор символьного вывода с директивой Solve. Причем можно записывать уравнение с одной неизвестной в обычном виде, либо вводить только левую часть, так как в этом случае правая часть автоматически будет приравнена к нулю. ⎛ −4 ⎞ 4
3
2
x + 9 ⋅ x + 31 ⋅ x + 59 ⋅ x + 60
Корни x
⎜ ⎜ −3 ⎜ −1 + 2 ⋅ i ⎜ ⎝ −1 − 2 ⋅ i
⎟ ⎟ ⎟ ⎟ ⎠
При использовании команды символьного меню необходимо выделить переменную, относительно которой требуется решить уравнение. Если же применяется оператор символьного вывода, то имя искомой переменной записывается в поле ввода. MathCad пытается найти точное решение уравнения, выражающееся через рациональные числа и константы π, e, либо найти численное решение с высокой точностью. Корни уравнения выводятся в виде вектора. Если в уравнении присутствуют числа с десятичными дробями, то MathCad выведет 54
ответ в виде десятичных чисел, в противном случае будет предпринята попытка найти точное решение. Неравенства решаются точно таким же образом, за исключением того, что вместо жирного знака равенства (Ctrl+=) нужно использовать знаки неравенства >, <.
11. ОБРАБОТКА ДАННЫХ 11.1. Интерполяция В MathCad есть функции, реализующие два метода интерполяции: линейную и сплайновую. При кусочно-линейной интерполяции соседние точки данных соединяются отрезками прямых. Для малого числа узловых точек линейная интерполяция может оказаться слишком грубой. Гораздо лучшие результаты даёт сплайн-интерполяция. При использовании кубической сплайнинтерполяции на каждом промежутке функция представляется кубическим многочленом, проходящим через три смежные узловые точки. Коэффициенты кубического многочлена вычисляются так, чтобы обеспечить стыковку в узловых точках значений функций и её первых двух производных. Для решения задачи интерполяции должны быть заданы векторы vx, vy, определяющие узловые точки, и значение х. Функция linterp(vx,vy,x) возвращает оценку значения y в точке x, вычисленную методом линейной интерполяции. Элементы вектора vx должны идти в порядке возрастания, они соответствуют значениям х. Вектор vy одного размера с vx, его элементы соответствуют значениям y. Аргумент x – это значение переменной х, в которой нужно вычислить значение функции y. Предполагается, что x лежит в интервале изменения элементов vx. Функция interp(vs,vx,vy,x) возвращает получаемое в точке x значение по методу сплайнов. Вектор vs формируется одной из функций cspline(vx,vy), pspline(vx,vy) или lspline(vx,vy). Эти функции различаются ограничениями, накладываемыми на поведение сплайна на границах области. Вектор vs должен быть получен перед использованием функции interp. Двумерная кубическая сплайн-интерполяция выполняется функцией interp(vs,Mxy,Mz,v). В этом случае кубическими полиномами соединяются точки над узлами прямоугольной сетки, заданной матрицей Mxy. Массив 55
Mz содержит значения z, соответствующие узлам сетки, которая определена в Mxy. Вектор v содержит координаты x и y, для которых вычисляется значение z. Вектор vs есть результат, возвращаемый одной из функций cspline(Mxy,Mz), pspline(Mxy,Mz) или linsple(Mxy,Mz). 11.2. Регрессии Широко распространённой задачей обработки данных является представление их совокупности некоторой функцией y(x). Задача регрессии заключается в получении таких параметров функции y(x), чтобы она приближала набор исходных данных с наименьшей среднеквадратичной погрешностью. Наиболее простым и часто используемым методом является линейная регрессия, при которой функция y(x) имеет вид: y(x) = ах + b. Таким образом, построение линии регрессии сводится к нахождению прямой, наилучшим образом (в смысле наименьших квадратов) приближающей облако исходных данных, заданных векторами vx, vy. Для проведения линейной регрессии имеются функции slope(vx,vy) и intercept(vx,vy). Функция slope возвращает параметр а – тангенс угла наклона линии регрессии, а функция intercept возвращает параметр b – смещение по вертикали. Кроме того, в последние версии системы MathCad введена функция linfit(vx,vy,F) для выполнения линейной регрессии общего вида. В этом случае исходная совокупность точек приближается линейной комбинацией заданных функций F1(x), F2(x), ..., Fn(x), записанных в символьной форме: F(x, K1, K2, ..., Kn) = K1⋅ F1(x) + K2⋅ F2(x) + ..., + Kn⋅ Fn(x) . Функция linfit(vx,vy,F) возвращает вектор коэффициентов К, при которых линейная комбинация функций из F, которая даёт наилучшую аппроксимацию исходных данных. Для проведения одномерной и многомерной полиномиальной регрессии в MathCad используются функции regress и loess. Эти функции возвращают вектор vs, запрашиваемый функцией interp. При вызове функции regress(vx,vy,k) задаётся степень аппроксимирующего полинома k, а результатом является 56
вектор vs, содержащий коэффициенты полинома порядка k, который наилучшим образом приближает данные из vx и vy. Функция regress создаёт единственный приближающий полином, коэффициенты которого вычисляются по всей совокупности заданных точек. Иногда полезна функция loess(vx,vy,span), дающая локальные приближения отрезками полиномов второго порядка. Аргумент span>0 определяет, насколько большие наборы данных будут приближаться отдельными полиномами. Чем больше span, тем сильнее сказывается сглаживание данных. Рекомендуется задать начальное значение равным 0.75 . Найденный тем или иным способом вектор vs используется в функции interp(vs,vx,vy,x), которая возвращает оценку значения y, соответствующую заданному x. Для выполнения многомерной полиномиальной регрессии используются описанные функции в несколько иной форме: interp(vs,Mxy,vz,v), regress(Mxy,vz,k), loess(Mxy,vz,span). Отличие заключается в задании исходных данных: аргумент Mxy является матрицей размера 2⋅m, содержащей координаты точек (х, y); vz – это m-мерный вектор, состоящий из координат z, соответствующих m точкам, указанным в Mxy; v – вектор координат x и y точки, для которой находится z. 11.3. Сглаживание данных В MathCad имеется несколько функций для сглаживания данных различными методами. В названии этих функций присутствует слово smooth: medsmooth(vy,n) возвращает вектор из m элементов, полученный сглаживанием данных из vy скользящей медианой; параметр n задаёт ширину окна сглаживания, n должно быть нечётным числом, меньшим m; ksmooth(vx,vy,b) возвращает вектор ординат, вычисленных на основе распределения Гаусса; параметр b задаёт ширину окна сглаживания, b должно в несколько раз превышать интервал между точками по оси х; supsmooth(vx,vy) возвращает вектор сглаженных ординат, вычисленных на основе использования процедуры линейного сглаживания методом наименьших квадратов по правилу kближайших соседей с адаптивным выбором k. 57
12. ДИФФЕРЕНЦИАЛЬНЫЕ УРАВНЕНИЯ И СИСТЕМЫ 12.1. Методы решения Начиная с версии 5 в систему MathCad введены функции для решения дифференциальных уравнений и систем численными методами. Применение этих функций требует выполнения ряда вспомогательных операций и учёта особенностей каждой из них. Далее рассматривается решение обыкновенных дифференциальных уравнений (ОДУ), представленных в форме Коши. Решение обыкновенных дифференциальных уравнений существенно упростилось в MathCad 2000, так как появилась новая функция odesolve(x,b,[step]), которая используется в вычислительном блоке Given и позволяет записывать уравнения и начальные условия в привычном виде. Функция odesolve(x,b,[step]) возвращает решение дифференциального уравнения в виде функции. Уравнение должно быть линейным относительно наивысшей производной и количество начальных условий должно быть равно порядку ОДУ. Параметрами функции odesolve являются: x – переменная интегрирования, вещественного типа; b – конечное значение интервала интегрирования, вещественного типа; step – необязательный параметр, определяющий число шагов. Если этот параметр задан, то при поиске решения используется постоянный шаг. В противном случае применяется адаптивный метод. При записи уравнения можно применять символы дифференцирования d/dx или обозначение производной штрихом. Для задания штриха используется комбинация клавиш Ctrl+F7.
Given d y ( x) dx y (0)
sin( x) +
1
y ( x)
1
y := Odesolve ( x , 24 , 100 ) 58
При записи уравнения и условий следует использовать жирный знак равенства и в правой части обязательно указывать аргумент функции (x). Если написать просто y, а не y(x), то будет ошибка. Для формирования блока Given можно использовать предварительно определённую функцию пользователя, а также задавать переменными начальные условия, конечное значение интервала интегрирования и число шагов : f ( t , y ) := sin ( t) +
1
y
f(t,y) - правая часть уравнения
t0 := 0 y0 := 1
y0 - значение функции при t0=0
t1 := 8 ⋅ π Given
t1 - конечное значение интервала интегрирования
y' ( t)
f ( t , y ( t) )
Исходное уравнение
y ( t0 )
y0
Начальное условие
y := Odesolve ( t , t1 )
Вызов функции
Получив функцию, являющуюся решением уравнения, целесообразно построить её график (обычным способом). При желании можно вывести значения функции y, задав предварительно точки с помощью ранжированной переменной. Для решения обыкновенных дифференциальных уравнений используются функции: Bulstoer(y, x1, x2, n, D), bulstoer(y, x1, x2, acc, n, D, k, s), Rkadapt (y, x1, x2, n, D), rkadapt(y, x1, x2, acc, n, D, k, s), rkfixed(y, x1, x2, n, D), Stiffb(y, x1, x2, n, D, J), stiffb(y, x1, x2, acc, n, D, J, k, s) , Stiffr(y, x1, x2, n, D, J), stiffr(y, x1, x2, acc, n, D, J, k, s), где y – вектор начальных условий, x1 – начало интервала интегрирования, x2 – конец интервала интегрирования, n – число шагов интегрирования, 59
D – вектор, элементами которого являются правые части исходных уравнений, k – максимальное число промежуточных точек решения, s – минимально допустимый интервал между точками, acc – параметр, контролирующий точность решения. J – функция Якобиана. Начальные условия в векторе y должны соответствовать x1. С помощью параметра асс можно управлять точностью решения: при малых значениях асс делаются более мелкие шаги вдоль траектории, что повышает точность результата. Решение получается в виде матрицы, содержащей n+1 строк и p+1 столбцов. Количество столбцов на единицу больше, чем количество уравнений p или порядок уравнения. Начальный столбец матрицы по умолчанию имеет индекс 0 и содержит значения аргумента в точках, определяемых величинами x1, x2, n. Функции, имена которых начинаются с букв rk (rkadapt, Rkadapt, rkfixed), используют метод Рунге-Кутта. В функциях Bulstoer, bulstoer, Stiffb, stiffb реализован метод Булирша-Штёра. Функции Stiffr, stiffr находят корни по методу Розенброка. Метод Рунге-Кутта, реализованный в rkfixed, не является самым быстрым, но во многих случаях справляется с поставленной задачей. Однако в ряде задач целесообразно применить более сложные методы. Функции bulstoer, Stiffb, stiffb, Stiffr, stiffr позволяют находить решения жёстких систем дифференциальных уравнений. Если известно, что функции системы являются гладкими, то целесообразно применить метод Bulstoer, а для плавных функций рекомендуется метод Rkadapt. Функция Rkadapt изменяет шаг в зависимости от поведения производной: уменьшает там, где производная меняется быстро, и увеличивает там, где поведение производной можно считать спокойным. Таким образом, при поиске решения используется переменный шаг, но в матрице результата значения приводятся для равноотстоящих точек, заданных пользователем через параметры. В тех случаях, когда требуется найти решение только в конечной точке, то целесообразно применить одну из функций bulstoer, rkadapt, stiffb, stiffr, что позволит уменьшить объём выполняемых вычислений. 60
Иногда оказывается целесообразным попытаться решить уравнение или систему несколькими методами, чтобы выбрать более подходящий по точности или скорости получения результата. 12.2. Пример использования функции rkfixed Решим рассмотренное ранее уравнение с помощью функции rkfixed(y, x1, x2, n, D). Аналогичным образом для решения уравнения можно было применить функцию Rkadapt или Bulstoer. Последовательность действий: задаём количество шагов формируем вектор ic начальных условий. Так как уравнение одно, то вектор содержит один элемент задаём правые части D(t,Y). Вторым аргументом должен быть вектор искомой функции вызываем функцию rkfixed для получения матрицы решения выделяем первый столбец матрицы, который содержит значения независимой переменной выделяем второй столбец матрицы, который содержит значения функции-результата строим график N : = 100 ic0 := y0
D( t , Y) := sin( t) +
1
Y0
S := rkfixed( ic , t0 , t1 , N , D) T := S 〈0〉 Y := S 〈1〉 10
Y
5
0
5
10
15 T
61
20
25
Так как уравнение одно, то можно не формировать векторы. Если воспользоваться этим и, кроме того, задать интервал, количество шагов и начальное условие при вызове функции, то запись выполняемых действий получится более простой и логичной: f1 ( x , y) := sin ( x) +
1 y
F( x , s ) := f1 ( x , s 0 ) z := rkfixed( 1 , 0 , 24 , 100 , F) 〈〉 s := z 1
〈〉 arg := z 0
12.3. Решение системы ОДУ первого порядка Последовательность действий при решении системы такая же, как при решении уравнения. Исходная система уравнений должна быть представлена в форме Коши (слева производная, а справа – всё остальное). d dt
y0 ( t)
−8 ⋅ y0 ( t) + 8 ⋅ y1 ( t)
d y1 ( t) dt
30 ⋅ y0 ( t) + y1 ( t) − y0 ( t) ⋅ y2 ( t)
d
y0 ( t) ⋅ y1 ( t) −
dt
y2 ( t)
y0 ( 0)
−1
8 3
⋅ y2 ( t)
y1 ( 0)
0
y2 ( 0)
1
Количество уравнений и количество начальных условий должны быть равны числу неизвестных. Сформируем символьный вектор, элементами которого будут правые части уравнений, записанные для точки (t,Y), где t – аргумент, Y – вектор решения. Элементы вектора Y соответствуют отдельным неизвестным. 62
−8 ⋅ Y0 + 8 ⋅ Y1 ⎛ ⎜ ⎜ 30 ⋅ Y0 + Y1 − Y0 ⋅ Y2 D ( t , Y) := ⎜ 8 ⎜ Y0 ⋅ Y1 − ⋅ Y2 3 ⎝
⎞ ⎟ ⎟ ⎟ ⎟ ⎠
Определим параметры, необходимые для получения решения: t0, t1 – начальное и конечное значения независимой переменной; Y0 – вектор начальных условий; N – количество шагов (при необходимости) на интервале [t0,t1].
⎛⎜ −1 ⎟⎞ Y0 := ⎜ 0 ⎟ ⎜ 1 ⎟ ⎝ ⎠
t0 := 0
t1 := 10
N := 1000
Получим решение, вызвав одну из функций: rkfixed, Bulstoer, Rkadapt:
S := Rkadapt ( Y0 , t0 , t1 , N , D ) Выделим из матрицы решения S независимую переменную и функции y0, y1, y2, учитывая, что аргумент расположен в начальном столбце (номер 0), а функции в последующих столбцах. 〈〉 t := S 0
〈〉 y0 := S 1
〈〉 y1 := S 2
〈〉 y2 := S 3
По найденным t, y0, y1, y2 можно построить графики. Однако формирование этих векторов для построения графиков не является обязательным. Для примера создадим график по двум функциям решения, не выделяя их предварительно из матрицы (рис. 7.). Следует понимать, что при реализации рассмотренного метода решения системы дифференциальных уравнений, нет необходимости записывать систему и начальные условия в документе Mathcad, так как в вычислениях участвуют только параметры, заданные в используемой функции. 63
i := 0 .. 99 20 10
S i,1
40
20
0
20
10 20 30 S i,2
Рис.7. График решения дифференциального уравнения
13. ПРОГРАММНЫЕ БЛОКИ 13.1. Программирование в пакете MathCad Средства программирования включаются только в версии пакета MathCad Professional. Программные блоки выделяются в документе жирной вертикальной чертой и формируются с помощью операторов (инструкций). Путём применения программного блока можно реализовать алгоритм вычислений для получения результата. Кроме того, разрешено встраивать программные блоки в определение функций. Операторы приведены на панели Programming, которая выводится на экран командой View|Toolbars|Programming. Средства программирования системы MathCad обладают ограниченными возможностями. Однако они позволяют формировать функций с локальным определением переменных, создавать различные циклические структуры, в том числе вложенные, реализовывать по классическим алгоритмам итерации и рекурсии.
64
13.2. Программные операторы Для организации программы необходимы операторы, реализующие основные базовые структуры: следование, ветвление и цикл с предусловием. Структура «следование» реализована путём выполнения операторов в зависимости от их расположения в документе. Ветвления организуются операторами if и otherwise, а циклы – операторами while и for. Ниже приведён перечень программных операторов MathCad. Add Line – формирование программного блока; ← – локальное присваивание; if – условный оператор; for – оператор цикла с фиксированным числом повторений; while – оператор цикла с предусловием; otherwise – оператор иного выбора (иначе); break – оператор прерывания; continue – оператор продолжения; return – оператор возврата; оn error – оператор обработки ошибок. Оператор Add Line создает и при необходимости расширяет жирную вертикальную линию, которая ограничивает программный блок и справа от которой в шаблонах записываются операторы или выражения. Оператор ← (стрелка влево) используется для локального присваивания в пределах программного блока. Оператор условия if возвращает значение выражения, если условие имеет значение «истина» (выполняется). Сначала записывается выражение, затем директива if, после которой вводится условие: Выражение if Условие Совместно с условным оператором часто используется оператор «иначе» otherwise. Этот оператор позволяет задать действия для тех случаев, когда условие не выполняется (имеет значение «ложь»). Сначала следует записать выражение, а потом директиву otherwise. Например, функцию, которая имеет значение 0 при x<0 и значение 1 для всех других значений аргумента, можно определить следующим образом: f ( x) := 0 if x < 0 1 otherwise
65
Оператор for служит для организации циклов с заданным числом повторений. Он записывается в виде: for n ∈ Nmin.. Nmax sin( 0.01 ⋅ n) Сначала задаётся диапазон изменения управляющей переменной (в примере – n) от начального значения до конечного с шагом +1, а в нижнем поле ввода записывается выражение, которое составляет тело цикла. В определяемом выражении можно использовать управляющую переменную (параметр) цикла. Оператор while служит для организации циклов, которые повторяются до тех пор, пока выполняется заданное Условие. Условие можно задать отношением или просто выражением. Следует учитывать, что по сути оператор работает с выражением и повторяет тело цикла пока выражение положительно. Даже если записано отношение, оно преобразуется в арифметическое выражение, которое используется при принятии решения о завершении цикла. Этот оператор записывается в виде: while Условие В поле ввода, расположенное ниже, записывается выполняемое выражение. Оператор break вызывает прерывание работы программы. Чаще всего он используется совместно с оператороми if, while и for. Оператор continue используется для продолжения работы после прерывания программы. Обычно он применяется совместно с операторами задания циклов while и for, для возврата в начало цикла после прерывания. Оператор return прерывает выполнение программы и возвращает значение выражения, стоящего за словом return. Например, получение значения 0 при любом х < 0 обеспечивает оператор: return 0 if x<0 Оператор on error является оператором обработки ошибок, позволяющим создавать конструкции обработчиков ошибок. Этот оператор задается в виде: Выражение_1 on error Выражение_2 Если при выполнении Выражения_1 возникает ошибка, то выполняется Выражение_2. С оператором on error связана
66
функция error, которая обычно используется для возврата текстового сообщения об ошибке. Программный модуль в большинстве случаев является функцией, описанной с помощью программных операторов. После имени функции в круглых скобках через запятую указываются параметры, а затем записывается оператор присваивания. Параметры используются для передачи значений при вызове функции, по области действия они являются локальными, то есть видимыми только в пределах программного блока. Помимо локальных переменных в блоке можно использовать определённые в документе переменные, которые по отношению к программному блоку являются глобальными. В программном блоке разрешено применять любые операторы и функции входного языка системы. Чтобы начать формирование программного блока, следует применить оператор Add Line – появится вертикальная черта и два поля ввода. h( t) :=
s←1 while t s ← s⋅t
h ( 3) = 6
t←t−1 s
Далее по мере записи операторов можно расширять программный блок оператором Add Line с учётом необходимости создания вложенных структур. Этот оператор удлиняет или добавляет жирную вертикальную черту, в зависимости от формируемой области. Как принято в пакете, контроль фрагмента, по отношению к которому задаётся действие, осуществляется по уголку из синих линий. Функция возвращает значение, определяемое последней инструкцией (если не использован оператор return). Примеры создания и использования программных блоков приведены в Resource Center системы MathCad. Большое число «шпаргалок» Quiсksheets иллюстрирует применение различных операторов при формировании программных блоков.
67
ЗАДАНИЯ Задание 1. Действия с векторами и матрицами 1.1.Введите матрицы A, B, векторы V1, V2, V3 и константу t = 3. При формировании матриц и векторов используйте шаблоны. А 1 -1 -1 1 1 2 2 0 0 -1 1 4 1 1 -1 -1.5
1.17 2.13 0.32 0.56
B 2.13 0.32 0.56 0.82 -0.72 1.10 0.25 -0.42 0.16 1.10 -0.25 -0.44
V1 1 2 3 4
V2 11 -2 0.8 5
V3 0.1 0.2 13 2
1.2.Вычислите: определители матриц A и B, обратные матрицы A-1, B-1, транспонированные матрицы AТ, BТ и вектор V2Т, произведение вектора V1 на константу t, сумму векторов V1+V2+V3, скалярное V1⋅V2 и векторное V1×V2 произведение векторов, сумму элементов вектора V2, значение выражения (A – B Т )(2A+B). 1.3.Используя встроенные функции, найдите: количество строк матрицы A, количество столбцов матрицы B, длину вектора V1, последний элемент вектора V2, максимальный, минимальный и средний элементы матрицы А. 1.4.Сформируйте матрицы M1 и М2, размером 10×10. Элементы матрицы M1 задайте выражением 2⋅i+j (i – строка, j – столбец), а элементы матрицы М2 определите с помощью функции rnd, так, чтобы они не превышали значение 10. Сформируйте вектор-столбец V путём присвоения значений его элементам: t, 0, 2.5, t+3, 2⋅t, t2. Используя встроенные функции, сформируйте единичную матрицу размером 4×4 и матрицу, элементы главной диагонали которой равны элементам вектора V. 1.5.Выведите на экран М2 в виде матрицы, выделите из матрицы А первую строку, а из матрицы B – второй столбец. 1.6.Определите ln элементов вектора V3, первую норму матрицы А, след матрицы В, ранг матрицы М1. 1.7.Отсортируйте вектор V в порядке возрастания. Переставьте строки матрицы А так, чтобы отсортированным оказался последний столбец. Переставьте строки матрицы В так, чтобы отсортированной оказалась вторая строка. 1.8.Объедините матрицы А и В, так, чтобы В располагалась над А (функция stack) и объедините матрицу А с вектором V1 (функция augment). 68
1.9.Сохраните матрицу М2 в файле М.txt, а затем включите в документ Mathcad объект, созданный по файлу М.txt. Просмотрите объект. Выполнение этого пункта задания предполагает знакомство с темой «Данные файлового типа». Задание 2. Построение графиков на плоскости 2.1. Для заданной функции f(x) = 2x – lgx – 7 построить график и определить точку пересечения кривой с осью x. 2.2.Построить кривую, в соответствии с заданием, приведённым в таблице 3. В зависимости от варианта задания график строится в полярных координатах либо в декартовых (при параметрическом задании функции). При построении графика необходимо так подобрать значения аргумента, чтобы были видны все особенности кривой. При построении считать, что a, b, k, p, L, d – константы. В вариантах 20, 21, 22 принять a=1.5, b=2. В варианте 31 константами являются r, R и d. Таблица 3 Построение графиков на плоскости Вариант 1
Уравнение кривой
r
r
2 3
a ⋅ cos ( α ) + b a⋅e
r
kα
a ⋅ ( 1 + cos ( α ) ) −a ⋅ cos ( 2 ⋅ α ) r cos ( α ) 3 ⋅ a ⋅ cos ( α ) ⋅ sin( α )
r
4 5
r
6 7 8 9
k⋅α
x
3
cos ( α ) + sin( α ) r a ⋅ cos ( 3 ⋅ α ) r a ⋅ cos ( 2 ⋅ α )
a ⋅ cos ( t)
69
3
y
3
a ⋅ sin( t)
3
Продолжение таблицы 3 Вариант 10
(
)
4
t + 3⋅t+ 1 x sin ( 3 ⋅ t)
x
2⋅a
x
13
2
x
15
x
16
⎛ ⎝
sin⎜ t −
sin ( 3 ⋅ t)
(
21
y
)
(2 )
5 ⋅ sin( t)
3⋅t
3
1+t y
y y y
2
20
2
u⋅ 1 + u
y
2
x
19
3
t − 3⋅t+ 1 sin ( 5 ⋅ t) 2⋅a
π ⎞ ⎟ 4⎠
t +1 π ⎞ ⎛ 2 ⋅ sin⎜ 9 ⋅ t − ⎟ 2⎠ ⎝
x
4
y
3
1+ t
a⋅ t − 1
x
17
sin( t)
sin ( 4 ⋅ t)
(2 )
a⋅t⋅ t − 1 2
t +1
⎛ ⎝
3 ⋅ sin⎜ 7 ⋅ t +
⎛ ⎝
sin⎜ t −
π ⎞ ⎟ 4⎠
π ⎞ ⎟ 4⎠ 2
p ⋅ a − cos ( α ) ⋅ p ⋅ a − cos ( α ) ⋅ p ⋅ b
x
−a −p ⋅ ( a + b) ⋅ cos ( α ) ⋅ sin( α )
−a
70
)
2
3⋅t
x
14
3
1+ t
y y y
1+ u
(
a + 2⋅ t− t
y ( t)
1+t 3
12
18
3
a⋅ 2⋅ t+ t
x
11
Уравнение кривой
Окончание таблицы 3 Вариант
Уравнение кривой
p ⋅ ( a + b)
F
22
⋅ cos ( α )
a 2
sin( α ) − cos ( α )
ρ
23
3
3 ⋅ sin( α ) + cos ( α ) 2 ⋅ a ⋅ sin( β )
ρ
24
x
2
3
1+ u
27 28 29
3⋅u + 1
⋅L
3
1+ u
(
2
) ⋅L
u⋅ u − 1
y
2
3⋅u + 1
a
ρ
+b cos ( ψ ) x a + b ⋅ cos ( α ) y a ⋅ tg ( α ) + b ⋅ sin( α ) x k ⋅ ( α − sin( α ) ) y k ⋅ ( 1 − cos ( α ) ) α
30
ρ x
31
32
u −1 2
2
3⋅a⋅u
y
2
26
3
cos ( β )
3⋅a⋅u
x
25
2
y
x
k⋅3
2⋅π
⎛R + r ⋅α⎞ ⎟ ⎝ r ⎠ ⎛R + r ⋅α⎞ ( R + r) ⋅ sin( α ) − d ⋅ sin⎜ ⎟ ⎝ r ⎠
( R + r) ⋅ cos ( α ) − d ⋅ cos ⎜
R 3⋅r k ⋅ α − d ⋅ sin( α )
71
d> r y k − d ⋅ cos ( α )
Задание 3. Выполнение вычислений 3.1.Для заданной функции f(x) = 2x – lgx – 7 вычислить производную функции в точке x=1 и вычислить определённый интеграл в пределах от 1.65 до 2.75. 3.2.Вычислить значения полинома p(x) = x4 + 2x3 – 3x2 + x – 2 для значений аргумента от 0.05 до 2.00 с шагом 0.15. Задание 4. Построение 3D графиков 4.1.Познакомиться с работой мастера по построению 3D – графиков и с его помощью построить график функции f(x,y) = sin (0.1(x2+y2)). 4.2.Построить график поверхности f(x,y) = cos(x⋅y) упрощённым методом и с использованием матрицы аппликат. 4.3.Построить две соприкасающиеся поверхности: z1(x,y) = x2 + y2 – 20 и z2(x,y) = –(x2+y2) + 20. 4.4.Освоить приёмы изменения типа и форматирования графика. Изменить тип графика, построенного в пункте 1. 4.5.Ознакомиться с поверхностями, приведёнными в Ресурсцентре системы Mathcad. Выполнить команду Help|Resource Center, выбрать Quicksheets, затем Gallery of Curves and Surfaces и перейти к просмотру Surfaces and Curves in Space. Задание 5. Символьные вычисления Для выполнения символьных вычислений следует предварительно скопировать заготовки из файлов, расположенных в папке Шаблоны. При выполнении действий через меню необходимо выбрать способ отображения результата и обязательно пояснять выполняемые действия комментариями. Задание 6. Численное решение уравнений и систем 6.1.Используя функцию root, решить уравнение 2x–lgx–7 = 0. В качестве начального приближения к корню принять значение, полученное при выполнении задания 2.1. 6.2.Используя функцию polyroots, найти все корни уравнения x4 –10x3 +16x+5=0. 6.3.Решить систему нелинейных уравнений. Вариант задания выбирается из таблицы 4. Необходимые для решения системы уравнений начальные приближения корней следует определить 72
графически. Для этого надо на одном графике построить по уравнениям системы две кривые и найти координату их точки пересечения. Решение системы выполняется с использованием вычислительного блока Given. 6.4.Решить систему линейных уравнений методом обратной матрицы и с помощью функции lsolve: 15.7 x1 + 6.6 x2 – 5.7 x3 + 11.5 x4 = - 2.4 8.8 x1 – 6.7 x2 + 5.5 x3 – 4.5 x4 = 5.6 6.3 x1 – 5.7 x2 – 23.4 x3 + 6.6 x4 = 7.7 14.3 x1 + 8.7 x2 – 15.7 x3 – 5.8 x4 = 23.4 Найденные в пунктах 6.1 – 6.3 решения следует проверить методом подстановки. 6.5. Выполнить анализ функции −
x 2 − x
x ⋅e
10
F( x) 2 + 0.05 ⋅ x + e − 2⋅e Построить график, найти корни и точки экстремумов. Таблица 4 Системы уравнений Вариант
Уравнение 1
Уравнение 2
1
sin (x+1)–y=1.2
2x+cos y=2
2
cos (x–1)+y=0.5
x–cos y=3
3
sin x+2y=2
cos (y–1)+x=0.7
4
cos x+y=1.5
2x–sin (y–0.5)=1
5
sin (x+0.5)–y=1
cos (y–1)+x=0.7
6
cos(x+0.5)+y=0.8
sin y–2x=1.6
7
sin (x–l)=1.3–y
x–sin (y+1)=0.8
8
2y–cos (x+1)=0
x+sin y=–0.4
9
cos (x+0.5)–y=2
sin у–2x=1
73
Окончание таблицы 4 Вариант
Уравнение 1
Уравнение 2
10
sin (x+2)–y=1.5
x+cos (y–2)=0.5
11
sin (y+1)–x=1.2
2y+cos x=2
12
cos (y–1)+x=0.5
y–cos x=3
13
sin y + 2x=2
cos (x–1)+y=0.7
14
cos y+x=1.5
2y–sin (x–0.5)=1
15
sin (y+0.5)–x=1
cos (x–2)+y=0
16
cos(y+0.5)+x=0.8
sin x–2y=1.6
17
sin (y–1)+x=1.3
y–sin (x+1)=0.8
18
2x–cos (y +1)=0
y+sin x=–0.4
19
cos (y+0.5) – x=2
sin x–2y=1
20
sin (y+2)–x=1.5
y+cos (x–2)=0.5
21
sin (x+1)–y=1
2x+cos y=2
22
cos (x–1)+y=0.8
x–cos y=2
23
sin x+2y=1.6
cos (y–1)+x=1
24
cos x+y=1.2
2x–sin (y–0.5)=2
25
sin (x+0.5)–y=1.2
соs (y–2)+x=0
26
cos (x + 0.5)+y=1
sin y–2x=2
27
sin (x–1)+y=1.5
x–sin (y+1)=1
28
sin (y+1)–x=1
2y + cos x = 2
29
cos (y–1)+x=0.8
y–cos x=2
30
cos (x–1)+y=1
sin y+2x=1.6
74
Задание 7. Решение дифференциальных уравнений и систем 7.1.Решить ОДУ, используя функцию odesolve и одну из функций, возвращающих решение в виде матрицы: Bulstoer, Rkadapt, rkfixed. Исходные данные приведены в таблице 5. 7.2.Решить систему двух дифференциальных уравнений для заданных начальных условий:
d y1 y2 dx d y2 dx
x 0.2
⎛ y1 − y2⎞ ⋅ 1 − y1 ⎜ ⎟ ⎝x ⎠ x
y1 0.09950
y2 0.49235
Таблица 5 Дифференциальное уравнение Вар.
Уравнение 2
а
в
y0
1
y′=0.133(x + sin 2x)+0.872y
0.2
1.2
0.25
2
y′=0.215(x2+cos1.5x)+1.283y
0.2
1.2
0.25
3
y′=0.158(x2+sin 0.8x)+1.164y
0.2
1.2
0.25
4
y′=0.173(x2+cos0.7x)+0.754y
0.2
1.2
0.25
5
y′=0.221(x2+sin 1.2x)+0.452y
0.2
1.2
0.25
6
y′=0.163(x2+cos0.4x)+0.635y
0.2
1.2
0.25
7
y′=0.218(x2+sin 1.6x)+0.718y
0.2
1.2
0.25
8
y′=0.145(x2+cos0.5x)+0.842y
0.2
1.2
0.25
9
y′=0.213(x2+sin 1.8x)+0.368y
0.2
1.2
0.25
10
y′=0.127(x2+cos0.6x)+0.573y
0.2
1.2
0.25
11
y′=1 + 0.2ysin x – y2
0
1
0
12
y′=cos (x +y) +0.5(x – y)
0
1
0
75
Окончание таблицы 5 Вар.
Уравнение
а
в
y0
13
y′=(1 – y2)cos x + 0.6y
0
1
0
14
y′=1 + 0.4ysin x – 1.5y2
0
1
0
15
y′=cos (1.5x + y) + (x – y)
0
1
0
16
y′=0.6sin x – 1.25y2 –1
0
1
0
17
y′=cos (2x + y) + 1.5(x – y)
0
1
0
18
y′=1 + 0.8ysin x – 2y2
0
1
0
19
y′=cos (1.5x+y) + 1.5(x–y)
0
1
0
20
y′=1+(1–x)sin y – (2+x)y
0
1
0
21
y′=x + y2
0
1
0.5
22
y′=2x + y2
0
1
0.3
23
y′=0.2x + y2
0
1
0.1
24
y′=x2 + 2y
0
1
0.1
25
y′=x2 + y2
0
1
0.7
26
y′=2x + 0.1y2
0
1
0.2
27
y′=x2 + xy
0
1
0.2
28
y′=x2 + y
0
1
0.4
29
y′=xy + y2
0
1
0.6
30
2
0
1
0.2
y′=x + 0.2y
2
Задание 8. Интерполяция Найти значения функции для значений аргумента x1, x2, x3, x4, если функция Y задана в равноотстоящих узлах X. При решении задачи использовать линейную и сплайн-интерполяцию. Исходные данные приведены в таблице 6. 76
Таблица 6 Табличное задание функции X 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75
Y x1 0.860708 0.1535 0.818731 0.778801 0.740818 0.704688 0.6700320 0.637628 0.606531 0.576950 0.548812 0.522046 0.496585 0.472236
x2 0.7250
x3 0.6730
x4 0.100
БИБЛИОГРАФИЧЕСКИЙ СПИСОК 1. Воробьёва Г.Н., Данилова А.Н. Практикум по вычислительной математике: Учеб. пособие. – М.: Высш. шк., 1990. – 208 с. 2. Дьяконов В.П. MathCad 2000: учебный курс. – СПб: Питер, 2000. – 592 с. 3. Дьяконов В.П. Справочник по MathCad PLUS 7.0 PRO. – М.: СК Пресс, 1998.– 352 с.
4. Очков В.Ф. MathCad 6.0 для студентов и инженеров. – М.: Компьютер Пресс, 1996. – 238 с. 5. Информатика. Базовый курс/ Симонович С.В. и др. – Спб.: Питер, 2002. – 640 с.
77
ОГЛАВЛЕНИЕ ВВЕДЕНИЕ .............................................................................................. 3 1. НАЗНАЧЕНИЕ И ВОЗМОЖНОСТИ СИСТЕМЫ MATHCAD ...... 4 2. СОЗДАНИЕ И РЕДАКТИРОВАНИЕ ФОРМУЛ И ТЕКСТА.......... 5 2.1.Курсор .................................................................................... 5 2.2. Шаблоны ............................................................................... 5 2.3. Текстовые области ............................................................... 6 2.4. Задание размерности............................................................ 8 3. ВХОДНОЙ ЯЗЫК СИСТЕМЫ ........................................................... 9 3.1. Общие сведения.................................................................... 9 3.2. Алфавит................................................................................. 9 3.3. Элементарные конструкции ................................................ 9 3.4. Выражения .......................................................................... 10 3.5. Операторы........................................................................... 11 3.6. Константы и переменные .................................................. 11 3.7. Функции .............................................................................. 13 4. РАБОТА С ДОКУМЕНТАМИ.......................................................... 14 5. ВЫПОЛНЕНИЕ ВЫЧИСЛЕНИЙ .................................................... 16 6. ВЕКТОРЫ И МАТРИЦЫ.................................................................. 17 6.1. Создание и отображение массивов................................... 17 6.2. Задание элементов массивов ............................................. 18 6.3. Векторные и матричные операции ................................... 19 6.4. Векторные и матричные функции .................................... 21 7. ПОСТРОЕНИЕ ГРАФИКОВ ............................................................ 24 7.1. Графические возможности ................................................ 24 7.2. Создание графиков на плоскости ..................................... 25 7.3. Построение трёхмерных графиков ................................... 29 7.4. Применение функций CreateMesh и CreateSpace ............ 33 7.5. Импорт изображений ......................................................... 34 8. ДАННЫЕ ФАЙЛОВОГО ТИПА ...................................................... 34 9. СИМВОЛЬНЫЕ ВЫЧИСЛЕНИЯ .................................................... 38 9.1. Организация символьных вычислений ............................ 38 9.2. Меню Symbolics ................................................................. 39 9.3. Система SmartMath ............................................................ 46 10. РЕШЕНИЕ УРАВНЕНИЙ И СИСТЕМ ......................................... 50 10.1. Решение уравнения с одной неизвестной ...................... 50 10.2. Поиск всех корней полинома .......................................... 51 78
10.3. Решение систем нелинейных уравнений и неравенств 52 10.4. Решение систем линейных уравнений ........................... 54 10.5. Символьное решение алгебраического уравнения ....... 54 11. ОБРАБОТКА ДАННЫХ ................................................................. 55 11.1. Интерполяция ................................................................... 55 11.2. Регрессии........................................................................... 56 11.3. Сглаживание данных ....................................................... 57 12. ДИФФЕРЕНЦИАЛЬНЫЕ УРАВНЕНИЯ И СИСТЕМЫ ............. 58 12.1. Методы решения .............................................................. 58 12.2. Пример использования функции rkfixed........................ 61 12.3. Решение системы ОДУ первого порядка ....................... 62 13. ПРОГРАММНЫЕ БЛОКИ .............................................................. 64 13.1. Программирование в пакете MathCad............................ 64 13.2. Программные операторы................................................. 65 ЗАДАНИЯ............................................................................................... 68 БИБЛИОГРАФИЧЕСКИЙ СПИСОК .................................................. 77
79
MathCad 2000 Методические рекомендации к самостоятельной работе для слушателей института повышения квалификации и студентов Составитель Шейкер Т.Д. Корректор Л.В. Яриш Техн. редактор Н.М. Белохонова Подписано в печать 6.06.03. Формат 60×84/16 Усл. печ. л. 4,65. Уч.-изд. л. 2,75. Тираж 100 экз. Заказ 130. Издательство ДВГТУ 690950, Владивосток, ул. Пушкинская, 10 Типография издательства ДВГТУ
690950, Владивосток, ул. Пушкинская, 10 80