Лабораторная работа № 5 Изучение приемов работы с пакетом «MathCAD» в системном анализе 6 часов Цель работы: ознакомиться с назначением и возможностями системы MathCAD . 1 Теоретические сведения MathCad является математически ориентированной универсальной системой. С его помощью можно решать самые разные математические задачи и оформлять результаты расчетов на высоком профессиональном уровне. MathCAD, в отличие от большинства других современных математических при- ложений, построен в соответствии с принципом WYSIWYG ("What You See Is What You Get" - "что Вы видите, то и получите"). Поэтому он очень прост в использовании, в частности, из-за отсутствия необходимости сначала писать программу, реализующую те или иные математические расчеты, а потом запускать ее на исполнение. Вместо этого достаточно просто вводить математические выражения с помощью встроенного редактора формул, причем в виде, максимально приближенном к общепринятому, и тут же получать результат. Основные характеристики системы: — операторы и встроенные функции для следующих задач: а) решение нелинейных и алгебраических уравнений; б) решение систем уравнений; в) решение дифференциальных уравнений; г) решение дифференциальных уравнений в частных производных; д) операции с векторами и матрицами; е) нахождение собственных чисел и векторов; ж) аппроксимация и интерполяция таблично заданных функций; з) поиск экстремумов функций; и) проведение статистических и вероятностных расчетов; к) построение двумерных и трехмерных графиков функций; — возможность выполнять численные и символьные вычисления; — возможность выполнения операций со скалярными величинами, векторами и матрицами; — автоматический перевод одних единицы измерения в другие. — использование греческого алфавита в выражениях; — использование подпрограмм; — интеграция с САПР системами, использование результатов вычислений в качестве управляющих параметров. Mathcad имеет возможность расширения системы в соответствии с потребностями пользователя с помощью дополнительных библиотек и пакетов расширения. При необходимости возможно создание собственных функций на языке программирования C++ в виде DLL. Символьные вычисления Mathcad до версии 13.1 основаны на символьном ядре системы компьютерной алгебры Maple (MKM, Maple Kernel Mathsoft), а начиная с 14 версии используется символьное ядро MuPAD. Открытая архитектура приложения в сочетании с поддержкой технологий XV1L позволяют интегрировать Mathcad в инженерные приложения. Также возможно создание электронных книг (е-Воок). Состав документов Mathcad Электронные документы Mathcad могут включать следующие элементы: - математические выражения (Math Region), сформированные на входном языке с помощью встроенного редактора формул и описывающие расчетную часть; - текстовую часть (Text Region) с пояснениями и комментариями, формируемую встроенным текстовым редактором; - визуальные графические зависимости между переменными редактируются встроенным графическим редактором; - OLЕ объекты Windows (рисунки, электронные таблицы и др.). При начале ввода информации с клавиатуры система по умолчанию автоматически пытается интерпретировать данные как математическое выражение, создавая новый Math Region. Однако если синтаксис выражения не соответствует входному языку Mathcad, тогда оно преобразует введенные данные в текстовую об- 2 ласть. Математические выражения должны располагаться сверху вниз или справа налево в соответствии с алгоритмом выполняемого расчета. Для записи текстовой информации в определенном месте mathcad-документа необходимо сначала создать Text Region, введя символ кавычек ("). При этом черным прямоугольником обозначаться границы текстовой области, внутри которой вводится текст, поясняющий используемые математические выражения. Формат документов Mathcad. Документы системы Mathcad, начиная с версии 12, являются файлами с расширением xmcd (Mathcad XML документ), xmcdz (Mathcad Compressed XML документ), взамен устаревшего формата mcd (Mathcad Worksheet). Возможно использование шаблонов для создания Mathcad документов с расширением xmct (Mathcad XML Template). В Mathcad имеется ограниченная обратная совместимость современных mathcad-документов с предыдущими версиями. Система позволяет без ограничений открывать документы, созданные в старых версиях, но документ, созданный в среде Mathcad 15, можно сохранить в формате версии не ниже 11-й. Основы пользовательского интерфейса MathCad Под интерфейсом пользователя подразумевается совокупность средств графической оболочки MathCAD, обеспечивающих легкое управление системой как с клавиатуры, так и с помощью мыши. Под управлением понимается как просто набор необходимых символов, формул, текстовых комментарий и т. д., так и возможность полной подготовки в среде MathCAD документов (Worksheets) и электронных книг, с последующим их запуском в реальном времени. Пользовательский интерфейс системы создан таким образом, чтобы пользователь, имеющий элементарные навыки работы с Windows-приложениями, мог сразу начать работу с MathCad. Сразу после запуска система готова к созданию документа с необходимыми пользователю вычислениями. Окно редактирования получает название Untitled: N, где N – порядковый номер документа. Вначале окно редактирования пустое. В пустом окне редактирования можно увидеть два объекта: курсор ввода в виде красного крестика (визир) и вертикальную черту, отделяющую текущую страницу от соседней (справа). Курсор ввода устанавливается мышью. Для этого надо подвести указатель мыши в нужное место и щелкнуть левой кнопкой мыши (то есть быстро ее нажать и отпустить). Курсор ввода переместится в новое место. Курсор ввода намечает места ввода блоков текущего документа. Рисунок 1 – Окно системы MathCAD Меню Меню систем MathCad имеет следующие команды: • File – работа с файлами, сетью Интернет и электронной почтой; • Edit – редактирование документов; • View – изменение средств окна и включение/выключение элементов интерфейса; • Insert вставка объектов и их шаблонов (включая графику); • Format – изменение формата (параметров) объектов; • Tools – управлениt процессом вычислений. 3 В MathCAD существуют два режима вычислений: автоматический и ручной. В автоматическом режиме результаты вычислений полностью обновляются при каком-либо изменении в формуле. Tools – Calculate – Automatic Calculation (Автоматическое вычисление) - позволяет переключать режимы вычислений с автоматического на ручной и наоборот. Tools – Calculate (Вычислить) – Calculate now - При ручном режиме вычислений позволяет пересчитать видимую часть экрана. Calculate Worksheet (Просчитать документ) - Пересчет всего документа целиком. Перед началом вычислений начинающим изучение MathCAD желательно отключить режим автоматического вычисления. Кроме того, необходимо чаще сохранять создаваемый документ MathCAD. • Symbolics – выбор операций символьного процессора; • Window – управление окнами системы; • Help – работа со справочной базой данных о системе, центром ресурсов и электронными книгами. Панель инструментов для ввода математических объектов Панель инструментов для математических объектов появляется при выполнении команды View - Toolbars – Math и содержит девять кнопок палитр инструментов. Та или иная палитра появляется в окне редактирования документов при щелчке на соответствующей кнопке панели инструментов. С их помощью можно вводить в документы практически все известные математические символы и операторы. Понятие о входном языке общения и языке реализации MathCad Общение пользователя с системой MathCAD происходит на уровне так называемого входного языка, максимально приближенного к обычному языку описания математических задач. Тем не менее, это не означает, что и системе нет своего языка программирования. В действительности он есть, но это математически ориентированный особый язык программирования сверхвысокого уровня, используемый в основном как входной язык для диалога с системой. Входной язык MathCAD относится к интерпретируемому типу. Это означает, что, когда опознается какой-либо объект системы, тут же исполняются указанные в блоке операции. Объектами системы могут быть формульные и текстовые блоки. При этом формульные блоки могут иметь особые признаки – атрибуты, например, активности, пассивности и оптимизации Важно сразу учесть, что MathCAD выполняет действия над блоками в строго определенном порядке – блоки анализируются (оцениваются) слева направо и сверху вниз. Это означает, что блоки нельзя располагать в документе произвольно. Блоки, готовящие какиелибо операции, должны предшествовать блокам, которые выполняют эти операции. В подавляющем большинстве расчетных задач входной язык общения с MathCad позволяет задавать их решение в виде вводимых с помощью операторов и функций математических формул и указывать тип желаемых результатов (таблицы или графики). Специальные приемы введены лишь для задания циклического изменения переменных и создания так называемых ранжированных переменных, имеющих набор значений. По существу, входной язык системы – промежуточное звено между скрытым от пользователя языком документа с языком реализации системы. По мере того как пользователь создает (средствами текстового, формульного и графического редакторов) в окне редактирования объект (тексты, формулы, таблицы и графики), система сама составляет программу на некотором промежуточном языке связи, которая хранится в оперативной памяти до тех пор, пока не будет сохранена на диске в виде файла с расширением .хmcd. Однако важно подчеркнуть, что от пользователя не требуется знать языки программирования, достаточно освоить приближенный к естественному математическому языку входной язык системы. 2. Ввод данных. 4 Под данными в рамках настоящего раздела будем понимать вещественные и комплексные числа, символы, ранжированные переменные, матрицы и векторы. Ввод данных в MathCad достаточно прост и начинается с фиксации красным крестиком визира места ввода на экране монитора (на текущем листе документа). В это место непосредственно с клавиатуры (или с помощью математической палитры) могут быть введены любые элементы языка MathCAD: строчные и прописные латинские (или греческие) буквы, арабские цифры от 0 до 9, системные переменные, имена встроенных функций, тексты. По умолчанию система настроена на ввод математических выражений (математический регион документа). Для ввода текста необходимо активизацией команды Меню – Insert - TextReg или, нажав клавишу Shift+‘ (апостоф), перейти в режим текстового региона, который позволит осуществить ввод латинского или русского текста для пояснений хода вычислений. 1 Переменные. Для задания переменной нужно указать ее имя, которое называется идентификатором. Идентификатор начинается только с буквы, например: x, x1. Идентификатор не должен содержать пробелов. Идентификаторы не могут совпадать с именами встроенных или определенных пользователем функций. Идентификаторы в системе MathCAD имеют практически любую длину, в них входят любые латинские, русские и греческие буквы, а также цифры. В именах переменных прописные и строчные буквы считаются различными символами. Для локального определения переменной используется символ := Для глобального определения используется символ При арифметических вычислениях: := это оператор присвоения; = это команда вычислить. Значение переменной доступно правее и ниже ее определения. Пример Переменная может быть размерной, то есть характеризоваться как физическая величина. Для задания размерности переменной после ввода численного значения надо набрать знак умножения и физическую единицу измерения, которую можно выбрать на панели инструментов , либо с помощью команды Меню – Insert – Units. В процессе вычисления отслеживается размерность величин и выдается сообщение об ошибке в случае его нарушения. Пример: 5 s 150 km t 1.25 hr v s t v 33.333 ms -1 Системные переменные. В MathCAD содержится небольшая группа особых объектов, называемая системными переменными, имеющими предопределенные системой начальные значения. Объект Клавиши Назначение π Alt+Ctrl+P Число “пи” (3.14..) e ∞ E Основание натурального логарифма (2.71..) Сtrl+Ctrl+Z Системная бесконечность (10^307) % % Процент (0.01) Погрешность численных методов (0.001) TOL Нижняя граница индексации массивов(начало индексации элементов массивов) (0) ORIGIN PRNCOLWIDTH Ширина столбцов (в символах) для оператора WRITEPRN (8) PRNPRECISSION Число десятичных знаков, используемых оператором WRITEPRN (4) Переменная счетчика кадров при работе с анимационными рисунками (0) FRAME 2 Ранжированная переменная – это особый класс переменных, который в системе Mathcad заменяет циклические структуры. Эти переменные имеют ряд фиксированных численных значений, с определенным шагом меняющихся от начального значения до конечного. Для создания ранжированной переменной целочисленного типа вводится выражение имя_переменной : первое_значение;. последнее_значение Это выражение визуально отображается в виде: имя_переменной := первое _значение .. последнее_значение Символ «;» автоматически преобразуется в двоеточие «..». Если последнее значение больше первого, то шаг изменения переменной равен +1, в противном случае-1. Пример a 1 5 c 5 4.5 3 a c 1 -5 2 -4.5 3 -4 4 -3.5 5 -3 Индексированные переменные, образующиеся в результате задания ранжированных переменных, могут применяться в последующих формульных блоках. Однако при этом необходимо соблюдать соответствие результатов (конечных и промежуточных) векторному типу этих переменных. Необходимо помнить, что ранжированная переменная - это вектор. Обратите внимание, что в приведенном примере ранжированная переменная i принимает значения 1,2,3 и 4. А вектор g, определенный через ранжированную переменную i, содержит 5 элементов. Это связано с тем, что по умолчанию началом отсчета индексов в MathCAD является нуль. 6 Индексация элементов массивов. Порядковый номер элемента, который является его адресом, называется индексом. Нижняя граница индексации задается значением системной переменной ORIGIN, которая может принимать значение 0 или 1. Для смены начала индексации можно прямо в документе присвоить переменной ORIGIN соответствующее значение Встроенные функции и операторы среды Mathcad В стандартном комплекте среды Mathcad имеется несколько сотен встроенных функций, реализующих вычисления. При добавлении функции в выражение Mathcad удобно использовать мастер «Вставка функции», который вызывается нажатием кнопки «Вставить функцию» или выбором раздела Вставка/Функция... либо комбинацией клавиш Ctrl+E. Настройка параметров вычислений. Для настройки параметров вычислений необходимо выбрать команду Tools – Worksheet options. При этом на экране появится диалоговое окно (Свойства), содержащее следующие вкладки: 7 Built-In Variablеs (Встроенные переменные) - позволяет установить значения встроенных системных переменных, влияющих на точность вычислений и параметры некоторых функций системы. Calculation (Вычисление) - Эта вкладка содержит две опции, задающие режим автоматических вычислений и оптимизации выражений перед вычислением. Display (Отображение) - Позволяет форматировать вид символов, отображающих основные операторы системы (умножение, деление, локальное и глобальное присваивание и др.) Unit System (Система единиц) - Позволяет выбрать систему единиц для размерных величин: SI, MKS, CGS, Us и None (не используется ни одна из этих систем). Dimensions (Размерность) - Позволяет изменить формат размерных величин (на вкладке содержится их перечень). Для этого надо "включить" опцию Display Dimensions (Просмотр размерностей) Остановимся подробнее на изучении параметров вкладки Built-In Variabls (Встроенные переменные). Здесь можно изменить значения системных констант и переменных. К ним относятся: Array Origin (ORIGIN) - Начальное значение для индексов. Например, трехмерный вектор v при ORIGIN=0 (по умолчанию) имеет компоненты v0, v1, v2. Convergence Tolerance (TOL) - Допустимое отклонение. MathACD использует эту переменную при различных численных расчетах, таких как вычисление определенных интегралов и при решении уравнений с использованием функций root и polyroots. По умолчанию TOL=10-3. Наиболее быстрый способ локально изменить отображение точности в некоторой области Mathcadдокумента - переопределить значение системной переменной TOL. При этом сама точность расчета системы не изменяется и составляет до 15 знаков после запятой. Constraint Tolerance (CTOL) - Задает точность вычислений при использовании блока решений уравнений и систем. Блок начинается со слова Given и заканчивается словами Find, Minerr и др. По умолчанию CTOL=10-3 Seed value for random numbers - Определяет интервал от 0 до указанного в поле значения, из которого функция rnd(x) генерирует x случайных чисел. Возможность менять этот интервал позволяет получать разные последовательности случайных чисел. Presision (PRNPRESISION) - Задает точность числовых значений, которые помещаются в файл, создаваемый функцией WRITEPRN Column Width (PRNCOLWIDTH) - Задает ширину столбца (в символах) при создании файлов с помощью функции WRITEPRN Кнопка Restore Defaults (Васстановить по умолчанию) позволяет вернуть стандартно установленные в системе MathCAD параметры вычислений (те, что установлены по умолчанию), если внесенные вами изменения в системные переменные вас не устраивают. Значения переменных по умолчанию указаны справа от полей, предназначенных для ввода. Форматирование результатов вычислений MathCAD представляет результаты вычислений в определенном формате. Этот формат включает в себя, например, число знаков после запятой, Величину, начиная с которой используется экспоненциальное представление чисел, символ i или j для представления мномой единицы и многое другое. Чтобы задать формат представления результатов вычислений надо выбрать команду Result (Результат) меню Format (Формат). В результате на экране появится диалоговое окно Result Format, содержащее несколько вкладок. 8 1. На вкладке Number format (Формат числа) находятся : поле Number of decimal places (Число десятичных знаков), в котором задается количество отображаемых знаков после запятой (по умолчанию - 3). Опция Show trailing zeroz (Показывать конечные нули) -Если установлена эта опция, все числа будут отображаться с тем количеством знаков после запятой, которое указано в поле Number of decimal places, даже если без этого можно обойтись. В этом случае число 5 будет иметь вид 5.000, а число 0 - 0.000. Поле Exponential threshold (Порог экспоненты) - Здесь необходимо задать целое число n. Оно указывает, что чмсла x, для которых справедливы неравенства |x|<10 n и |x|>10 -n+1, представляются в экспоненциальной форме. Числу n можно присваивать значения от 0 до 15, по умолчанию n=3. MathCAD производит вычисления с точностью 15 знаков после запятой. Опция Show exponents in engeneering format (Показывать экспоненты в инженерном формате) всегда представляет число в экспоненциальном формате, если показатель степени больше 3 или меньше -3,выделяя при этом 3 целых и 3 десятичных разряда. В противном случае число отображается в явном виде, например, число 2233446 при включении опции будет выглядеть как 222.344·103. Список Format (Формат) - позволяет выбрать формат представления чисел. Выделим среди указанных в списке формат Decimal - при его выборе результат никогда не представляется в экспоненциальной форме. Остальные форматы могут представлять числа в экспоненциальной форме. Более подробно с видами форматов можно познакомиться, нажав кнопку Справка. 2. На вкладке Tolerance (Допуск) находятся поля Complex threshold (Комплексный порог) и Zero threshold (Нулевой порог). Целое число n, заданное в поле Complex threshold, указывает, что комплексные числа z, для которых справедливо неравенство |Re(z)/Im(z)|<10 -n, представляются как чисто мнимые. А числа, для которых |Im(z)/Re(z)|<10 -n - как действительные. При вычислениях MathCAD не пренебрегает даже незначительной мнимой. Числу n можно присваивать значения от 0 до 63, по умолчанию n=10. Целое число n, заданное в поле Zero threshold, указывает, что числа x, для которых справедливо неравенство |x|<10 -n, принимаются равными 0. Числу n можно присваивать значения от 0 до 307, по умолчанию n=15. Для комплексных чисел, у которых |Re(z)|<10 -n, действительная часть принимается равной нулю, то же самое справедливо и для мнимой части. Значение, заданное в поле Zero threshold, действительно для всего документа. 3. Вкладка Display Options содержит следующие поля и опции: 9 o Matrix display style (Стиль отображения матриц) - выпадающий список позволяет установить отображение матриц в стандартном математическом виде - Matrix, в виде таблицы - Table, либо предоставляет выбрать стиль прелставления матриц системе MathCAD - Automatic. При этом, если матрица содержит менее 10 строк и столбцов, она представляется в стандартном виде матрицы, в противном случае - в виде таблицы в полосами прокрутки. По умолчанию установлена опция Automatic. Опция Expand nested arrays (Развернуть вложенные массивы) - позволяет явно вывести элементы матрицы, представляющие, в свою очередь, матрицы. Поле Imaginary value (Мнимая единица) - позволяет определить символ, который будет использоваться для обозначения мнимой единицы (i или j). В поле списка Radix (Система) - можно выбрать десятичную, двоичную, восьмеричную или шестнадцатиричную систему счисления. 4. Вкладка Unit display (Отображение единиц измерения) содержит две опции: Format Units (Формат единиц) - включает отображение единиц измерения; Simplify units when possible - включает упрощение единиц измерения (если это возможно). Окно Result Format можно открыть двойным щелчком на числе, представляющем собой результат вычислений. Если вы хотите увидеть точное значение некоторого числа, не изменяя его формат, выделите это число и нажмите клавиши [Ctrl+Shift+N]. В строке состояния вы увидите данное число с 15 знаками после запятой. 3 Векторы, матрицы Для создания массива можно использовать команду меню Insert – Matrix или панель Matrix Матрицы и вектора можно конструировать и с помощью ранжированной переменной Пример 1) i 1 3 2 v i i 5 v 6 9 14 0 10 2) ORIGIN 1 i 1 3 2 vli i 5 i 6 vl 14 24 3) i 1 3 j i 2 3 4 m 3 4 5 4 5 6 mi j i j В системе Mathcad используются массивы двух типов: одномерные (векторы) и многомерные (матрицы). Начальное значение индексов задается значением системной переменной ORIGIN (по умолчанию ORIGIN:=0). Удобно перед началом работы с матрицами определять значение переменной ORIGIN равным 1, выполнять команду 0R1G1N:=1. Индексы могут иметь только целочисленные значения. В элементах матриц индексы отделяются друг от друга запятыми. Векторные матричные операторы. Для работы с векторами и матрицами система Math CAD содержит ряд операторов и функций. Введём следующие обозначения: для векторов – V, для матриц – M, и для скалярных величин – Z. Оператор Ввод Назначение оператора; V1+V2 V1+V2 Сложение двух векторов V1 и V2; V1-V2 V1-V2 Вычитание двух векторов V1и V2; -V -V Смена знака у элементов вектора V; -M -M Смена знака у элементов матрицы M; V-Z V-Z Вычитание из вектора V скаляра Z; Z*V, V*Z Z*V, V*Z Умножение вектора V на скаляр Z; Z*M, М*Z Z*M, М*Z Умножение матрицы M на вектор V; V1*V2 V1*V2 Умножение двух векторов V1 и V2; M*V M*V Умножение матрицы M на вектор V; M1*M2 M1*M2 Умножение двух матриц M1 и M2; V/Z V/Z Деление вектора V на скаляр Z; M/Z M/Z Деление матрицы M на скаляр Z; -1 M M^-1 Обращение матрицы M; n M M^n Возведение матрицы M в степень n; │M│ Вычисление определителя матрицы M; T V V Ctrl ! Транспонирование вектора V; T M M Ctrl ! Транспонирование матрицы M; V1xV2 V1 Ctrl* V2 Кросс – умножение двух векторов V1 и V2; V V” Получение комплексно – сопряженного вектора; M M” Получение комплексно – сопряженной матрицы; ?V Alt $ V Вычисление суммы элементов вектора V; V V Ctrl – Векторизация вектора V; M M Ctrl – Векторизация матрицы M; <n> M M Ctrl ^n Выделение n–го столбца матрицы M; Vn V[n Выделение n–го элемента вектора V; 11 Mm,n M [(m,n) Выделение элемента (m, n) матрицы M. Под понятием “векторизация” подразумевается одновременное проведение математических операций в их скалярном значении над всеми элементами вектора или матрицы, помеченными векторизации. Это можно понимать и как возможность параллельных вычислений. Если А и В – векторы, то А*В даёт скалярное произведение этих векторов. Но то же произведение под знаком векторизации создает новый вектор, каждый j-й элемент которого есть произведение j – х элементов векторов А и В. Векторизация позволяет использовать скалярные операторы и функции с массивами. Векторные и матричные функции. Существует также ряд встроенных векторных и матричных функций. Приведем векторные функции, входящие в систему Math CAD: lenght (V) возвращает длину вектора; last (V) возвращает индекс последнего элемента; max (V) возвращает максимальный по значению элемент; min (V) возвращает минимальный по значению элемент; Re (V) возвращает вектор действительных частей вектора с комплексными элементами; Im (V) возвращает вектор мнимых частей вектора с комплексными элементами; полностью асимметричный тензор размерности три. i, j, k должны быть целыми числами от 0 до 2 (или между >ORIGIN и ORIGIN+2, если ORIGIN≠0). Резульε (i, j, k) тат равен 0, если любые два аргумента равны, 1 – если три аргумента являются чётной перестановкой (0, 1, 2), и минус 1, если три аргумента являются перестановкой (0, 1, 2), кратной 2 и некратной 4. Для работы с матрицами также существует ряд встроенных функций. Они перечислены ниже: Объединяет в одну матрицы М1 и М2, имеющие одинаковое число строк Augment (M1, M2) (объединение идёт “бок о бок”); identity (n) Создаёт единичную квадратную матрицу размером n*n; Объединяет в одну матрицы М1 и М2, имеющие одинаковое число stack (M1, M2) столбцов, располагая М1 над М2; возвращает субматрицу, состоящую из всех элементов, содержащихся в submatrix(A,ir,jr,ic,jc) строках от ir по jr и столбцов с ic по jc (irJjr и icJjc); Создаёт диагональную матрицу, элемент главной диагонали которой – diag (V) вектор V; Матрицу, в которой (i,j)-й элемент содержит f(i,j), где i= 0, 1, …m и j=0, matrix (m,n,f) 1, …n; Возвращает матрицу действительных частей матрицы М с комплексными Re (M) элементами; Возвращает матрицу мнимых частей матрицы М с комплексными элеIm (M) ментами. Функции, возвращающие специальные характеристики матриц Специальные характеристики матриц возвращаются следующими функциями: cols (M) возвращает число столбцов матрицы М; rows (M) возвращает число строк матрицы М; rank (M) возвращает ранг матрицы М; tr (M) возвращает след (сумму диагональных элементов) квадратной матрицы М; mean (M) возвращает среднее значение элементов массива М; median (M) возвращает медиану элементов массива М; cond1 (M) возвращает число обусловленности матрицы, вычисленное в норме L1; cond2 (M) возвращает число обусловленности матрицы, вычисленное в норме L2; Возвращает число обусловленности матрицы, вычисленное в норме евклидова conde (M) пространства; 12 Возвращает число обусловленности матрицы, основанное на равномерной норме; Возвращает L1, норму матрицы М; Возвращает L2, норму матрицы М; Возвращает евклидову норму матрицы М; Возвращает неопределённую норму матрицы М. condi (M) norm1 (M) norm2 (M) norme (M) normi (M) Дополнительные матричные функции В профессиональные версии Math CAD включён ряд дополнительных матричных функций. Они перечислены ниже: eigenvals (M) возвращает вектор, содержащий собственные значения матрицы М; для указанной матрицы М и заданного собственного значения Z возвращает eisenvec (M,Z) принадлежащий этому собственному значению вектор; возвращает матрицу, столбцами которой являются собственные векторы матeigenvecs (M) рицы М (порядок расположения собственных векторов соответствует порядку собственных значений, возвращаемых функцией eigenvals); возвращает вектор обобщенных собственных значений v,, соответствующий genvals (M,N) решению уравнения M · x = vi – N - x (матрицы М и N должны быть вещественными); возвращает матрицу, столбцы которой содержат нормированные обобщенные genvals (M,N) собственные векторы; выполняет треугольное разложение матрицы М: P · M = L · U, L и U - соот+ lu (M) ветственно нижняя и верхняя треугольные матрицы. Все четыре матрицы квадратные, одного порядка; дает разложение матрицы A, A=Q · R, где Q - ортогональная матрица и > — + qr (A) верхняя треугольная матрица; дает сингулярное разложение матрицы А размером n·m: A=U · S ·VT где и ортогональные матрицы размером m·m и n·n соответственно, S - диагональ+ svd (A) ная матрица, на диагонали которой расположены сингулярные числа матрицы А; возвращает вектор, содержащий сингулярные числа матрицы А размером + svds (A) m·n, где m n; Egeninv (A) возвращает матрицу левую обратную к матрице А. L·A=E, где E – единичная матрица размером n·n, L – прямоугольная матрица размером n·m, A – прямоугольная матрица размером m·n. 2.5 Функции сортировки для векторов и матриц sort (V) сортировка элементов векторов в порядке возрастания их значений; reverse (V) перестановка элементов (после sort) в обратном порядке; csort (M,n) перестановка строк матрицы М таким образом, чтобы отсортированным оказался nй столбец; rsort (M,n) перестановка строк матрицы М таким образом, чтобы отсортированной оказалась n-ая строка. 13 Векторные и матричные операции 3. Построение двумерного графика одной функции Для построения графика функций достаточно выполнить следующие действия. 1. На панели Math щелкните на кнопке с изображением графика – на экране появится палитра графиков. 2. В палитре графиков щелкните на кнопке с изображением двумерного графика – на экране появится шаблон графика. 3. Введите в место ввода шаблона по оси X имя независимого аргумента – х. 4. Введите в место ввода шаблона по оси Y имя функции. 5. Щелкните вне пределов графика левой кнопкой мыши – график построен. Рисунок - Шаблон двухмерного графика 2D XY Plot 14 При заполнении шаблона сначала указываются переменные (или расчетные выражения), значения которых отображаются в осях X и Y. При этом следует указывать в скобках полную структуру ранжированной переменной. Можно не указывать диапазон изменения переменных (максимальные и минимальные значения), при этом будут автоматически отображаться на графике все значения. Для построения нескольких кривых на графике в месте ввода имени переменной Y через запятую указываются имена вводимых имен функций. Пример: Форматирование двухмерных графиков Построенный график можно форматировать. Для этого нужно выделить график и выбрать команду X-Y Plot из Format - Graph либо выполнить двойной щелчок левой кнопкой мыши по графику. В результате появится диалоговое окно Formatting Currently Selected X-Y Plot для задания параметров форматирования выбранного графика Как видно из рисунка, представленного ниже, диалоговое окно формата имеет четыре вкладки: 1. X-Y Axes (X-Y Оси) - форматирование осей графика; 2. Traces (Линии графиков) - форматирование линий графика; 3. Labels (Надписи) - задание надписей на графике; 4.Defaults (По умолчанию) - установка параметров по умолчанию. В Mathcad возможно построение следующих трехмерных графиков: - Surface Plot - график поверхности; - Contour Plot - линии уровня; - 3D Scatter Plot - точки данных; - 3D Bar Plot - столбцовая диаграмма; 15 - Vector Field plot - векторное поле. Вызов шаблона выполняется с помощью раздела Insert/Graph или палитры инструментов Graph. Возможно использование мастера построения 3D-графиков в разделе Insert/Graph/Plot Wizard. Для построения графика задается двухпараметрическая функция и две ранжированные переменные, описывающие изменение ее параметров. 4 Возможности символьного процессора MathCAD Системы компьютерной алгебры снабжаются специальным процессором для выполнения аналитических (символьных) вычислений. Его основой является ядро, хранящее всю совокупность формул и формульных преобразований, с помощью которых производятся аналитические вычисления. Чем больше этих формул в ядре, тем надежней работа символьного процессора и тем вероятнее, что поставленная задача будет решена, разумеется, если такое решение существует в принципе (что бывает далеко не всегда). Ядро символьного процессора системы MathCAD – несколько упрощенный вариант ядра известной системы символьной математики Maple V фирмы Waterloo Maple Software, у которой MathSoft (разработчик MathCAD) приобрела лицензию на его применение, благодаря чему MathCAD стала (начиная с версии 3.0) системой символьной математики. Прямой доступ к большинству операций ядра (возможный в системе Maple V R5/R6), для пользователя MathCAD, к сожалению, закрыт. К примеру, библиотечный модуль Maple V содержит около 100 функций линейной алгебры, тогда как в модуле MathCAD было только три важнейшие функции из этого раздела. Многие функции и правила преобразования в ядре используются лишь для получения промежуточных преобразований. Тем не менее это обстоятельство нельзя считать уж слишком большим недостатком системы MathCAD. Во-первых, потому, что ее назначение иное – прежде всего решение задач в численном виде, а во-вторых, потому, что система Maple V явно избыточна (в ее ядре около 2800 функций и правил преобразования) и ориентирована на пользователей с весьма далекими от средних потребностями в решении задач компьютерной алгебры (символьной математики) Символьные вычисления в MathCAD могут быть реализованы следующими способами: C использование команд подменю позиции Symbolics (Символика) главного меню. С использованием команд панели Symbolic, включаемой кнопкой на математической панели инструментов. (Начиная с версии MathCAd 4.0 для активных символьных вычислений применяется термин SMARTMATH, представляющий комбинацию слов smart и Mathcad, что в буквальном смысле означает умный Mathcad). Преобразование алгебраических выражений. Операторы символьного вывода При необходимости выполняемую операцию можно изменить с помощью ряда ключевых слов, помещенных на панели Symbolic, которая вызывается кнопкой тов Math. с панели инструмен- При вводе стрелки после выражения фактически (по умолчанию) над ним исполняется операция Simplify (Упростить). Но что подразумевается под этим, ясно далеко не всегда, даже несмотря на то, что многие символьные операции система выполняет вполне очевидно, например вычисление интеграла или производной в символьном виде. В Mathcad можно выполнить символьные преобразования алгебраических выражений, пред- 16 ставленные в нижеследующей таблице. Команда Функция Команды панели Symbolic (символы) Пример Символьное вычисление Символьное вычисление с ключевым словом Modifier Дополнительные модификаторы float Численное вычисление complex Комплексное вычисление assume Символьное вычисление с некоторыми предположениями solve Решение уравнения (системы уравнений) относительно переменной (переменных) (упростить) выполнить арифметические операции, привести подобные, сократить дроби, использовать simplify для упрощения основные тождества (формулы сокращенного умножения, тригонометрические тождества и т.п.); (подставить) заменить в алгебраиsubstitute ческом выражении букву или выражение другим выражением factor Разложение на множители convert to разложить рациональную дробь на partial простейшие дроби fraction expand (развернуть) раскрыть скобки, перемножить и привести подобные coeffs Определение коэффициентов полинома collect Группировка слагаемых по степеням переменной series Разложение в ряд Тейлора или Лорана parfrac Разложение на элементарные дроби assume — вводное слово для приведенных далее определений; real — для var=real означает вещественное значение var; RealRange — для var=RealRange(a,b) означает принадлежность вещественной var к интервалу [а,b]; trig — задает направление тригонометрических преобразований. 17 fourier Преобразование Фурье invfourier Обратное преобразование Фурье lарlасе Преобразование Лапласа invlaplace Обратное преобразование Лапласа ztrans Z-преобразование invztrans Обратное Z-преобразование MT Транспонирование матрицы M-1 Нахождение обратной матрицы |M| Нахождение определителя матрицы Особо следует отметить возможность выполнения численных вычислений с повышенной точностью – 20 знаков после запятой. Для перехода в такой режим вычислений нужно числовые константы в вычисляемых объектах задавать с обязательным указанием десятичной точки, например 10.0 или 3.0, а не 10 или 3. Этот признак является указанием на проведение вычислений такого типа. Если Mathcad не может выполнить требуемую операцию, то он выводит в качестве результата вычислений исходное выражение. Все приведенные вычисления выполнены в предположении, что в меню Math установлен автоматический режим вычислений и отключен режим оптимизации. Следует помнить, что Mathcad далеко не всегда преобразует выражение к самому простейшему виду. 4 Символьные вычисления в Mathcad В Mathcad символьные операции могут быть реализованы с использованием ресурсов панели Symbolic или одноименного пункта Главного меню. Возможны следующие варианты выполнения символьных операций: 1) с использованием специального символа «горизонтальная стрелка» —>, вызываемого нажатием клавиш Ctrl + . (точка) или вызовом из палитры Symbolic, в левой части которого записывается исходное выражение, а в правой отображается результат. Для сложных расчетов используется расширенный оператор символьного вывода, задаваемый нажатием клавиш Ctrl+Shift+. (точка), в левой части в первой позиции помещается исходное выражение, а во второй - директива символьных преобразований из палитры символьных операций; 2) с использованием вычислительного блока Given, под которым записываются исходные выражения и дополнительные операторы; 3) реализация символьного прямого расчета для записанного выражения с помощью раздела меню Symbolic/Evaluate/Symbolically (Shift+F9) с выводом результата под заданием. Чтобы символьные операции выполнялись, процессору необходимо указать, над каким выражением эти операции должны производиться, т. е. надо выделить выражение. Для ряда операций следует не только указать выражение, к которому они относятся, но и наметить переменную, относительно которой выполняется та или иная символьная операция. 18 5 Решение уравнений в MathCAD 1. Для решения одного уравнения с одной неизвестной в MathCAD можно использовать: Команду Solve из палитры Symbolic: Меню – Simbolics – Variable – Solve 4 3 2 Пример: решить уравнение x 2 x 4 x 2 x 5 = 0 19 1 1 4 3 2 x 2 x 4 x 2 x 5 solve x 1 2 i 1 2 i Использовать встроенную функцию root(f(x),x[,a,b]) категории Solving 4 3 2 f ( x) x 2 x 4 x 2 x 5 x 1.2 x root( f ( x) x) x 1 Использование функции root требует задание начального приближения. Что делать, когда функция root не сходится? Если после многих итераций Mathcad не может найти подходящего приближения, то появляется сообщение "отсутствует сходимость". Эта ошибка может быть вызвана следующими причинами: – уравнение не имеет корней; – корни уравнения расположены далеко от начального приближения; – выражение имеет локальные максимумы или минимумы между начальным приближением и корнями; – выражение имеет комплексный корень, но начальное приближение было вещественным (или наоборот). Обычно для установления причины ошибки достаточно подробно исследовать график f(х). Для нахождения корней многочлена используется встроенная функция polyroots(v) категории Solving, которая возвращает вектор, содержащий все корни многочлена степени n, коэффициенты которого находятся в векторе V a3 1 a2 2 a1 3 3 a0 5 2 g ( x) a3 x a2 x a1 x a0 v a1 a2 a3 a0 x polyroots ( v ) 3.344 x 0.672 1.021i 0.672 1.021i 2. Решение систем линейных уравнений А) матричным способом 7 1 4 A 6 6 1 4 1 5 det A 1 x A B 2 B 1 2 det 105 1 x 1 1 В) С помощью встроенной функции Find(x,y,…) категории Solving. Функция Find используется в решательном блоке GIVEN и возвращает значения x,y,…, удовлетворяющие ограничениям, равенствам и неравенствам, которые определены в блоке решения уравнений. 20 Задаем начальные (стартовые) значения для искомых переменных. Заключаем уравнения в блок решения, начинающийся ключевым словом Given и заканчивающийся ключевым словом Find(v1,v2,...vn). Знаки равенств и неравенств записываются с употреблением палитры Boolean (т.е. используется, например, жирное «равно») При символьном решении не надо вводить начальные значения, а после ключевого слова Find(v1,v2,...vn) вместо знака равенства следует ввести символьный знак равенства (при помощи комбинации [Ctrl+.] или соответствующей пиктограммы панели Evaluation). 3. Решение систем нелинейных уравнений Для решения системы нелинейных уравнений используются встроенные функции Find и Minerr из категории Solving. Между этими функциями (Find и Minerr) существуют принципиальные различия. Первая функция используется, когда решение реально существует (хотя и не является аналитическим). Вторая функция пытается найти максимальное приближение даже к несуществующему решению путем минимизации среднеквадратичной погрешности решения. При использовании функции Minerr для решения систем нелинейных уравнений надо проявлять известную осторожность и обязательно предусматривать проверку решений. Нередки случаи, когда решения могут оказаться ошибочными, чаще всего из-за того, что из нескольких корней система предлагает нереальный (или не представляющий интереса) корень. Полезно как можно точнее указывать начальные приближения к решению. 4. Структура решательного блока GIVEN Решательный блок GIVEN используется при употреблении функций Find и Minerr, Minimize и Maximize из категории Solving Вначале записываются начальные значения вычисляемых величин. Здесь же определяется функция, которую необходимо оптимизировать 21 Затем пишется директива GIVEN Затем записываются системы уравнений и неравенств, которые определяют систему ограничений. Необходимо помнить о том, что знаки равенств и неравенств записываются с употреблением палитры Boolean Затем определяется решение с применением функций Find и Minerr, Minimize и Max- imize Функция Minerr(x,y,…) возвращает значения неизвестных x,y,…для приближенного решения системы уравнений. Функция Minimize(f,var1,var2,….) возвращает значения var1,var2,…, которые обеспечивают функции f минимальное значение. Функция Maximize(f,var1,var2,….) возвращает значения var1,var2,…, которые обеспечивают функции f максимальное значение. 7 Исследование функций на экстремум и поиск корней уравнений. Пример. Найти наибольшее и наименьшее значения функции f(x) = 2х – 4x на отрезке [0, 1]; решить на этом отрезке уравнение 2х – 4х = 0. Порядок выполнения: 1. Установите автоматический режим вычислений. 2. Определите выражение для функции. 3. Постройте график функции. 4. Найдите наибольшее и наименьшее значения функции на отрезке. 5. Решите уравнение f(x) =0, используя функцию root, выбрав в качестве нулевого приближения сначала левую, а потом правую границу заданного отрезка. Ниже приведен фрагмент рабочего документа Mathcad с соответствующими вычислениями и графиком. Функция, рассмотренная в примере, непрерывна на отрезке и монотонно убывает на нем. Наибольшего значения функция достигает в левом конце отрезка, в точке х = 0, наименьшего в правом конце, в точке х = 1. Для вычисления нуля функции на отрезке используйте встроенную функцию root(f, х). Перед обращением к root(f, х) необходимо присвоить переменной х начальное значение. В приведенном фрагменте корень вычислялся дважды, в качестве начального приближения использованы сначала левый, а потом правый конец отрезка. Для того чтобы найти корень уравнения графически, используйте операцию вычисления координат точки на кривой. Более точные значения координат корня можно получить, увеличив график в окрестности корня, с помощью 22 операции Zoom пункта Graph меню Format: Для нахождения значений х, у, z, при которых функция f(x, у, z) достигает максимум либо минимум, можно использовать решающий блок Given-Find, только Find(x,y,z) заменить на Maximize(f,x,y,z) либо Minimize(f,x,y,z). Внутри блока могут быть заданы ограничения в виде равенств или неравенств. Перед вызовом решающего блока нужно задать начальные значения переменных. Пример. Найти максимум функции 23 Пример. Пример. 24 8 Вычисление производной функции Пример. Вычисление производной функции f(x): Производная функции f(x) в точке х=0 существует и равна 4. Символ приращения выбирается в панели греческого алфавита. Предел вычисляется средствами символьной математики пакета. Для того чтобы вычислить производную с использованием меню символьных операций, введите выражение дифференцируемой функции, выделите переменную х и щелкните по строке Differentiate в строке Variable меню Symbolics (Рисунок 35.). Производную функции можно найти по-другому. Щелкнув по кнопке , разверните па- нель инструментов Calculus, щелкните в ней по кнопке дифференцирования , введите имя функции и переменной в помеченных позициях, выделите выражение и нажмите на клавиатуре комбинацию клавиш <Shift>+<F9> . 9 Программные операторы Mathcad Возможности программирования сосредоточены в наборной панели программных элементов Programming (показана на рисунке), включаемой кнопкой на панели Math. Все эти MathCAD-программы с точки зрения программиста представляют собой подпрограммы-функции, которые могут возвращать в качестве результата число, вектор или матрицу. Функции могут вызывать сами себя (рекурсивно определенные функции) или другие подпрограммыфункции, определенные выше в том же MathCAD-документе. Ниже в таблице приведены операторы, находящиеся на кнопках панели программирования. Команды панели Symbolic (символы) Команда Функция Пример Добавляет новую строку под/над (зависит от выделения) Add Line текущей строкой. Присваивание значения локальной переменной. if otherwise Условный оператор (оператор ветвления)if; условие должно стоять после if, а оператор, который исполняется, если выполнено заданное условие,- перед if. Обозначает оператор, который должен быть исполнен, если условие оператора if не выполняется. 25 for Цикл for; за ключевым словом for следует переменнаясчетчик, а после символа принадлежности вводится промедуток изменения этой переменной. Внутренние операторы цикла сдвинуты немного вправо. Цикл while; внутренние операторы цикла будут исполняться до тех пор, пока будет истинным условие, следуwhile ющее за ключевым словом while. Пример показывает применение цикла для нахождения нулей функции методом касательных Ньютона. Служит для преждевременного завершения цикла, чтобы, break например, избежать зацикливания или слишком продолжительных вычислений. Служит для преждевременного завершения текущей итеcontinue рации цикла; сам цикл при этом продолжается. Преждевременное завершение программы; указанное в return ячейке значение будет возвращено. Если при вычислении выражения expr2 возникла ошибка, on error вычисляется выражение expr1. Примеры программ Пример. Вычислить значения кусочно-непрерывной функции f(x): где x [-2; 2]. Указания: 1. Введите левую часть определения функции f(x), символ присваивания := и удостоверьтесь в том, что появилось поле ввода: 2. Нажмите кнопку Add Line на панели программирования или клавишу ] . Появится вертикальный столбец с полями ввода для операторов программы: 3. Перейдите в верхнее поле ввода и щелкните по кнопке if на панели программирования, либо нажмите } : 4. Правое поле предназначено для логического выражения. Левое поле - для значения, которое будет иметь выражение, если логическое поле в правой части истинно: 5. Выделите оставшееся поле ввода и нажмите кнопку otherwise на панели программирования: 6. Введите в оставшееся поле выражение, которое программа должна вычислить в случае, если логическое выражение ложно: 26 Условный оператор if и оператор otherwise.Рассмотрим пример программного блока, вычисляющего факториал с использованием рекурсии В данном примере 1 возвращается, только если n=0 или n=1. Обратите внимание на задание некольких условий - со знаком плюс, каждое условие в скобках. В остальных случаях, учитывая формулу n!=n*(n-1)!, вызывается fakt(n-1) и умножается на n. При помощи функции error можно вывести сообщение об ошибке при неправильном вводе аргумента. Для демонстрации работы цикла for рассмотрим ту же задачу, но вычисление факториала осуществим при помощи цикла. Если n=0 или n=1, возвращается 1, в противном случае при помощи цикла for вычисляется произведение n!=1*2*3...*n. Вычисленное последним значение pвозвращается автоматически. В следующем примере при помощи алгоритма Евклида определяется наибольший общий делитель. Для реализации алгоритма используется цикл с ключевым словом while Прерывание цикла при помощи операторов break и continue. Оператор return .Первый пример релизация метода касательных Ньютона для определения нулей функции. На основе начального значения x вычисляется новое улучшенное значение x, расположенное ближе к искомому нулю функции. При этом итерации повторяются до тех пор, пока значение функции не станет меньше заданной точности (в примере 10-6). 27 При помощи оператора return организовано завершение программы в нужный момент. В данном примере если число итераций больше или равно 10, то происходит прерывание программы и выдается сообщение о том, что слишком много итераций. Здесь также отслеживаются случаи, когда производная в знаменателе близка к нулю и выдается об этом сообщение. Кроме ключевого слова break имеется ключевое слово continue с похожей функцией. В то время как break прерывает цикл и осуществляет переход к следующему за циклом оператору, continue прерывает выполнение только текущей итерации. В примере справа ключевое слово continue используется для выявления всех нулей функции на заданном интервале. При этом в примере производится разбиение интервала на n равных подинтервалов и ищутся те из них, на которых функия меняет знак. При обнаружении такого поинтервала вызывается функия, реализующая метод касательных Ньютона, с начальным значением, находящимся в середине подинтервала. Обратите внимание, по завершении работы программы выдается вектор значений. Ниже приводится программа, вычисляющая коэффициенты Фурье функции, причем в результате выдается матица значений: нулевая по счету строка содержит коэффициенты Аn, а первая - коэффициенты Bn. Для выделения этих коэффициентов выдавемая матрица транспонируется и из нее выбирается нулевой столбец для коэффициентов Аn, и первый - для Bn. 28 10 Неопределенный интеграл. Интегрирование заменой переменной Пример. Вычислите неопределенный интеграл и проверьте правильность вычислений; постройте графики семейств первообразных. Указание: 1. Установите автоматический режим вычислений. 2. Определите подынтегральную функцию как функцию переменной х. 3. Найдите первообразную, используя символьную математику пакета. 4. Определите первообразную как функцию переменной. 5. Найдите производную первообразной, используя символьную математику пакета. 6. Упростите производную от первообразной, сравните результат с подынтегральной функцией. 7. Постройте на одном графике изображения нескольких первообразных. Указание. Для того, чтобы вычислить неопределенный интеграл, щелкните по кнопке панели в , введите с клавиатуры в помеченных позициях подынтегральную функцию и перемен- ную интегрирования, выделите все выражение рамкой, затем щелкните по кнопке в пане- ли . Первообразная, в которой по умолчанию значение произвольной константы равно нулю, будет отображена справа от стрелки. Скопируйте вычисленное выражение и присвойте его функ- 29 ции переменной х (в приведенном фрагменте - это F(x)). Для того чтобы проверить первообразную, вычислите ее производную. Для этого скопируйте в буфер обмена выражение первообразной, щелкните по кнопке дифференцирования , вставьте из буфера обмена выражение первообразной, введите с клавиатуры переменную дифференцирования и дальше действуйте так же, как при символьном вычислении первообразной. Построить графики семейства первообразных можно, щелкнув по кнопке в панели . Далее следует ввести в помеченной позиции возле оси ординат, разделяя запятой, выражения для первообразных с различными значениями константы (в приведенном фрагменте это F(x) 5, 10, 15) и щелкнуть по рабочему документу вне поля графиков. Ниже приведен фрагмент рабочего документа Mathcad (с графиком семейства первообразных) Пример. Вычислить определенный интеграл: 11 Обыкновенные дифференциальные уравнения в среде пакета Mathcad Для решения систем обыкновенных дифференциальных уравнений (ОДУ) используются функции численного интегрирования Mathcad: - rkadapt(y0, хн, хк, acc, n, F, k, s) - адаптированный метод Рунге-Кутта с переменным шагом интегрирования и заданной точностью; - Rkadapt(y0, хн, хк, n, F) - адаптированный метод Рунге-Кутта с переменным шагом интегрирования; - rkfixed(y0, хн, хк, n, F) - метод Рунге-Кутта с постоянным шагом; - Bulstoer(y0, хн, хк, n, F) - метод Булирша-Штера; - bulstoer(y0, хн, хк, n, F, k, s ) - метод Булирша-Штера с переменным шагом и заданной погрешностью для «жестких» систем ОДУ; 30 - Stiffb(y0, хн, хк, n, F, J) - метод Булирша-Штера с переменным шагом и якобианом (матрицей Якоби) для «жестких» систем ОДУ; - stiffb(y0, хн, хк, асс, n, F, J, k, s) - метод Булирша-Штера с переменным шагом, заданной точностью и якобианом для «жестких» систем ОДУ; - Stiffr(y0 , хн, хк, n, F, J) - метод Розенброка с переменным шагом и якобианом для «жестких» систем ОДУ; - stiffr(y0, хн, хк, асс, n, F, J, k, s) - метод Розенброка с переменным шагом, заданной точностью и якобианом. Параметрами вышеприведенных функций являются: 1) F - функция правой части ОДУ или вектор-функция системы; 2) у0 - точка (или вектор для системы ОДУ) начальных условий; 3) хн - начало интервала поиска решения; 4) хк - конец интервала поиска решения; 5) n - число точек решения; 6) s - минимально допустимый интервал между точками решения; 7) k - максимальное число промежуточных точек решения; 8) асс - величина погрешности решения; 9) J - якобиан (матрица Якоби) системы ОДУ. Якобиан J (матрица Якоби) – это матрица коэффициентов перед вектором неизвестных в линейной системе обыкновенных дифференциальных уравнений в нормальной форме Коши. Матрица Якоби J квадратная, порядка n (n – порядок системы уравнений, т. е. количество уравнений в системе). К «жестким» относят системы дифференциальных уравнений, у которых число обусловленности µ матрицы Якоби, равное отношению максимального и минимального по модулю ее собственных значений, превышает 105. Жесткие системы дифференциальных уравнений требуют осторожного подхода к выбору метода интегрирования, контроля и анализа результатов решения, с тем, чтобы избежать катастрофического увеличения ошибки накопления, которая может привести к неустойчивости вычислительного процесса. Решение обыкновенного дифференциального уравнения (ОДУ). Обыкновенное дифференциальное уравнение имеет вид: где х - независимая переменная; у - зависимая переменная, для которой ищется решение у(х); f(x, у) - двухпараметрическая функция части без производной. Общая схема решения одного ОДУ включает следующие операции: 1) задание двухпараметрической функции, описывающей f(x,y); 2) определение значения переменной начальных условий; 3) определение переменных границ интервала поиска хн и хк; 4) при необходимости задание переменных точности: k, s и асc; 5) указание числа расчетных точек n; 6) определяется матрица решения на основе функции из п. 1; 7) отображается таблица результатов или сохраняется во внешний файл (первый столбец матрицы - переменная х, второй - у); 8) строится график на основании шаблона X-Y Plot, в котором по оси X задается первый столбец матрицы решения, а по Y - второй. На рисунке показан пример решения для нулевых начальных условий на интервале [0,1] для 10 точек расчета ОДУ вида 31 Рисунок - Пример решения ОДУ Решение систем обыкновенных дифференциальных уравнений в нормальной форме Коши Система ОДУ в среде Mathcad описывается двухпараметрической векторной функцией, у которой второй параметр является вектором, задаваемый шаблоном Ctrl + М. При этом удобно установить значение ORIGIN, равное 1. Кроме этого, следует описать начальные условия, как переменную-вектор. При отображении результатов можно на одном шаблоне графика отобразить несколько переменных. На рисунке показан пример решения системы ОДУ с нулевыми начальными условиями: 32 Рисунок - Пример решения системы ОДУ Работа с внешними файлами. Файловые данные системы Mathcad – это векторы и матрицы с элементами, которые могут записываться в виде текстовых файлов. Файлы данных в системе представляют собою запись матриц, благодаря чему возможен обмен данными между системой Mathcad и другими программами. В ходе создания файла система считывает значения элементов векторов и матриц поэлементно (для матриц слева направо и сверху вниз) и по ходу считывания преобразует числовые значения элементов в их символьные ASCII-коды. Существуют следующие файловые операции: 1) READ(имя_файла) – функция считывает данные из файла с указанным именем и возвращает значение – вектор. Используется для присваивания значений векторам, например: V: = READ(DATA). Элементы вектора V получают значения, считанные из файла с именем DATA; 2) WRITE(имя_файла) – записывает данные в файл и присваивает ему указанное имя. Данные могут порождаться математическим выражением, например: WRITE (имя_файла): = выражение ; 3) APPEND (имя_файла) – дописывает данные в конец уже существующего файла; 4) READPRN(имя_файла) – считывает данные в виде двумерного массива – матрицы. Функция READPRN возвращает матрицу, значения элементов которой однозначно связаны со значениями элементов файла; 5) WRITEPRN(имя_файла) – применяется для записи матричного выражения (или матрицы) в файл с указанным именем. Структура файла подобна матрице. 33 2 Задание Необходимо решить в Mathcad 17 задач в соответствии с вариантом. Задача 2.1. Определить функцию f(x), вычислить ее значение при х=2,9 и построить таблицу значений функции для х [2;12] с шагом 1. Построить график функции. Задача 2.2. Построить график функции f(x, y) и график линий равных уровней этой функции 1. f x, y x 2 y 3 2 xy 2 x 10 2. f ( x, y) x 2 y3 4x 2 y 5x 3. f ( x, y) x 2 y 2 4x 2 y 2 y 5 4. f ( x, y) x 2 4xy 4 y 2 5 y 8 5. f ( x, y) x 2 xy2 2 xy y 2 7 6. f ( x, y) x 2 y 2 10 x 2 y x 6 7. f ( x, y) x 4 2 x y 2 2 xy 5x 7 8. f ( x, y) 2 x 2 y 4 xy 5x 4 9. f ( x, y) x 2 y 2 2 x y 2 3 y 1 10. f ( x, y) x 2 2 y 2 6 x 2 y 5 x 4 11. f ( x, y) x 2 y 2 2 xy2 10 x 5 12. f ( x, y) x 4 2 y 2 10 xy2 8x 7 13. f ( x, y) 7 x 2 10 y 5 5x 2 y 2 9 14. f ( x, y) x 4 y 2 20 x 2 y 7 15. f ( x, y) x 2 y 2 2 x 2 y 2 10 16. f ( x, y) x 2 y 2 4 x 2 y 2 y 5 17. f ( x, y) x 2 2 x y 2 2 xy 5 x 18. f ( x, y) x 2 y 2 4 x 2 y 5 x 1 19. f ( x, y) x 2 y 2 10 x 2 y 6 20. f ( x, y) x 4 2 y 2 10 xy2 8 x 34 Задача 2.3. Упростить выражение: Задача 2.4. Раскрыть скобки и привести подобные в выражении: 35 Задача 2.5. Разложить на множители выражение: Задача 2.6. Разложить на простые дроби рациональную дробь: 36 Задача 2.7. Решить символьное уравнение: Задача 2.8. Решить систему уравнений: 37 Задача 2.9. Найдите (аналитически и графически) точки, в которых достигаются наибольшее и наименьшее значения заданной на отрезке непрерывной функции. Найдите нуль функции на заданном отрезке. (Решите уравнение f(x) =0.) 38 Задача 2.10. Найдите производную функции f(x). Вычислите значение производной в точке х=0, имея в виду, что f(0)=0. 39 Задача 2.11. Вычислить: 1) Даны действительные положительные числа x, y, z. Выяснить, существует ли треугольник с длинами сторон x, y, z и, если таковой существует, то выяснить является ли он остроугольным. 2) Даны действительные числа a, b, c, d. Если a b c d, то каждое число заменить наибольшим из них; если a > b > c > d, то числа оставить без изменения; в противном случае все числа заменить их квадратами. 3) Даны действительные положительные числа a, b, c, x, y. Выяснить, пройдет ли кирпич с ребрами a, b, c в прямоугольное отверстие со сторонами x и y. Просовывать кирпич в отверстие разрешается только так, чтобы каждое из его ребер было параллельно или перпендикулярно каждой из сторон отверстия. 4) Даны действительные положительные числа a, b, c, d. Выяснить, можно ли прямоугольник со сторонами a, b уместить внутри прямоугольника со сторонами c, d так, чтобы каждая из сторон прямоугольника была параллельна или перпендикулярна каждой стороне второго прямоугольника. 5) Даны действительные числа x, y. Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости (рисунок 1 а). 6) Даны действительные числа x, y. Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости (рисунок 1 б). 7) Даны действительные числа x, y. Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости (рисунок 1 в). 8) Даны действительные числа x, y. Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости (рисунок 1 г). 9) Даны действительные числа x, y. Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости (рисунок 1 д). 10) Даны действительные числа x, y. Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости (рисунок 1 е). 11) Даны действительные числа x, y. Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости (рисунок 1 ж). 12) Даны действительные числа x, y. Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости (рисунок 1 з). 13) Даны действительные числа x, y. Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости (рисунок 1 и). 14) Даны действительные числа x, y. Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости (рисунок 1 к). 15) Даны действительные числа x, y. Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости (рисунок 1 л). 16) Даны действительные числа x, y. Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости (рисунок 1 м). 17) Даны действительные числа x, y. Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости (рисунок 1 н). 18) Даны действительные числа x, y. Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости (рисунок 1 о). 19) Даны действительные числа x, y. Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости (рисунок 1 п). 20) Даны действительные числа x, y. Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости (рисунок 1 р). 21) Даны действительные числа x, y. Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости (рисунок 1 с). 40 Рисунок 1 41 Рисунок 1 42 Задача 2.12. Вычислите неопределенный интеграл графики семейства первообразных. и проверьте правильность вычислений, постройте 43 Задача 2.13. Вычислить определенный интеграл . Задача 2.14. Для матрицы А вычислить: обратную матрицу; транспонированную матрицу; определитель матрицы; сумму элементов матрицы; значение максимального и минимального элемента; произведение матрицы А на матрицу В. 1. ; 2. ; 44 3. ; 4. ; 5. ; 6. ; 7. ; 8. ; 9. ; 10. ; 11. ; 12. ; 45 Задача 2.15. 1.Вычислить сумму элементов ряда. 2.Вычислить произведение ряда. № Ряд 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Задача 2.16. Решить систему обыкновенных дифференциальных уравнений: dx1 dt 500 x1 1000 x 2 dx 2 400 x 795 x 1 2 dt Задача 2.17. Решить задачу из лабораторной работы № 1 в соответствии с заданным вариантом. 46 Содержание отчета Необходимо продемонстрировать с экрана в MathCAD решение семнадцати задач в соответствии с заданным вариантом.