Министерство образования Российской Федерации Дальневосточный государственный технический университет ( ДВПИ им. В.В. Ку...
47 downloads
1081 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, , 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