Решение систем уравнений в MathCad
Для решения уравнений в Mathcad можно воспользоваться двумя способами. Эти способы были частично рассмотрены в разделе «Решение уравнений»:
Использование метода Given — Find:
В рабочем поле mathcad записываем слово Given. Это служебное слово. Оно подключает определенные программные модули mathcad для обработки исходных данных, необходимых для решения системы уравнений численными методами.
Затем указывается начальное приближение для искомых переменных. Это нужно для увеличения скорости и точности решения системы. Если начальное приближение не задать, то mathcad по умолчанию примет его равным нулю для всех переменных, при этом, если окажется, что система имеет несколько решений, то есть риск не определить все корни. Поэтому лучше всегда задавать приближение
Рис. 1. Ввод исходных данных в поле mathcad
Далее вводятся уравнения. Их можно записать в явном или неявном виде. Само уравнение набирается с клавиатуры вручную с использованием панели Calculator. Из этой панели можно взять основные математические операции: дроби, тригонометрию, факториалы и прочее. Уравнение нужно записывать с использованием логического символа «ровно». На панели Boolean он выделен жирным шрифтом (см. рис. 2)
Рис. 2. Панели Boolean и Calculator
Когда уравнения записаны вводится функция Find(x, y, z. ) (где х, y, z. — переменные). Это функция, которая возвращает результат решения системы. Значение функции Find() можно присвоить какой-либо переменной с помощью символа «:=» и использовать ее далее в расчетах (см. рис. 3). При решении систем уравнений в mathcad результатом всегда будет являтся матрица значений
Рис. 3. Ввод функции Find()
Для того чтобы увидеть результат решения системы уравнений, после Find(x, y, z. ) следует поставить символ «→» либо «=» из панели Evaluation (см. рис. 4).
Рис. 4. Панель «Evaluation»
В зависимости от сложности системы через определенное время MathCad выведет результат. На рис. 5 можно рассмотреть синтаксис и результат решения системы уравнений. Обратите внимание, что можно присваивать результат решения системы матричной переменной и можно работать с отдельными ее элементами
Рис. 5. Результат численного решения системы уравнений
Mathcad позволяет решать системы уравний в символьном виде. Обычно это полезно, когда требуется получить не точное значение переменных, а их выражения через константы. Например, если мы заменим все числовые константы на неизвестные параметры и решим уравнение относительно x, y и z, то результат выведется в символьном виде (см. рис. 6). Причем, обратите внимание, что в данном случае нам не нужно вводить начальное приближение и мы должны использовать символ «→» для вывода результата. Как правило, символьное решение получается громоздким, поэтому не всегда рекомендуется использовать этот метод
Рис. 6. Результат символьного решения системы уравнений
Использование метода Solve:
Как показывает практика, методом solve иногда удается решить системы уравнений, которые не поддаются решению с помощью функции Find()
Синтаксис следующий: на панели matrix нажимаем иконку Matrix or Vector и в появившемся окне указываем количество уравнений входящих в систему. В нашем примере их будет три (см. рис. 7)
Рис. 7. Создание матрицы для метода SOLVE
Заполняем систему, вводя последовательно все уравнения используя логический символ «ровно» из панели Boolean. Каждый элемент матрицы-столбца содержит одно уравнение (см. рис. 8)
Рис. 8. Ввод системы уравнений для метода SOLVE
Когда все уравнения введены, убедитесь, что курсор ввода находится в вашей матрице и затем нажмите кнопку «solve» из панели Symbolic. Появится служебное слово (функция) solve. Далее поставте запятую и введите последовательно все переменные, относительно которых необходимо решить систему уравнений (см. рис. 9)
Рис. 9. Синтаксис метода SOLVE для решения систем
Уведите курсор в свободное поле mathcad и дождитесь окончания решения системы. Обратите внимание, что мы не вводили начальные приближения. Даный метод их назначает автоматически. Обратите так же внимание, что для решения системы в символьном виде синтаксис аналогичен (см. рис. 10)
Рис. 10. Синтаксис метода SOLVE для решения систем
Как показывает моя инженерная практика, решение систем в символьном виде сопряжено с большими вычислительными трудностями. То есть иногда решение системы занимает массу времени, и в итоге mathcad выдает выражение для одной переменной непомерной длины, которое нельзя использовать. Поэтому рекомендуется прменять эту возможность лишь в крайних случаях и по возможности «помогать» mathcad, заменяя константы известными числовыми значениями

Donec eget ex magna. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fergiat. Pellentesque in mi eu massa lacinia malesuada et a elit. Donec urna ex, lacinia in purus ac, pretium pulvinar mauris. Curabitur sapien risus, commodo eget turpis at, elementum convallis elit. Pellentesque enim turpis, hendrerit tristique.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dapibus rutrum facilisis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Etiam tristique libero eu nibh porttitor fermentum. Nullam venenatis erat id vehicula viverra. Nunc ultrices eros ut ultricies condimentum. Mauris risus lacus, blandit sit amet venenatis non, bibendum vitae dolor. Nunc lorem mauris, fringilla in aliquam at, euismod in lectus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In non lorem sit amet elit placerat maximus. Pellentesque aliquam maximus risus, vel venenatis mauris vehicula hendrerit.
Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fersapien risus, commodo eget turpis at, elementum convallis elit. Pellentesque enim turpis, hendrerit tristique lorem ipsum dolor.
Форма обратной связи
Поделиться
Статистика
- © student-engineer.pro :: Semen Kuptcov
Как решать уравнения в mathcad
Задать начальное приближение для всех неизвестных, входящих в систему уравнений. Т.е. всем переменным x1, …, xn относительно которых решаются уравнения (уравнение), следует предварительно присвоить некоторые числовые значения, с которых и начинается поиск корня. Таким образом, присвоение начального значения требует априорной информации о примерном местонахождении корня
Принимая во внимание, что действительные корни уравнения f(x) = 0 — это точки пересечения графика функции f(x) с осью абсцисс, достаточно построить график функции f(x) и отметить точки пересечения f(x) с осью Ох, или отметить на оси Ох отрезки, содержащие по одному корню. Построение графиков часто удается сильно упростить, заменив уравнение f(x) = 0 равносильным ему уравнением: , где функции f1(x) и f2(x) — более простые, чем функция f(x). Тогда, построив графики функций у = f1(x) и у = f2(x), искомые корни получим как абсциссы точек пересечения этих графиков
Решение дифференциальных уравнений в среде MathCAD
В последнее время широкое распространение получили пакеты математических программ (или математические системы), которые можно использовать для различных вычислений и вычерчивания графиков (Mathematica, Derive, Statistica, MathCAD, MathLAB и др.). В этих системах процесс вычислений сильно автоматизирован, что позволяет экономить время и больше внимания уделять физическому смыслу получаемого результата. Выбор системы зависит от характера решаемых задач, от вкуса, от практики.
Система MathCAD -разработка фирмы MathSoft. Примерно каждый год появляется новая версия этой системы. В настоящий момент известна версия Mathcad 12.
Назначение системы: MathCAD — это интегрированная система программирования, ориентированная на проведение математических и инженерно-технических расчетов. MathCAD содержит текстовый редактор, вычислитель, символьный процессор и графический процессор.
Вид окна системы MathCAD аналогичен окнам приложений ОС семейства Windows (Word, Exel и др.).
1. Интерфейс пользователя в системе MathCAD. Интерфейс пользователя состоит из:
1. строки заголовка
2. строки главного меню
3. из строки состояния
которая включается командой View/Status Bar, и на которой отображается следующая информация (слева направо): контекстно-зависимая подсказка о готовящемся действии, режим вычислений (AUTO (автоматический) или Calc 9 (ручной)), режим Gaps Lock (CAP), режим Num Lock (NUM,), номер страницы, на которой находится курсор (Page 1);
4. из панелей Standard, Formatting, Math, Controls, Recources:
На каждой из панелей имеется характерная вешка перемещения в виде выпуклой вертикальной черты в начале каждой панели. С помощью нее можно переносить панели в любое место окна редактирования или «прилепить» ее к любой стороне окна.
Настройка состава панелей инструментов. Установить курсор над нужной панелью и правой кнопкой вызвать контекстное меню, из которого выбрать пункт Customize (Настроить), появится диалоговое окно. В левой панели этого окна расположены еще не добавленные пиктограммы, в правой – добавленные. По команде Add пиктограмма переходит в правое окно, а по команде Remove пиктограмма возвращается в левую панель.
Пиктограммы панели
дублируют основные команды главного меню. На панели
собраны команды, предназначенные для форматирования текста, такие как изменение стиля и шрифта текста, выравнивание, создание списков.

Панель служит для вставки в документ стандартных элементов управления интерфейса пользователя (флажков, переключателей, полей ввода и т.п.).

Панель служит для вызова ресурсов MathCAD (примеров, учебников, но только на английском языке).

Наибольший интерес для нас в системе MathCAD представляет математическая панель . Она содержит перемещаемые палитры математических знаков, которые служат для ввода практически всех известных математических символов и шаблонов операторов и функций
1. 
– служит для ввода арифметических операций и часто используемых простых функций. Эта палитра фактически дублирует обычный калькулятор.
2 
– содержит команды для построения семи типов графиков.
3. 
— для создания векторов и матриц и некоторые операции для работы с ними.
4. 
— для вставки операторов управления вычислениями и для ыставки пользовательских операторов..
5. 
— эта палитра содержит операции высшей математики (производные, интегралы, пределы и др.),а также знак бесконечности
.
6. 
— для вставки операций сравнения и логических операций Not
, And
, Or
7. 
— инструменты программирования системы MathCAD.
8. 
— палитра для набора греческих символов.
9. 
— содержит ключевые слова, управляющие символьными вычислениями.
10
эта панель вместе с панелью
содержит ключевые слова, используемые при символьных вычислениях. Здесь расположены команды, задающие тип символьной переменной.

2. Документ в системе MathCAD. Состоит из блоков, т.е. отдельных частей. В документе блоки имеют точку привязки, расположенную слева
Блоки м.б. трех типов — текстовые, вычислительные, графические. Текстовые блоки играют роль неисполняемых комментариев. Они служат лишь для повышения наглядности документа. Вычислительные блоки состоят из исполняемых математических выражений, например, формул, уравнений, равенств неравенств и т.д. Графические блоки также являются исполняемыми.
Блоки можно перемещать по документу и располагать в удобной для пользователя форме, но для правильного функционирования системы имеет большое значение правильный порядок расположения блоков. Например, если в некотором блоке содержатся операции, требующие данных из другого блока, то этот другой блок обязательно должен выполняться первым и располагаться перед использующим его блоком. Иная ситуация приведет к появлению ошибки. Сигнал ошибки имеет вид надписи, от которой отходит черта, указывающая место ошибки:

.
При манипуляциях с блоками на экране могут оставаться нежелательные искажения. Для их устранения следует использовать команду Refresch (обновить) меню View.
В документе MathCad эффективно решена проблема сквозной передачи данных от одного блока к другому, например, от одного математического выражения к другому, от него к таблицам, от таблиц к графикам и т.д. Поэтому изменение в любой формуле или в задании входных данных тут же ведет к пересчету задачи по всей цепи взаимодействия блоков (это не относится, однако к символьным операциям, реализуемым с помощью команд меню).
Размеры блоков устанавливаются автоматически в зависимости от числа входящих в них знаков, либо от заданных размеров графиков. Обычно границы блоков не видны, но можно установить подсвеченный режим показа блоков (команда View Regions)
Блоки не должны налагаться друг на друга
. Если такое произошло, то надо воспользоваться командой разделения перекрывающихся областей в документе (Formatt/Separate Regions), предварительно выделив эти перекрывающиеся области.

Сразу после запуска система готова к созданию документа с необходимыми пользователю вычислениями. Соответствующее новому документу окно редактирования получает название Untitled: N , где N – порядковый номер документа. При сохранении на диск документ системы MathCad записывается в файл с расширением .mcd.
Окно редактирования содержит (даже когда очищено) два важных объекта – курсор ввода в виде красного крестика и вертикальную линию, отделяющую текущую страницу от соседней (справа)
. Если документ большой, то в некотором месте будет наблюдаться и прерывистая горизонтальная линия раздела страниц
. Эти линии раздела показывают, каким образом будет осуществляться разбиение на страницы при распечатке документа на принтере. Изменить параметры страницы можно с помощью команды File/Page Setup. В окне редактирования документа можно включить линейку с помощью команды View/Ruler
. Масштаб документа можно изменить по команде View/Zoom.
3. Основные объекты входного языка системы MathCAD.
Фактически документы MathCad представляют собой программу, написанную на визуально-ориентированном языке программирования. Визуально- ориентированные языки программирования задают программу не в виде малопонятных кодов, а в виде визуально понятных объектов. Язык программирования MathCad ориентирован на математические вычисления и потому практически не отличается от обычного языка математических статей, отчетов и книг.
Входной язык MathCad относится к интерпретируемому типу. Это значит, что, когда система опознает какой-либо объект, она немедленно исполняет указанные в блоке операции.
Визуально-ориентированный язык общения системы MathCad надо отличать от языка реализации системы, т.е. обычного языка программирования высокого уровня, на котором написана система. Языком реализации системы MathCad является один из самых мощных языков высокого уровня – С++.
По существу входной язык системы – промежуточное звено между скрытым от пользователя языком документа и языком реализации системы. По мере того как пользователь создает (средствами текстового, формульного, символьного и графического редакторов) в окне редактирования объекты (тексты, формулы, таблицы и графики), система сама составляет программу на некотором промежуточном языке связи. Эта программа хранится в оперативной памяти до тех пор, пока не будет записана на диск в виде файла с расширением .mcd. Однако от пользователя не требуется знание языков программирования (реализации и связи), достаточно освоить приближенный к естественному математическому языку входной язык системы.
К основным объектам входного языка системы MathCAD можно отнести: алфавит, константы, переменные, операторы, функции.
Алфавит – строчные и прописные латинские буквы, цифры от 0 до 9, греческие буквы. Следует отметить, что MathCAD различает строчные и прописные буквы (X и x – разные переменные) и различает шрифт (X и X – тоже разные переменные). Также в алфавит входят символ бесконечности ¥, штрих ¢(набирается с помощью клавиш ctrl/F7), символ подчеркивания _, символ процента, нижний индекс (набирается с помощью клавиши «.», индекс в определении имени переменных и функций, например К2 , не надо путать с числовым индексом векторной переменной). Имя переменной или функции в системе MathCAD может быть любой длины, но:
— имена не должны начинаться с цифры, символа подчеркивания, штриха или процента;
— символ бесконечности может быть только первым в имени;
— все буквы в имени должны иметь один стиль и шрифт;
— имена не могут совпадать с именами встроенных функций, констант и размерностей, например, sin или TOL. Тем не менее, допускается их переопределение, но тогда одноименная встроенная функция не будет использоваться по первоначальному назначению;
— MathCAD не различает имен переменных и функций: если сначала определить функцию f(x), а потом переменную f, то в оставшейся части документа будет утерян доступ к функции f(x);
— в некоторых случаях желательно использовать имена переменных и функций, содержащие символы операторов MathCAD или другие символы, которые нельзя вставлять в имена непосредственно, для этого надо набрать комбинацию клавиш Ctrl/Shift/J, которая позволит вставить пару квадратных скобок с местозаполнителем внутри
. Имя, составленное из любых символов и заключенное в эти квадратные скобки, MathCAD будет воспринимать корректно
.
Константы – это числа и предварительно определенные системные константы:


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

— погрешность для условий ограничения при решении оптимизационных задач с применением функций Find, Minerr, Maximize, Minimize;

— ширина столбца, используемая при записи файлов функцией WRITEPRN;

— число значащих цифр при записи файлов функцией WRITEPRN.

Формат вывода системных констант можно изменить. Для этого достаточно дважды щелкнуть по числу в блоке вывода результата, при этом появится диалоговое окно, в котором надо будет установить число знаков после запятой. Таким же образом можно изменить формат вывода любых других результатов вычислений. По умолчанию формат вывода имеет три знака после запятой.
Значения некоторых системных констант можно изменить с помощью команды
/
в диалоговом окне, либо эти значения можно переопределить через оператор присваивания
.
Переменные – это объект, числовое значение которого может меняться по ходу выполнения документа. Для присваивания переменной числа или результата выражения используется знак локального присваивания
, который можно набрать с клавиатуры (клавиша «двоеточие» на латинском шрифте), с палитры 
и с палитры 
. Знак присваивания
в системе MathCAD означает, что действие происходит справа налево (а не слева направо). Если при оформлении документа необходимо, чтобы присваивание выглядело на экране как знак равенства без двоеточия, то правой кнопкой надо вызвать контекстное меню и в диалоговом окне вместо пункта “Default” выбрать пункт “Equal”.

Знак обычного равенства (который применяется в системе MathCAD в основном для вывода результата) можно использовать только для первого присваивания.
При локальном присваивании надо обязательно соблюдать правильное расположение блоков. Но иногда в документах возникает необходимость использовать значение некоторой переменной выше на листе, чем расположен оператор присваивания
. В таких случаях вместо локального присваивания используется знак глобального присваивания
, который можно набрать либо с клавиатуры (клавиша «волнистая черта»), либо с палитры 
. Если в документе используется глобальное присваивание, то MathCAD проводит вычисления в следующей последовательности: вычисляются сверху вниз все блоки с оператором глобального присваивания, а затем снова с самого начала документа вычисляются сверху вниз все оставшиеся блоки. Это означает, что в блоках с оператором глобального присваивания нельзя использовать результат вычислений из обычного блока.

В отличие от языков программирования система MathCAD не требует точного задания типов переменных: целочисленные, вещественные, комплексные, текстовые, логические. Тип переменной автоматически определяется присвоенным ей значением: . В нижней строке показан результат вывода соответствующей переменной. Целые переменные пояснений не требуют.
Вещественная переменная может быть набрана и как десятичное число с любым количеством десятичных цифр после точки
, и в экспоненциальной форме, для чего после ввода числа надо напечатать символ умножения и ввести 10 в нужной степени
.
При вводе комплексных переменных мнимая единица набирается с палитры 
, либо с клавиатуры как
. Если просто набрать как
, то она будет восприниматься как простая переменная. Форму представления мнимой единицы можно изменить
. Для этого дважды щелкнуть в окне вывода с мнимой единицей и в диалоговом окне сделать соответствующий выбор
Текстовая переменная заключается в кавычки. Значением логической переменной может быть 0 (что соответствует «лжи») или 1 (что соответствует «истине»).
В MathCAD есть и специальный тип переменных, именуемых ранжированными или циклическими переменными, которые задаются следующим образом:

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

.
Верхняя граница ранжированной переменной необязательно должна быть элементом последовательности, это число просто ограничивает последовательность сверху (или снизу для убывающей последовательности).
Массивы. Большим преимуществом системы MathCAD является возможность оперировать не только скалярными величинами, но и с массивами. MathCAD поддерживает два вида массивов – одномерные (векторы) и двумерные (матрицы). Элементы массивов характеризуются числовыми индексами, которые вставляется с помощью клавиши “[”, либо командой
с панели
. Обычно нумерация идет с нуля. Нумерация задается значением системной переменной ORIGIN, которая по умолчанию равна нулю. V0— первый элемент вектора, M 0, 0— первый элемент матрицы. Можно обратиться не только к элементу массива, но и к его колонке, например, M — первая колонка матрицы. Элементами массива могут быть числа, константы, переменные, математические выражения и даже другие массивы. Соответственно массивы могут быть численными и символьными. Основные операции для работы с векторами и матрицами собраны на панели
.
Существует несколько способов создания массивов. Самый простой и наглядный способ создания матрицы с помощью команды Insert/Matrix . При вызове этой команды появляется диалоговое окно, в котором надо задать число строк и число колонок матрицы (вектор — это матрица с одной колонкой). Появится шаблон матрицы, в черные квадратики которого надо ввести значения элементов матрицы.
Добавление в уже созданную матрицу строк или столбцов производится точно так же. Для этого надо выделить элемент матрицы, правее и ниже которого будет осуществлена вставка столбцов и (или) строк
Для того, чтобы удалить строки и столбцы из матрицы, надо установить курсор на элемент матрицы, который находится в самом левом столбце из тех, которые нужно удалить и в самой верхней строке из тех, которые нужно удалить
Также матрицу можно создать через определение его элементов



Развернуть вложенные массивы можно, установив, флажок (Разворачивать вложенные массивы) в окне


Есть и другие способы создания матриц – создание матрицы с помощью таблицы ввода, создание матрицы путем импорта данных.
Функции. В системе MatCAD различают встроенные функции (функции, заранее введенные разработчиком системы) и пользовательские функции (созданные пользователем).

Встроенные функции. Вставляются с помощью команды Insert/Function или набором с
клавиатуры. При этом следует помнить, что имена встроенных функций чувствительны к регистру, их следует вводить в точности, как они приведены в системе. Параметры встроенных функций заключаются в скобки. В качестве параметра м.б. константа, переменная или математическое выражение, при этом константа, переменная, выражение должны быть определены ранее

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


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

1. Операторы, обозначающие арифметические действия, называются арифметическими и вводятся с палитры .

2. Операторы, которые вставляются с палитры (Вычисления), называются вычислительными операторами (дифференцирование, интегрирование, суммирование, вычисление произведения, пределы).

3. Логические операторы – вводятся с палитры .

4. Матричные операторы – предназначены для совершения различных действий над векторами и матрицами, вводятся с палитры .
5. Операторы выражения – сгруппированы на панели
(Evaluation – Выражения) (оператор численного вывода
, оператор локального присваивания
, оператор глобального присваивания
, оператор символьного вывода).
6. Операторы пользователя. Запросы взыскательного пользователя могут не исчерпываться набором встроенных операторов MathCAD. Для вставки в документы заранее созданных операторов пользователя применяется панель

. Оператор пользователя может иметь абсолютно любое имя. Присваивать оператору некоторое действие следует точно так же, как функции пользователя. Создание бинарного оператора выглядит след. образом:

.
Унарный оператор пользователя создается аналогично

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

знака обычного равенства . В различных задачах выводить результаты вычислений требуется в различном виде: как десятичную или простую дробь, десятичную дробь в обычной или экспоненциальной форме. Формат вывода задается командой Forma/Result. После вызова этой команды (двойной щелчок на нужном блоке) появляется диалоговое окно Result Format:

В списке Format слева можно выбрать один из пяти различных форматов отображения числа, а с помощью полей и флажков справа можно настроить выбранный формат.
General – это используемый по умолчанию формат результатов вычислений. Число представляется в виде десятичной дроби. Количество знаков после запятой задается в поле
. Если установлен флажок
, то дробь будет при необходимости дополнена нулями до количества знаков, указанных выше
. Поле
задает границу перехода ET (Exponential threshold) к экспоненциальной форме (такую форму числа приобретают, если их значение больше 10 ET и меньше 10 — ET ) . При установленном флажке
в экспоненциальной форме записи используются только порядки, кратные трем
. Это является стандартной инженерной формой записи, поскольку для физических величин в системе CИ со степенями, кратными трем, связаны различные стандартные приставки: кило-, мега-, милли- и др.
Decimal – формат вывода результата в виде десятичной дроби без экспоненты.
Scientific – в этом формате результат всегда выводится в экспоненциальной форме.
Engineering – также используется только экспоненциальная форма записи дробей, но при этом используются только порядки, кратные трем.
Fraction – в этом формате результат выводится в виде простой дроби
В диалоговом окне Result Format также можно изменять представление машинного нуля для комплексных чисел CT (Complex threshold) (если Re(Z)/Im(Z) > 10 CT , то Z выводится
как реальное, если наоборот, то как мнимое) и значение машинного нуля ZT (Zero threshold)

.
Формат вывода может быть глобальным и локальным. Чтобы установить локальный формат, можно сделать двойной щелчок по блоку, при этом появится диалоговое окно Result Format. Данный блок будет иметь локальный формат, а все остальные — глобальный.
Управление процессом вычислений. После запуска MathCAD находится в режиме автоматических вычислений. Это означает, что при внесении каких-либо изменений в документ, все видимые в данный момент формульные блоки и графики пересчитываются и строятся заново. В некоторых случаях такой режим работы может быть нежелательным, например, если в документе есть сложные вычисления, требуется обработка больших объемов данных или выполняются операции, занимающие много времени. В таких случаях работать с документом оказывается очень неудобно, и возникает необходимость запретить автоматическое вычисление либо всего документа, либо для блоков, содержащих наиболее сложные вычисления.
Для того чтобы отключить/включить режим автоматического вычисления для всего документа, надо выбрать команду меню
/
/
. При отключенном режиме автоматического вычисления, для того чтобы пересчитать все блоки в документе можно выбрать команду меню
/
/
. Для того чтобы пересчитать не весь документ, а лишь тот блок, в котором находится курсор, следует выбрать команду меню
/
/
(если курсор находится в свободном месте рабочей области документа, то пересчитаны будут все блоки, которые в данный момент видны на экране).
Для того чтобы временно отключить вычисление одного блока, можно воспользоваться командой контекстного меню
. После выбора этой команды MathCAD при просчете документа вообще не будет «обращать внимания» на данный блок и производить вычисления так, как будто его удалили. Для того чтобы возобновить вычисление «отключенного» блока, нужно выбрать команду контекстного меню
.
Прервать вычисление можно клавишей . При этом оставшаяся часть формул будет подсвечена красным цветом.
Единицы измерения физических величин. При проведении физико-технических расчетов почти всегда имеют дело не просто с абстрактными числами, а с некоторыми физическими величинами. Для того чтобы число в выражении рассматривалось как некоторая физическая величина, нужно ввести единицы измерения следующим образом: после введенного числа ввести знак умножения, выбрать команду
/
, в диалоговом окне
в списках
и
выбрать нужную единицу измерения
. Над размерными переменными можно производить любые корректные с физической точки зрения расчеты
. Нельзя складывать переменные разной размерности, будет получено сообщение об ошибке
. Но позволяется складывать, например, амперы с кило амперами
.
Для любого результата вычислений есть возможность изменить его единицы измерения. Если щелкнуть на формульном блоке, содержащем результаты вычислений, то справа от единиц измерения результата появится черный квадратик – поле ввода единиц измерения, к которым необходимо привести результат. Если введенные здесь единицы измерения не будут соответствовать единицам результата, то MathCAD автоматически допишет нужный коэффициент
. В MathCAD по умолчанию все результаты вычислений представлены в системе СИ. Однако систему измерений можно изменить с помощью команды
/
и диалогового окна
.
4. Текстовый редактор служит для ввода и редактирования текстов. Именно тексты делают документы MathCad документами в общепринятом смысле этого слова.

В простейшем случае для ввода текста достаточно ввести символ » на английском регистре. Нередко пользователь начинает набор текстов, забыв установить кавычки. MathCad воспринимает такой набор как ввод математического выражения. Однако, нажав клавишу Пробел, можно тут же превратить набранный фрагмент в текстовый. Признаком текстового блока являются черные квадратики на правой и нижней границах блока, а курсор в текстовом блоке приобретает вид красной вертикальной черты .
Текст может состоять из слов, математических выражений и формул, спец. знаков. Русский текст вводится с помощью любого кириллического шрифта Courier, Times New Roman Cyr, Arial Cyr). Также для работы с текстом предусмотрены команды меню Format/Text и Format/Paragraph. Можно создать текстовую область (текст начинается на позиции курсора), создать текстовый параграф (текст начинается первой строкой на позиции курсора), форматировать текст (панель форматирования), внедрять в текст математические формулы (команда Insert/Math Region , при этом надо находится в текстовом блоке), проверять орфографию (Check Spelling) для англоязычных текстов, изменять размер шрифта, начертание, цвет текста и т.д. Т.е. для текстовых блоков используются типовые средства редактирования (как в любых текстовых редакторах).
5. Графический процессор служит для создания графиков. Это очень удобно для вывода результатов математических расчетов в графической форме. Графики могут размещаться в любом логически дозволенном месте документа, т.е. после тех вычислительных блоков системы, которые готовят исходные данные для построения графиков.
После включения графического процессора для двухмерного графика на экране появляется шаблон будущего графика в виде прямоугольной рамки с маленькими прямоугольниками, расположенными вдоль осей x и y .

Крайние задают пределы изменения переменных (пределы проставляются системой автоматически, но можно их изменять — для этого в диалоговом окне Formatting флажок «autoscale« надо отключить), а в средние надо ввести имена аргумента и функции. После нажатия Enter график будет построен. Для форматирования графика достаточно сделать двойной щелчок по полю графика, при этом появится диалоговое окно Formatting.
Если строятся графики нескольких функций в одном шаблоне, то имена функций следует разделять запятыми.
6. Вычислитель(формульный редактор) обладает поистине уникальными возможностями. Он обеспечивает вычисления по сложным математическим формулам, имеет большой набор встроенных математических формул, позволяет вычислять ряды, суммы и произведения, интегралы и производные, работать с комплексными числами, производить символьные преобразования, решать линейные и нелинейные уравнения, проводить минимизацию функций, выполнять векторные и матричные операции. В вычислитель входят и такие мощные средства, как линейная и сплайн-интерполяция, прямое и обратное быстрое преобразование Фурье.
Для запуска формульного редактора достаточно установить указатель мыши в любом свободном месте окна документа, щелкнуть левой кнопкой и начинать ввод. Поместить формулу в документ можно, просто начиная вводить символы
, числа
или операторы
. Во всех этих случаях на месте курсора ввода создается математическая область (регион) с формулой, содержащей и линии ввода. В области формульного блока курсор ввода превращается в синий уголок, указывающий направление и место ввода
. Клавиша Insert меняет направление охвата курсором
объекта. Для расширения охваченной уголком области (вплоть до полного охвата выражения) нужно пользоваться клавишей Пробел
.
Перемещать линии ввода внутри формульного блока можно также с помощью клавиш со стрелками или щелкая в нужном месте мышью.
Большинство операций редактирования формул реализованы естественным образом, однако некоторые из них несколько отличаются от общепринятых, что связано с особенностью MathCAD как вычислительной системы, например, вставка операторов. Операторы могут быть унарными (действующими на один операнд)
и бинарными (действующими на два операнда)
. При вставке нового оператора в документ MathCAD определяет, сколько операндов ему требуется. Если в точке вставки оператора один или оба операнда отсутствуют, MathCAD автоматически помещает рядом с оператором один или два местозаполнителя. То выражение в формуле, которое выделено линиями ввода в момент вставки оператора, становится его первым операндом









.
Как видно, MathCAD сам расставляет, если необходимо, скобки, чтобы часть формулы, отмеченная линиями ввода, стала первым операндом. Местозаполнители (черный квадратик – для символа и прямоугольная рамка – для оператора) появляются внутри незавершенных формул
. Символ в черный квадратик вводится обычным образом, а чтобы в прямоугольную рамку ввести оператор, например +, необходимо курсор расположить перед этой прямоугольной рамкой 
.
1. Назначение системы MathCAD. Какие еще пакеты математических программ вы знаете?
2. Интерфейс пользователя в системе MathCAD.
3. Документ в системе MathCAD(заголовок, расширение при сохранении на диск, типы и расположение блоков, точка привязки блока, размеры блоков, сквозная передача данных в документе).
4. Объясните, что такое входной язык системы MathCAD и язык реализации системы MathCAD?
5. Перечислите основные объекты входного языка системы MathCAD. Расскажите об алфавите языка и о встроенных и пользовательских функциях системы MathCAD. Что такое определение функции и обращение к функции?
6. Константы и переменные в системе MathCAD? Как задаются типы данных в MathCAD? Что такое глобальное и локальное присваивание переменных в документе MathCAD? Как вставляется мнимая единица для комплексных чисел? Что такое ранжированная переменная и как она задается?
7. Как задаются массивы в MathCADе? Как можно добавлять строки и столбцы в готовые матрицы? Как удаляются строки и столбцы из матриц?
8. Перечислите операторы входного языка системы MathCAD?
9. Как осуществляется вывод результатов в системе MathCAD? Как можно настроить формат вывода результатов? Как осуществляется управление процессом вычислений в системе MathCAD?
10. Как работать с единицами измерений физических величин в системе MathCAD?
11. Подробно охарактеризуйте текстовые, графические и математические блоки.
Лекция №2. Задачи линейной алгебры и решение дифференциальных уравнений в среде MathCAD
В задачах линейной алгебры практически всегда возникает необходимость выполнять различные операции с матрицами. Панель операторов с матрицами находится на панели Math.


Операторы
,
вам уже знакомы. Напомним только, что оператор
вычисляет только детерминант матрицы, а модуль вектора, который равен квадратному корню из суммы квадратов его элементов, вычисляется с помощью оператора
, который расположен на панели Calculator. К сожалению, по внешнему виду они не отличаются.



При попытке вычислить модуль вектора с панели Matrix будет ошибочное состояние. Точно также будет ошибочное состояние при попытке вычислить детерминант матрицы с панели Calculator.
Рассмотрим неизвестные вам до сих пор операторы панели Matrix.



Скалярное произведение векторов определяется как скаляр, равный сумме попарных произведений соответствующих элементов (идентичен обычному оператору умножения). Векторы должны иметь одинаковый размер. Для обозначения скалярного произведения используется символ «точка». Векторное произведение двух векторов u и v с углом q между ними равно вектору с модулем , направленным перпендикулярно плоскости векторов u и v. Векторное произведение векторов применимо только для трехкомпонентных векторов. Обозначают векторное произведение символом х, который можно ввести нажатием кнопки на панели Matrix/
— сумма элементов вектора.



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

Для решения задач линейной алгебры в MathCAD встроены матричные функции. Их можно разделить на три основные группы:
— функции определения (генерации) матриц и операции с блоками матриц;
— функции вычисления различных числовых характеристик матриц;
— функции, реализующие численные алгоритмы решения задач линейной алгебры.
Из каждой группы приведем по несколько, наиболее часто используемых функций.
Первая группа:
1. matrix(m, n, f) – создает и заполняет матрицу размерности m x n, элемент которой, расположенный в i-ой строке и j-ом столбце равен значению f(i, j) функции f(x, y);
2. diag(v) – создает диагональную матрицу, элементы главной диагонали которой хранятся в векторе v;
3. identity(n) – создает единичную матрицу порядка n;
4. augment(A, B) –объединяет матрицы A и B; матрица B располагается справа от матрицы A, при этом матрицы должны иметь одинаковое число строк;
5. stack(A, B) – объединяет матрицы A и B, матрица В располагается внизу под матрицей А, при этом матрицы должны иметь одинаковое число столбцов;
6. submatrix(A, ir, jr, ic, jc) – формирует матрицу, которая является блоком матрицы А, расположенным в строках с ir по jr и в столбцах с ic по jc, причем ir £ jr, ic £ jc.

Вторая группа:
1. last(v) – вычисляет номер последнего элемента вектора V;
2. length(v) – вычисляет количество элементов вектора V;
3. min(v), max(v) – вычисляет минимальное и максимальное значения вектора V;
4. Re(v) – создает вектор из реальных частей комплексных элементов вектора V;
5. Im(v) — создает вектор из мнимых частей комплексных элементов вектора V;
6. sort(V) – сортировка элементов вектора V по возрастанию;
7. reverse (sort(v)) – сортировка элементов вектора V по убыванию;
8. csort (A,n) – сортировка элементов n – го столбца матрицы А по возрастанию (перестановкой строк);
9. rsort (A,n) – сортировка элементов n – ой строки матрица А по возрастанию (перестановкой столбцов);
10. rows(A) – вычисляет число строк в матрице А;
11. cols(A) – вычисляет число столбцов в матрице А;
12. max(A), min(A) – определяет максимальное и минимальное значения матрицы А;
13. tr(A) – вычисляет след квадратной матрицы А (след матрицы равен сумме ее диагональных элементов по главной диагонали);
14. mean(A) – среднее значение элементов матрица А.
Действие функций второй группы ясно из их названия, поэтому примеры для них приводить не будем.
Третья группа:
1. rref(A) – приведение матрицы к ступенчатому виду с единичным базисным минором (выполняются элементарные операции со строками матрицы: перестановка строк, умножение строки на число, сложение строк);
2. rank(A) – вычисляет ранг матрицы А (количество линейно-независимых строк или это число ненулевых строк ступенчатой матрицы rref(A));
3. eigenvals(A) – вычисление собственных значений квадратной матрицы А;
4. eigenvecs (A) – вычисление собственных векторов квадратной матрицы А, значением функции является матрица, столбцы которой есть собственные векторы матрицы А, причем порядок следования векторов отвечает порядку следования собственных значений, вычисленных с помощью функции eigenvals(A);
5. eigenvec(A,e) – вычисление собственного вектора матрицы А, отвечающего собственному значению e;
6. normi(A) – max – норма, или ¥ — норма (infinity norm). в линейной алгебре используются различные матричные нормы, которые ставят в соответствие матрице некоторую скалярную числовую характеристику;

7. lsolve (A,b) – решение системы линейных алгебраических уравнений вида .
Функции третьей группы реализуют, как правило, довольно сложные вычислительные алгоритмы. Приведем примеры на использование функций rref и функций для вычисления собственных значений и собственных векторов матрицы. Задача поиска собственных значений и собственных векторов матрицы очень часто встречается в вычислительной практике.



В самом простом виде задача на собственные значения матрицы формулируется следующим образом: требуется найти такие значения l, чтобы матричное уравнение имело решение. В таком случае число l называют собственным числом матрицы А, а n- компонентный вектор Х, приводящий уравнение с заданным l в тождество – собственным вектором. В вышеприведенном примере собственные вектора матрицы А получены в матрице MS. Проверка проведена для первого столбца матрицы MS и соответствующего ему собственного числа l0=5.439.
Решение систем линейных алгебраических уравнений. Этот вопрос является центральным в вычислительной линейной алгебре.
В математике рассматриваются системы линейных уравнений двух видов — однородные и неоднородные.

Неоднородная система уравнений в матричном виде записывается следующим образом: . Здесь А – матрица коэффициентов системы, В – вектор свободных членов, Х – вектор неизвестных системы.
Неоднородная система имеет одно единственное решение, если определитель матрицы отличен от нуля. Для нахождения точного решения неоднородных систем линейных уравнений в линейной алгебре используются три основных метода:
— метод обратной матрицы, он вам уже известен;
— метод исключений Гаусса;


Неоднородная система линейных уравнений в случае равенства ее определителя нулю имеет множество решений, если ранг матрицы системы равен рангу расширенной матрицы системы, либо не имеет решения, если это условие не выполняется. Решить такие системы в MatCADe можно методом Гаусса.

В выше приведенном примере получили систему из трех уравнений с пятью неизвестными, поэтому решение системы будет иметь два свободных параметра (x4, x5).

Однородная система линейных алгебраических уравнений может быть представлена в виде , т.е. правая часть уравнения представляет вектор из нулевых элементов. Как известно, для того чтобы однородная система линейных уравнений имела решение, определитель соответствующей матрицы должен равняться нулю. Это означает, что количество независимых уравнений в системе (т.е. ранг матрицы) меньше, чем количество неизвестных (т.е. порядок матрицы): rank(A) < n. Но вначале нужно выделить в системе эти самые независимые уравнения. Это делается с помощью функции rref, которая с помощью метода исключений Гаусса приводит матрицу к ступенчатому виду.

Дифференциальные уравнения являются основой огромного количества расчетных задач из самых различных областей науки и техники.
В MathCAD нет средств символьного (точного) решения дифференциальных уравнений, но достаточно хорошо представлены численные методы их решения. Дифференциальные уравнения – это уравнения, в которых неизвестные являются не переменные (т.е. числа), а функции одной или нескольких переменных. Эти уравнения (или системы) включают соотношения между искомыми функциями и их производными. Если в уравнения входят производные только по одной переменной, то они называются обыкновенными дифференциальными уравнениями (ОДУ). В противном случае говорят об уравнениях в частных производных. Таким образом, решить (иногда говорят проинтегрировать) дифференциальное уравнение – значит, определить неизвестную функцию на определенном интервале изменения ее переменных.
Как известно, одно обыкновенное дифференциальное уравнение или система ОДУ имеет единственное решение, если помимо уравнения определенным образом заданы начальные или граничные условия. Имеется два типа задач, для которых возможно численное решение ОДУ с помощью MathCAD:
— задачи Коши, для которых определены начальные условия на искомые функции, т.е. заданы значения этих функций в начальной точке интервала интегрирования уравнения;
— краевые задачи, для которых заданы определенные соотношения сразу на обеих границах интервала. Из дифференциальных уравнений в частных производных есть возможность решать только уравнения с двумя независимыми переменными: одномерные параболические и гиперболические уравнения, такие как уравнения теплопроводности, диффузии, волновые уравнения, а также двухмерные эллиптические уравнения (уравнения Пуассона и Лапласа).
В MathCAD нет универсальной функции для решения дифференциальных уравнений, а есть около двадцати функций для различных видов уравнений, дополнительных условий и методов решения. Эти функции можно найти в библиотеке Insert/Function, категория “Differential Equation Solving (решение дифференциальных уравнений).
Решение Обыкновенных Дифференциальных Уравнений (ОДУ)
ОДУ первого порядка называется уравнение
F – известная функция трех переменных;
x – независимая переменная на интервале интегрирования[a,b];
y – неизвестная функция;
y’ – ее производная.
Функция y(x) является решением дифференциального уравнения, если она при всех xÎ[a,b] удовлетворяет уравнению
График решения y(x) называется интегральной кривой дифференциального уравнения. Если не заданы начальные условия, таких решений y(x) будет множество. При известных начальных условиях y(x0)= y0 решение y(x) будет единственным. Вычислительный процессор MathCAD может работать только с нормальной формой ОДУ. Нормальная форма ОДУ – это ОДУ, разрешенное относительно производной y’=f(x,y)
ОДУ высших порядков
Обыкновенным дифференциальным уравнением n-го порядка называется уравнение вида
F – известная функция n+2 переменных;
x – независимая переменная на интервале интегрирования[a,b];
y – неизвестная функция;
n – порядок уравнения.
Функция y(x) является решением дифференциального уравнения, если она при всех xÎ[a,b] удовлетворяет уравнению
Нормальная форма ОДУ высшего порядка имеет вид
Y ( n ) =f(x, y, y’, …, y ( n -1) )
Если не заданы начальные условия, то дифференциальное уравнение n – го порядка имеет бесконечное множество решений, при задании начальных условий y(x0)= y0, y’(x0)= y0,1, y’’(x0)= y0,2, …, y ( n -1) (x0)= y0,n-1 решение становится единственным (задача Коши).
Задача Коши для дифференциального уравнения n – го порядка может быть сведена к задаче Коши для нормальной системы n дифференциальных уравнений 1 го порядка, которая в векторной форме имеет вид
Y(x0) = Y0 – вектор начальных условий;
Эта система получается в результате следующей замены:
,где 

Для численного интегрирования ОДУ в MathCAD имеется выбор – либо использовать вычислительный блок Given/Odesolve, либо встроенные функции. Оба способа обладают одинаковыми возможностями, но при использовании блока решения запись уравнений более привычна и наглядна, однако отдельная функция может быть использована в составе других функций и программ. Рассмотрим оба варианта решения.
Вычислительный блок Given/Odesolve
Ниже приведены два примера для решения дифференциальных уравнений первого и второго порядка с использованием вычислительного блока решения Given/Odesolve.


Вычислительный блок для решения одного ОДУ состоит из трех частей:
— ключевое слово given;
— ОДУ и начальные условия, записанные с помощью логического равенства;
— встроенная функция Odesolve(x, b) относительно независимой переменной x на интервале [a, b]; b – верхняя граница отрезка интегрирования. Допустимо и даже предпочтительнее задание функции Odesolve(a, b, step) с тремя параметрами, где step – внутренний параметр численного метода, определяющий количество шагов; чем больше step, тем с лучшей точностью будет получен результат, но тем больше времени будет затрачено на его поиск.
Функция Odesolve возвращает решение задачи в виде функции. Эта функция не имеет символьного представления и может только вернуть численное значение решения уравнения в любой точке интервала интегрирования.
Функция Odesolve использует для решения дифференциальных уравнений наиболее популярный алгоритм Рунге-Кутта четвертого порядка, описанный в большинстве книг по методам вычислений. Он обеспечивает малую погрешность для широкого класса систем ОДУ за исключением жестких систем. Если щелчком правой кнопки мыши на блоке формул с функцией Odesolve вызвать контекстное меню, то можно изменить метод вычисления решения, выбрав один из трех вариантов: Fixed – метод Рунге-Кутта с фиксированным шагом интегрирования (этот метод используется по умолчанию), Adaptive – также метод Рунге-Кутта, но с переменным шагом, изменяемым в зависимости от скорости изменения функции решения, Stiff – метод, адаптированный для решения жестких уравнений и систем (используется так называемый метод PADAUS).
Альтернативный метод решения ОДУ заключается в использовании одной из встроенных функций: rkfixed, Rkadapt, или Bulstoer. Все они решают задачу Коши для системы дифференциальных уравнений первого порядка, но каждая из них использует для этого свой метод. Для простых систем не играет большой роли, какой метод использовать – все равно получите решение достаточно быстро и с высокой точностью. Но для сложных или специфических систем бывает, что некоторые методы вообще не могут дать удовлетворительного решения за приемлемое время. Именно для таких сложных, но не редких случаев в MathCAD и введено несколько различных методов решения систем ДУ.
— rkfixed – метод Рунге-Кутта с фиксированным шагом интегрирования. Самый простой и быстрый метод, но далеко не всегда самый точный. Полностью аналогичен использованию функции Odesolve с выбранным в контекстном меню методом Fixed.
— Rkadapt – метод Рунге-Кутта с переменным шагом интегрирования. Величина шага адаптируется к скорости изменения функции решения. Данный метод позволяет эффективно находить решения уравнений, в случае если оно содержит как плавные, так и быстро меняющиеся участки. Там, где решение меняется слабо, шаги выбираются более редкими, а в областях его сильных изменений – частыми. В результате для достижения одинаковой точности требуется меньшее число шагов, чем для rkfixed. Полностью аналогичен использованию функции Odesolve с выбранным в контекстном меню методом Adaptive.
— Bulstoer – метод Булирша – Штера. Этот метод более эффективен, чем метод Рунге-Кутта, в случае если решение является плавной функцией.
Имена функций Rkadapt и Bulstoer начинаются с прописной буквы. В MathCAD для некоторых имен функций неважно, с какой буквы они записаны, но для перечисленных функций это принципиально, т.к. в MathCAD также существуют функции с такими же именами, только записанные с маленькой буквы – rkadap, bulstoer. Эти функции используются в тех случаях, когда важным является решение задачи в конечной точке интервала интегрирования.


Выше приведены примеры решения тех же дифференциальных уравнений первого и второго порядка, которые были решены с использованием вычислительного блока Given/Odesolve.
Применение встроенных функций в документах MathCAD выглядит сходным образом, т.е. функции Rkadapt и Bulstoer имеют тот же синтаксис, что и выше приведенная функция rkfixed. Назначение аргументов в этих встроенных функциях следующее:
— y – вектор начальных значений неизвестных функций, входящих в систему. В случае одного уравнения и одной неизвестной функции – это просто число.
— а – начало отрезка, на котором ищется решение системы (отрезка интегрирования). Именно в этой точке значения неизвестных функций принимаются равными элементам вектора y.
— b – конец отрезка интегрирования.
— n – количество частей, на которые разбивается отрезок [a, b] при решении системы. Чем больше это число, тем точнее получается решение, но расчет занимает больше времени.
— F(x,y) – векторная функция, элементы которой содержат правые части уравнений системы в нормальной форме (когда левые части – первые производные от соответствующих функций, а в правых частях производные отсутствуют). Аргументами этой функции являются вектор y, элементы которого соответствуют различным неизвестным функциям системы, и скалярный аргумент x , соответствующий независимой переменной в системе. В случае одного уравнения функция F может быть скалярной функцией, зависящей от двух скалярных переменных x и y.
Возвращаемым значением всех вышеперечисленных встроенных функций является матрица. Первый столбец этой матрицы – это точки, на которые разбивается отрезок [a, b], а остальные столбцы – это значения функций системы в этих точках. Если в аргументе функции rkfixed было указано количество частей n = 100, то матрица будет содержать 101 строку вместе с начальной.
Решение систем обыкновенных дифференциальных уравнений.
Для численного интегрирования систем ОДУ в MathCAD также имеется выбор – либо использовать вычислительный блок Given/Odesolve, либо встроенные функции rkfixed, Rkadapt и Bulstoer.
При решении систем ОДУ MathCAD требует, чтобы система ОДУ была представлена в нормальной форме (когда левые части – первые производные от соответствующих функций, а в правых частях производные отсутствуют):

где Y и Y’ – соответствующие неизвестные векторные функции переменной t, а F – вектор правых частей системы уравнений первого порядка. Именно векторное представление используется для ввода системы ОДУ в среде MathCAD.
Если в систему ОДУ входят и уравнения высших порядков, то оно тоже сводится к системе уравнений первого порядка, как было показано выше. При этом количество нулевых условий для вычислительного блока Given/Odesolve, а также размер вектора начальных условий y и размер вектора правых частей F(x,y) для встроенных функций rkfixed, Rkadapt и Bulstoer должны быть равны сумме порядков всех уравнений.
Вначале покажем решение систем ОДУ первого порядка с использованием вычислительного блока Given/Odesolve

Функция Odesolve для системы ОДУ имеет несколько иной, по сравнению с одним уравнением, синтаксис. Теперь она возвращает вектор функций, составляющих решение системы. Поэтому в качестве первого аргумента функции нужно ввести вектор, состоящий из имен функций, использованных при вводе системы. Второй и третий аргументы то же самое, что и в задаче с одним ОДУ.
Решение системы ОДУ показано на графике слева. Как известно, решения ОДУ часто удобнее изображать не в таком виде, а в фазовом пространстве, по каждой из осей которого откладываются значения каждой из найденных функций (как показано на рисунке справа). При этом аргумент входит в них лишь параметрически. В рассматриваемом случае двух ОДУ такой график – фазовый портрет системы – является кривой на фазовой плоскости. В общем случае, если система состоит из N ОДУ, то фазовое пространство является N – мерным. При N > 3 наглядность теряется, и для визуализации фазового портрета приходится строить его различные проекции.
Рассмотрим решение этой же системы ОДУ первого порядка с использованием встроенной функции rkfixed.

Полученное решение полностью соответствует вышеприведенному решению с использованием вычислительного блока Given/Odesolve. Следует отметить, что начальные условия здесь задаются в виде вектора y, а функциям x(t) и y(t) соответствуют элементы этого вектора y1 и y2. Вектор начальных условий y и вектор правых частей F имеют размер равный двум, т.к. система состоит из двух уравнений первого порядка. Для системы ОДУ, состоящей из двух уравнений второго порядка, размер этих векторов будет равен четырем

1. Поясните работу команд панели Matrix – скалярное и векторное произведение, детерминант матрицы, сумма элементов вектора, операция векторизации.
2. Перечислите три основные группы матричных функций. Расскажите о матричных функциях, возвращающих числовые характеристики. Приведите примеры.
3. Матричные функции, реализующие генерацию матриц и операции работы с блоками матриц.
4. Перечислите матричные функции, реализующие численные алгоритмы решения задач линейной алгебры. Объясните, как работают функции rref и rank.
5. Какие функции вычисляют собственные вектора и собственные числа квадратной матрицы?
6. Решение в системе MathCAD неоднородных систем линейных уравнений, когда определитель матрицы не равен нулю. Три способа.
7. Как осуществляется в системе MathCAD решение неоднородных систем линейных уравнений, когда определитель равен нулю и при условии, что ранг матрицы системы равен рангу расширенной матрицы системы?
8. Как осуществляется в системе MathCAD решение однородных систем линейных уравнений, когда определитель матрицы равен нулю (т.е. ранг матрицы должен быть меньше порядка матрицы)?
9. Какие дифференциальные уравнения называются ОДУ первого порядка? Высшего порядка? Что такое нормальная форма ОДУ первого и высшего порядка? К чему сводятся ОДУ высшего порядка при решении?
10. Можно ли решить дифференциальные уравнения в MathCADе символьно?
11. Как решаются ОДУ с помощью вычислительного блока Given/Odesolve? Какой метод решения реализует функция Odesolve? Как можно изменить метод решения для этой функции?
12. Как решаются ОДУ с помощью встроенной функции rkfixed? Чем функция rkfixed отличается от функции Rkadapt?
13. Как осуществляется решение системы ОДУ с помощью вычислительного блока Given/Odesolve? Приведите примеры.
14. Как осуществляется решение системы ОДУ с помощью функции rkfixed? Приведите примеры.
Похожие работы
Методика и основные этапы построения ранжированных переменных, сферы и особенности их практического применения. Порядок построения графиков в декартовой системе. Приведение примеров решение нелинейных уравнений и их систем при помощи решающего блока.
Особенности применения компьютерных программ Pascal, Excel, MathCAD и Delphi для вычисления значения функции y(x) с заданным промежутком и шагом. Виды результатов вычислений, их сравнение и вывод. Изображение блок-схемы алгоритма решения задания.
Решение системы дифференциальных уравнений, заданной в нормальной форме Коши. Определение аналитических зависимостей изменения переменных состояния системы с использованием преобразования Лапласа. Численный метод решения системы c помощью Mathcad.
Возможности математического пакета MathCad в среде Windows 98 для использования матричной алгебры и решения системы линейных алгебраических уравнений. Методы решения систем линейных алгебраических уравнений. Сравнение метода Гаусса с методом MathCad.
Решение дифференциального уравнения N-го порядка методом интегрирования при помощи характеристического уравнения, методом интегрирования и операторным методом для значений аргументов при заданных начальных условиях и нулевых уравнения 4–го порядка.
Mathcad создавался как программное средство, альтернативное электронным таблицам. И не электронным таблицам современным, а тем, какие были на момент создания первых версий Mathcad.
Моделирование движения невесомой заряженной частицы в электрическом поле, созданном системой нескольких фиксированных в пространстве заряженных тел, в случае, когда заряженные тела находятся в одной плоскости и в ней же находится движущаяся частица.
Решение линейных дифференциальных уравнений численными и символьными методами в рамках пакета компьютерной математики MathCAD. Сравнения результов решений и применение их при исследовании функционирования автоматических систем и электрических агрегатов.
Использование ранжированных переменных в программном пакете Mathcad. Создание матриц без использования шаблонов матриц, описание операторов для работы с векторами и матрицами. Решение систем линейных и нелинейных уравнений с помощью функций Mathcad.
Исследование связи между временем достижения торпеды, снабжённой разгонным двигателем (глубинной бомбы) заданной глубины и формой корпуса противолодочного корабля: сферической, полусферической, каплевидной. Представление этой зависимости графически.
Численное решение уравнений в MathCAD
Все задачи, с которыми вам приходилось сталкиваться в школе или изучать в университете, решались символьно. То есть вы тем или иным образом преобразовывали и упрощали выражения, использовали какие-то стандартные формулы и методы, умножали, делили, сокращали — и в результате приходили к какому-то аналитически несложному результату. Так, например, при решении квадратного уравнения вы использовали формулы Виета; пытаясь найти корни кубического уравнения, вы разлагали выражение на линейные множители (или, в крайнем случае, использовали формулу Кардано), для бикубических уравнений прибегали к замене. В общем, для того, чтобы решить даже очень несложное нелинейное уравнение, от вас требовалось знание великого множества разнообразных формул и подходов. Но, увы, как бы вы хорошо ни ориентировались во всех этих методах и подходах, зачастую это мало вам помогало, так как использование большинства из них крайне трудоемко и подходит для решения очень немногих (специально подобранных) уравнений. На практике же, как правило, приходится работать с уравнениями, включающими разнородные функции (что, как правило, автоматически означает невозможность символьного решения) или с очень неудобными коэффициентами. Справиться со многими из них привычным преобразованием или заменами никак не получится. Что же делать?
Естественно, если вам попадется такое «нерешаемое» уравнение, вы попытаетесь просто подобрать корни. Для этого вы будете подставлять какие-то значения переменной (выбор которых, скорее всего, в основном будет определяться вашей интуицией) в надежде на то, что какое-то из них обратит уравнение в нуль. К сожалению, и такой способ весьма малоэффективен на практике: подставив десяток-другой значений, вы почти наверняка предпочтете удовлетвориться мыслью о том, что данное уравнение не имеет решений вовсе, чем продолжать эту чрезвычайно неинтересную работу.
Но если у вас есть компьютер с системой MathCAD, то никаких проблем с поиском решения не будет вне зависимости от сложности уравнения. Конечно, аналитическое решение компьютер вряд ли найдет даже для очень простых уравнений (в этом пока человек значительно превосходит машину), но зато ввиду колоссальной по сравнению с человеческой скоростью обработки данных очень эффективными становятся так называемые численные методы.
В основе всех численных методов решения уравнений лежит принцип подбора. Но, в отличие от подбора возможных корней человеком, в численных методах этот процесс является строго направленным. Основным понятием численных методов является итерация. Итерация — это буквально повторение, то есть все численные методы построены на принципе повторения одного и того же действия или последовательности действий, результатом которых является большее или меньшее приближение некоторого рабочего значения переменной к корню. Поэтому численные методы решения уравнений называются еще итерационными. Число необходимых итераций определяется скоростью сходимости алгоритма (эффективностью). Эффективность различных численных алгоритмов может различаться весьма значительно, но это не значит, что всегда стоит избирать из них наиболее быстрый: чем выше скорость сходимости к решению, тем, как правило, чувствительность алгоритма к различного рода трудностям (многочисленным экстремумам, разрывам или недифференцируемости в некоторых точках) выше. Поэтому очень важно иметь представление (хотя бы самое поверхностное) о том, какие принципы лежат в основе работы той или иной функции: это поможет выбрать наиболее подходящий в рамках данной задачи алгоритм и тем самым избежать лишних ошибок и проблем.
Немного о выборе типа алгоритма. В общем случае, конечно, гораздо лучше получить решение в результате символьных преобразований, так как при этом можно найти сразу все корни (при использовании встроенных функций MathCAD — только один), причем без какой-либо погрешности. Но, увы, аналитическое решение имеет относительно небольшое количество задач, а символьный процессор MathCAD сможет справиться вообще с мизерным процентом уравнений. Так что применение численных методов — это печальная необходимость. Но особо огорчаться по этому поводу не стоит: все недостатки численных алгоритмов MathCAD можно легко преодолеть.
Для численного поиска решений алгебраических уравнений с одним неизвестным в MathCAD существует специальная встроенная функция root (корень). Функция эта может использоваться с различными начальными условиями, при этом реализуются разные численные алгоритмы. Так, если определена только одна точка приближения к корню, поиск решений будет осуществляться так называемым методом секущих. Если же задан интервал, на котором предположительно локализовано решение, то поиск его будет осуществлен с применением метода деления пополам (или метода Больцано).
Если необходимо найти корень некоторого уравнения, причем известен интервал, в котором находится корень, проще всего использовать функцию root с 4 аргументами: root(f(x), x, a, b), где f ( x ) — функция, определяющая уравнение, x — переменная, a и b — границы интервала локализации. Обязательным условием является то, что значения функции на концах интервала должны быть противоположных знаков.
Попробуем протестировать функцию root и для этого найдем корни какого-нибудь уравнения, точное решение которого очевидно. К примеру, возьмем уравнение
все корни которого имеют вид p × N/4 (N=1, 2, . ). Попробуем найти первое положительное решение. Очевидно, что таковым будет x=p /4 (что очень хорошо видно на графике).
Посмотрим, однако, найдет ли этот корень функция root. Интервал локализации определим от 0 до p /3:
MathCAD не подвел на этот раз: решение найдено в точности. Попробуем решить это уравнение с другим интервалом локализации:
Полученный результат отличается от первого решения, хотя корень х =0.25 (находится в данном интервале. Все дело в том, что в этом же промежутке находится еще 4 корня, и заранее предсказать, какой именно из них будет выдан в качестве ответа, совершенно невозможно. Поэтому следует ввести еще одно ограничение для применения функции root в рассматриваемой интерпретации: на промежутке должен быть локализован только один корень. В тех случаях, когда определить границы такой локализации невозможно, следует применять функцию root с одной точкой приближения (то есть перейти от метода Больцано к методу секущих). Хотя практически всегда определить нужный промежуток можно и чисто визуально, предварительно задав график. Вообще, строить график всегда желательно, когда вы используете численные методы: это самый надежный способ избежать ошибок и не потерять корни. Другой вопрос, что в случае систем уравнений это может помочь очень мало (так как сделать какие-то более или менее точные выводы по двум пересекающимся поверхностям совершенно невозможно).
Очень важной характеристикой решения является его точность. В MathCAD можно регулировать величину погрешности решения, изменяя значение специальной системной переменной TOL (от английского tolerance — точность). Строго говоря, TOL — это параметр, определяющий условие прекращения итераций. То есть цикл численного алгоритма остановит свою работу и выдаст последнее значение x, если f ( x ) примет значение, меньшее, чем TOL. Изменить величину этой встроенной переменной можно либо при помощи команды Math/Options/Built-in variables/TOL (Математические/Опции/Системные переменные/TOL), либо выполнив соответствующее присваивание непосредственно слева или сверху функции численного решения. Посмотрим, как влияет изменение величины TOL (по умолчанию равной 10 -3 ) на точность поиска корня. Пусть дана следующая функция:
Для того чтобы определить существование у нее нулей, а также, при их наличии, приблизительные границы интервала локализации корней, построим график:
Один корень вполне очевиден — это 0. Посмотрим, однако, сможет ли найти его функция root. Попробуем провести такой расчет при различных значениях TOL:
Для такой невысокой точности результат получился на удивление неплохим (значение функции в точке, определенной как корень, на 3 порядка меньше TOL — условия остановки цикла алгоритма). Но все равно 0.066 — это довольно далеко от настоящего значения корня. А то, что значение f ( x ) в этой точке весьма близко к нулю, совсем неудивительно: это связано с особенностью поведения функции в окрестности 0, где она буквально «скользит» по оси X .
При уменьшении TOL на три порядка приблизительно во столько же порядков увеличилась и точность решения (что вполне закономерно). Новое значение корня может удовлетворить большинству требований к точности, возникающих на практике. Но все же мы попытаемся получить максимально точное решение. Для этого еще более уменьшим значение TOL:
Значение корня уже крайне близко к нулю. Попробуем задать высшую точность, возможную в MathCAD (TOL=10 -15 ):
Только в этом предельном случае наконец удалось получить правильное решение. Проанализируем, с чем были связаны трудности в поиске нуля этой функции (как вы помните, решения для косинуса находились очень просто и без применения условия особой точности). Для этого построим график, на котором ясно видно прохождение кривой через точку корня. Сделать это проще всего можно при помощи инструмента ZOOM, который позволяет увеличивать отдельные фрагменты графика.
Более 30 раз пришлось повторить операцию с этим инструментом, пока наконец кривая перестала сливаться с осью X ! В результате получился следующий график:
Теперь совсем несложно понять причину возникших трудностей: просто кривая в окрестности 0 слишком близко подходит к оси X . А, как вы помните, корень считается найденным, когда значение функции в некоторой точке меньше TOL. В случае же рассматриваемой функции для стандартной точности (10 -3 ) такие точки появятся на относительно большом расстоянии от точки решения. Поэтому результат получается неверным. Но, с другой стороны, утверждать, что решение в рассмотренных выше случаях находилось ошибочное, совершенно некорректно. Ведь по условию в точке корня значение функции должно быть меньше TOL. Для большинства численных методов это основное, а в случае метода бисекции (схожий с ним алгоритм лежит в основе работы функции root с четырьмя аргументами) — единственное условие определения некоторой точки x как корня. Условие же это при всех значениях точности было выполнено, причем TOL и f ( x ) отличались на несколько порядков. Просто, строго говоря, получаемые значения корней следует округлять до порядка, равного порядку продекларированной точности (ведь значение функции не может быть точнее входных данных). Если бы мы это сделали, то во всех случаях, в том числе и при TOL=10 -1 , ответ получился бы верным (хотя, надо признать, в случае TOL=10 -1 это было бы, скорее, счастливое совпадение).
Из всего вышесказанного можно сделать вывод: нахождение корня функцией root совсем не означает его действительного существования. Очень даже возможна такая ситуация, когда кривая функции очень близко подходит к оси Х, но при этом не пересекает ее. Если же установленный уровень точности окажется больше того расстояния, на которое она приближается к оси, то точку, в которой это сближение происходит, MathCAD определит как корень.
Что же делать, чтобы избежать таких ошибок? Во-первых, всегда строить график. В системе MathCAD это делается предельно быстро и просто, а неприятностей позволяет избежать очень многих. Во-вторых, если вы видите, что график как бы скользит по оси Х (очень неясная ситуация: возможно и пересечение в 2-х точках, и касание в одной, и отсутствие общих точек вообще), попробуйте увеличить точность по максимуму: в большинстве случаев этого бывает вполне достаточно. И в-третьих, если сомнения все равно остаются, используйте инструмент ZOOM в области предполагаемого расположения корня. Пожалуй, способ этот самый надежный: ведь увеличение можно производить практически до бесконечности.
Найти решение уравнения в MathCAD можно применяя другую форму встроенной функции root, имеющую только 2 аргумента (имя функции и переменной). При использовании этого варианта выше или правее самой функции root следует задать начальное приближение для x:
Определить величину начального приближения можно либо чисто интуитивно, либо (лучше) построив график.
Вы можете задать резонный вопрос: если существует весьма верный и простой метод бисекции, зачем использовать другие, менее надежные (как будет показано далее) методы? Тут все дело вот в чем: во-первых, не всегда существованию корня сопутствует интервал с различными по знаку значениями функции в точках его границ (есть возможность простого касания); во-вторых, метод бисекции не очень удобно использовать при программном поиске всех корней уравнения сканированием некоторой широкой области; в-третьих, ввиду того, что построенные при помощи компьютерных программ графики отражают вид функции довольно искаженно, определение при их помощи интервала локализации корня нельзя считать абсолютно надежным.
Однако можно утверждать, что лучше воздержаться от использования метода секущих (то есть функции root в варианте с начальным приближением) в случае периодических функций (особенно сложного вида), очень осторожно следует применять ее при наличии локальных экстремумов (и ни в коем случае не определять начальное приближение вблизи таких точек, а также точек перегиба) и точек разрыва. Также следует учитывать поведение функции на бесконечности. Поэтому во всех сложных случаях куда лучше применять метод бисекции.
Дмитрий Гурский, Юрий Стрельченко, dot@omen.ru
Компьютерная газета. Статья была опубликована в номере 07 за 2003 год в рубрике soft :: текст
Решение уравнений в MathCad

Для решения уравнений в Mathcad можно воспользоваться двумя способами:
Использование метода Given — Find:
Это наиболее распространенный способ решения обычных алгебраических уравнений. Он достаточно прост. В рабочем поле записываем слово Given. Это служебное слово. Оно подключает определенные программные модули mathcad для обработки исходных данных, необходимых для решения уравнения численными методами.
Затем указывается начальное приближение для искомой переменной. Это нужно для увеличения скорости и точности решения уравнения. Если начальное приближение не задать, то mathcad по умолчанию примет его равным нулю
Рис. 1. Ввод данных в поле mathcad
Далее вводится уравнение. Его можно записать в явном или неявном виде. Само уравнение набирается с клавиатуры вручную с использованием панели Calculator. Из этой панели можно взять основные математические операции: дроби, тригонометрию, факториалы и прочее. Уравнение нужно записывать с использованием логического символа «ровно». На панели Boolean он выделен жирным шрифтом (см. рис. 2)
Рис. 2. Панели Boolean и Calculator
После уравнения вводится функция Find(x) (где х — переменная). Это функция, которая возвращает результат. Значение функции Find(x) можно присвоить какой-либо переменной с помощью символа «:=» и использовать ее далее в расчетах
Для получения результата, после Find(x) следует поставить символ «→» либо «=» из панели Evaluation (см. рис. 3). Причем, если вы используете символ «→«, то mathcad определит все корни уравнения и сформирует матрицу результатов. Но если вы используете символ «=«, то mathcad выведет единственный корень, который был наиболее близок к начальному приближению. Так что, если вы не знаете сколько корней имеет уравнение, то лучше использовать стрелочку
Рис. 3. Панель «Evaluation»
В зависимости от сложности уравнения через определенное время MathCad выведет результат. На рис.4 можно рассмотреть синтаксис и различие результатов выводимых mathcad. Обратите внимание, что выводимые результаты одного и того же уравнения различны
Рис. 4. Результат численного решения уравнения
Mathcad позволяет решать уравния в символьном виде. Например, если мы заменим все числовые константы на неизвестные параметры и решим уравнение относительно x, то результат выведется в символьном виде (см. рис. 5). Причем, обратите внимание, что в данном случае нам не нужно вводить начальное приближение и мы должны использовать символ «→» для вывода результата
Рис. 5. Результат символьного решения уравнения
Использование метода Solve:
Этот метод отличается от выше рассмотренного синтаксисом. На свободном поле вводим уравнение с использованием логического символа «ровно» из панели Boolean. После ввода уравнения, не смещая курсор ввода, на панели Symbolic нажимаем кнопку solve (см. рис. 6)
Рис. 6. Панель Symbolic
Затем ставим запятую и вводим переменную, относительно которой нужно решить уравнение (в нашем случае это x). Нажимаем Enter на клавиатуре и смотрим результат (см. рис. 7)
Рис. 7. Результат решения уравнения методом Solve
Обратите внимание, что метод подходит как для численного так и для символьного представления результатов

Donec eget ex magna. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fergiat. Pellentesque in mi eu massa lacinia malesuada et a elit. Donec urna ex, lacinia in purus ac, pretium pulvinar mauris. Curabitur sapien risus, commodo eget turpis at, elementum convallis elit. Pellentesque enim turpis, hendrerit tristique.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dapibus rutrum facilisis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Etiam tristique libero eu nibh porttitor fermentum. Nullam venenatis erat id vehicula viverra. Nunc ultrices eros ut ultricies condimentum. Mauris risus lacus, blandit sit amet venenatis non, bibendum vitae dolor. Nunc lorem mauris, fringilla in aliquam at, euismod in lectus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In non lorem sit amet elit placerat maximus. Pellentesque aliquam maximus risus, vel venenatis mauris vehicula hendrerit.
Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fersapien risus, commodo eget turpis at, elementum convallis elit. Pellentesque enim turpis, hendrerit tristique lorem ipsum dolor.
Похожие публикации:
- Где windows movie maker в windows 10
- Где находится movie maker windows 7
- Где хранятся файлы icq
- Как бесплатно зарегистрироваться в wechat
MathCAD — это просто! Часть 2. Уравнения

Решение уравнений на бумаге — это задача, с которой каждый знаком еще со школьной скамьи. Сначала мы учились решать простые линейные уравнения, деля а на b и получая x, потом — системы уравнений, затем переходили к квадратным уравнениям. Находим дискриминант, извлекаем корень, делим, складываем… Все это вам знакомо, не так ли? Знакомы, наверное, и трансцендентные уравнения: тригонометрические, логарифмические (они же показательные), смешанные…
Системы трансцендентных уравнений — это вообще песня, причем песня из серии «этот стон у нас песней зовется». Люди давно уже пришли к выводу, что решать уравнения с помощью компьютера — отнюдь не роскошь, а вполне разумный подход к делу. Только раньше каждый, кто желал решить уравнение, должен был уметь программировать и владеть при этом какими-нибудь численными методами — например, методом Гаусса для решения систем линейных уравнений или методом Зейделя для решения трансцендентных. Сейчас эти все методы, конечно, тоже используются, но большая часть пользователей могут забыть их как страшный сон — все эти вычисления возможны в MathCAD’е, и именно о том, как их выполнять в этом замечательном математическом пакете, я сейчас и расскажу.
Аналитическое решение уравнений
Довольно значительное число уравнений поддаются аналитическому решению — т.е. решению в обобщенном виде, когда корни уравнения представляются в виде какой-то формулы, выражающей их зависимость от входящих в уравнение функций и различных коэффициентов перед ними. При этом, однако, надо заметить, что такой подход применим отнюдь не ко всем уравнениям — большая часть трансцендентных уравнений не может быть решена аналитически. Поэтому мы сейчас будем говорить преимущественно о полиномиальных уравнениях, известных также под названием алгебраических. Алгебраическим называется уравнение, которое можно преобразовать так, что в левой части будет многочлен от одной или нескольких неизвестных, а в правой — нуль. Степень многочлена называется степенью уравнения. Простейшие алгебраические уравнения: линейное уравнение — уравнение 1-й степени с одним неизвестным ax + b = 0, имеющее один действительный корень; квадратное уравнение — уравнение 2-й степени ax2 + bx + c = 0, которое в зависимости от значения коэффициентов может иметь либо два различных, либо два совпадающих действительных корня либо не иметь действительных корней. Вообще алгебраическое уравнение степени n не может иметь более n корней, что доказывается в рамках основной теоремы алгебры, которую в ВУЗах проходят в курсе математического анализа.
Что ж, давайте, пожалуй, перейдем к практике. То есть запустим MathCAD, включим панель символьных вычислений (Symbolic) — о том, как это сделать, уже было рассказано ранее в первой статье про MathCAD. На этой панели нам с вами понадобится оператор solve — именно он отвечает за аналитическое решение уравнений. Общий вид этого оператора такой: уравнение solve, переменная > решение. Здесь уравнение — это именно то уравнение, решение которого мы хотим найти в общем виде, а переменная — это символ, обозначающий в нашем уравнении переменную величину. Его нужно указывать для того, чтобы MathCAD (не такой уж он умный, как иногда кажется!) мог отличить переменную от коэффициентов. Давайте попробуем найти решение обычного квадратного уравнения ax2 + bx + c = 0. Для этого нажмите на кнопку Solve на панели инструментов символьных вычислений и на то место, где должно быть записано уравнение, введите наше квадратное уравнение. Здесь есть два тонких момента. Во-первых, чтобы записать «x2», нужно после x нажать Shift + 6 — тогда вы перейдете от записи переменных к записи показателя степени. Чтобы затем переключиться в режим записи других слагаемых в уравнении, достаточно нажать на клавиатуре стрелку вправо. Вообще навигация по записям в MathCAD при помощи стрелок вполне прозрачная — вы передвигаетесь стабильно в том направлении, куда указывает стрелка, и перескакиваете в показатели степени и индексы автоматически. Во-вторых, при записи уравнения в операторе solve «равно» нужно не обычное, а логическое — оно записывается с клавиатуры комбинацией Ctrl + =. При этом, если правая часть вашего уравнения равна нулю, то и ноль, и знак равенства можно опускать — MathCAD посчитает, что уравнение записано в стандартном виде, и успешно (если это, конечно, возможно) решит его. Итак, давайте посмотрим, что получилось от «скармливания» оператору solve нашего с вами квадратного уравнения.
Как видите, ничего неожиданного не произошло: MathCAD честно воспользовался известными всем еще из школьного курса алгебры формулами Виета, а решения уравнения записал в виде вектора-столбца. Несложно самостоятельно убедиться в том, что MathCAD знает и формулы Кордано для решения кубических уравнений — их он также может решать с произвольными коэффициентами. Правда, конечно, решения получаются несравненно более громоздкими, а потому я их здесь не буду приводить. Это же справедливо и для уравнений четвертой степени, для которых также существуют аналитические решения. Решение других видов уравнений (например, показательных) в аналитическом виде также вполне возможно. Например, если мы запишем уравнение eax + b = 0, то MathCAD совершенно справедливо сообщит, что решением этого уравнения будет выражение ln(-b)/a. Точно так же можно решать простые тригонометрические уравнения.
Численное решение уравнений с помощью функции solve
Но, конечно, такие красивые результаты в максимально обобщенной форме мы сможем получать далеко не всегда. Уже на уравнениях пятой степени MathCAD спотыкается, и произвольные коэффициенты приходится заменять постоянными. Впрочем, в этом ничего страшного нет — даже уравнения третьей степени со всеми произвольными коэффициентами решать вряд ли имеет смысл, поскольку гораздо проще подставить коэффициенты и получить нормальные числа в решении — в конце концов, общие формулы для решения алгебраических выражений используются именно из-за того, что живому человеку гораздо проще подставить числа в готовую формулу, чем подбирать каждый раз корни уравнения. С компьютерами дело обстоит в большинстве случаев с точностью до наоборот — получить численное решение уравнения зачастую гораздо проще, чем аналитическое. Оператор solve умеет находить и численные решения уравнений. Если аналитическое решение получить не удается, он автоматически подключает систему нахождения численных решений уравнений. Так что, если мы запишем совершенно невообразимое для нормального человека уравнение x25 + sin(x) + ln(x) + ex + 1/x = 0, то MathCAD, и глазом не моргнув, выдаст нам результат вычислений.
Но численное решение уравнений с помощью функции solve — честно говоря, не лучшая идея. Некоторые виды уравнений она решает из рук вон плохо — в первую очередь, конечно же, это относится к уравнениям тригонометрическим. Начнем с того, что эта функция выдает решение только для одного периода в то время, как большая часть решений тригонометрических уравнений описывается с помощью специального целочисленного параметра, выражающего номер периода. Но это, в общем-то, не самое худшее, поскольку иногда использование solve приводит к получению совершенно неверного результата, который при подстановке его в уравнение дает совершенно неверное значение. Конечно, это является минусом MathCAD’а, но положение дел совсем не фатально. Если использовать специальные методы решения трансцендентных уравнений, то численные результаты будут совершенно адекватными. Можно также пойти по другому пути, например, преобразуя выражения с помощью символьного процессора MathCAD (о том, как это делается, я еще расскажу в дальнейшем), а затем уже решая с помощью solve более простые уравнения, получившиеся в результате этих преобразований. Численное решение уравнений требует от пользователя понимания того, что он ожидает в результате этого решения получить. Поэтому прежде, чем приступать к рассказу о самом процессе численного решения, я расскажу об одной полезной функции, которая пригодится для численного решения простых трансцендентных уравнений.
Решение уравнений с помощью функции root
Эта очень хорошая и полезная во всех смыслах функция имеет лишь одно ограничение — она может найти всего один корень. К сожалению, несущественным это ограничение назвать, честно говоря, сложно. Впрочем, вы увидите, что и его запросто можно обойти — разработчики MathCAD, по крайней мере, предусмотрели такую возможность, и ею вполне можно воспользоваться, если, конечно, в этом есть необходимость. Функция root имеет следующий вид: root(функция, переменная). Функция — это фактически левая часть уравнения в стандартном виде, т.е. уравнения, в котором левая часть равна нулю. Переменная — это, конечно же, тот символ, который обозначает в функции переменную величину. Для использования функции root нужно задать начальное приближение — то есть число, отталкиваясь от которого, функция root будет искать корни нашего уравнения. От начального приближения может весьма существенно зависеть и сам результат работы функции root, особенно если искомые корни уравнения находятся сравнительно близко. Начальное приближение задается очень просто: набираем имя нашей переменной до функции root, ставим двоеточие (MathCAD самостоятельно преобразует его в знак присвоения «: (max-width: 440px) 100vw, 545px» src=kg81401e.jpg>
В принципе, вместо начального приближения можно задать интервал, в пределах которого должно лежать решение, отыскиваемое нами с помощью функции root. Для этого после имени переменной в списке параметров функции нужно (через запятую, конечно же) указать начало и конец интервала, на котором должно располагаться решение. У этого способа есть только одно существенное но: числа, определяющие начало и конец этого интервала, должны иметь разные знаки. При этом, если уравнение не имеет действительных корней, то и интервал нужно задавать в комплексной форме. Мнимая единица при этом записывается как i или как j.
Как видите, для численного нахождения уравнений с помощью функции root необходимо довольно точно представлять, где именно должны располагаться корни уравнения — сделать это можно, например, с помощью графика функции, на котором с помощью трассировки можно определить нули функции. Но о том, как строить графики и как ими потом пользоваться, как-нибудь в другой раз.
SF, spaceflyer@tut.by
Компьютерная газета. Статья была опубликована в номере 14 за 2008 год в рубрике soft
Как в маткаде решить уравнение – Решение уравнений и систем уравнений в Mathcad

Уравнение и системы уравнений в математическом пакете Mathcad в символьном виде решаются с использованием специального оператора символьного решения solve в сочетании со знаком символьного равенства, который может быть также введен с рабочей панели “Символика”. Например:

Аналогичные действия при решении уравнений в Mathcad можно выполнить, используя меню “Символика”. Для этого необходимо записать вычисляемое выражение. Затем выделить переменную, относительно которой решается уравнение, войти в меню Символика, Переменная, Разрешить. Например:
В случае, если необходимо упростить полученный результат, используется знак равенства [=]. Например:
При решении некоторых уравнений, результат включает большое количество символов. Mathcad сохраняет его в буфере, а на дисплей выводитcя сообщение: “ This array has more elements than can be displayed at one time. Try using the “submatrix” function” – “Этот массив содержит больше элементов, чем может быть отображено одновременно. Попытайтесь использовать функцию “submatrix””. В этом случае рекомендуется использовать численное решение. Или, в случае необходимости, символьное решение может быть выведено и отображено на дисплее.
Символьное решение может быть получено с использованием блока given … find. В этом случае при записи уравнения для связи его левой и правой части использует символ логического равенства “=” с панели инструментов Boolean, например:
Аналогичным способом решаются системы уравнений в символьном виде. Ниже приводятся примеры решения систем уравнений в символьном виде различными способами. При использовании оператора символьного решения
solve в сочетании со знаком символьного равенства система уравнений должна быть задана в виде вектора, который вводится вместо левого маркера оператора solve, а перечень переменных, относительно которых решается система, вместо правого маркера. Например:
Пример использования блока given…find для решения системы уравнений:

Уравнения с одним неизвестным в Mathcad
Простейший способ найти корень уравнения с одним неизвестным в Mathcad обеспечит функция root ( ). Аргументами функции root ( ) являются вид функции определяющей решаемое уравнение и имя переменой, относительно которой ищется решение — root (f(x),x) Если уравнение в Mathcad содержит несколько корней, то функция обеспечивает нахождение единственного корня, ближайшего к заданному начальному значению для искомой переменной. Точность вычислений может быть увеличена или уменьшена посредством задания значения переменной TOL, равной по умолчанию 10-3 и определённой в меню Math, Options (Математика, Опции). Установленное значение TOL также оказывает влияние на точность вычислений.

В случае, если решаемое уравнение в Mathcad представлено полиномом, то все его решения могут быть получены с помощью функции polyroots (v). В качестве аргументов этой функции выступает вектор коэффициентов полинома –v, а результат представляется в виде вектора корней полинома. На листинге представлен пример нахождения корней уравнений с использованием функций root ( ) и polyroots ( ).

Другим способом решения уравнений в Mathcad является применение специального вычислительного блока, начинающегося с ключевого слова given с использованием функций find( ) и minerr ( ).
Блок имеет следующую структуру:
Начальное значение искомой переменной
Выражение с использованием функции find( ) или minerr ( )
Нахождение корней уравнения в Mathcad с использованием блока given…find ( ) в чем – то аналогично использованию функции root ( ). В Mathcad задается начальное значение для искомой переменной, после находится решение, ближайшее к заданному начальному условию. Использовании блока given…minerr ( ) имеет существенные особенности. Решение будет найдено в любом случае, даже при его отсутствии. Дело в том, что ищется не решение системы, а минимальная невязка уравнений. На листинге рассмотрена функция, заведомо не имеющая действительных корней и при использовании блока given…minerr ( ) найдено решение, значение, которое наиболее приближено к оси х, то есть обеспечивает минималь-ную невязку. Значение невязки (ошибки) показывает системная переменная ERR.
Решение системы уравнений в Mathcad
Первоначально рассмотрим СЛАУ в Mathcad. Для их решения может использоваться блок given …find() или специальная функция lsolve(). Применение блока given …find() предопределяет необходимость задания начальных значений искомых переменных. Далее после ключевого слова given описывается СЛАУ и с помощью find() находится решение. Следует указать, что в том случае, когда
СЛАУ в Mathcad имеет бесконечное множество решений блок given …find() дает конкретный результат, что несомненно следует отнести к недостаткам. В случае отсутствия решения будет выдано сообщение “Matrix is singular. Cannot compute its inversу – Матрица сингулярная. Нельзя вычислить эту инверсию”.
Применение функции lsolve( ) позволяет избежать этого недостатка. Функция lsolve(M,b) имеет два аргумента. M – матрица коэффициентов при неизвестных, b – вектор свободных членов. На листинге приведен пример решения СЛАУ.
Пример решения СЛАУ:

Для решения системы нелинейных уравнений используются два блока: given…find() и given…minerr (). Так как система нелинейных уравнений может иметь несколько решений, то полученные результаты зависят от начальных значений искомых переменных. В обоих случаях получаются приближенные решения, для которых рекомендуется делать проверку. Обычно в Mathcad требуется, чтобы количество уравнений было равно количеству искомых переменных, но в некоторых случаях, когда с точки зрения классической математики может быть получено точное решение и при меньшем количестве уравнений, данное условие может быть нарушено. На листинге представлены примеры использования блоков
given…find() и given…minerr () для решения систем нелинейных уравнений.

Урок 24. Решение уравнений в Mathcad – использование функций
Решение уравнений является важным для решения практических задач. Поэтому уделим уравнениям еще один урок.
Блок решения в функции
Если Вы хотите исследовать изобразить на графике поведение уравнения в зависимости от значения определенного параметра, Вам, возможно, придется решить систему уравнений много раз. Вы можете сделать это, используя блок решения в функции. Покажем на примере: предположим, мы хотим исследовать поведение решения следующего уравнения в зависимости от различных значения параметра

Блоку решения не нужно ни значение параметра, ни начальное приближение, поскольку решение есть функция этих двух значений. Эти значения мы будем задавать при вызове функции.
Функцию можно использовать сколько угодно раз:
Использовать функцию можно с диапазоном переменных:

Такая техника решения не самая надежная. Если хотя бы одно решение не может быть найдено, Вы не получите и решений для других параметров (это произойдет, если задать A<0.7). Поэтому лучше заранее проверить свою функцию.
Сообщения об ошибке можно избежать, написав маленькую программу:
Если блок решения выдает сообщение об ошибке, на выходе получим значение NaN (Not a Number – «Не Число»), которое просто не отображается на графике:
Построим две ветки уравнения с использованием этого приема:

Когда переменных много
Расчеты часто содержат несколько переменных, но Вам, возможно, придется использовать лишь некоторые из них. В качестве примера рассмотрим систему восьми уравнений, где нам нужно получить только значения X и Y. Начальные приближения следует задать для всех переменных:

Решение представляет собой вектор из восьми элементов, но нам нужны лишь элементы с индексами 0 и 1.
Минимизация ошибки
Find() – не единственный решатель в Mathcad. Еще один полезным решателем является Minnerr(), находящий решения, которые минимизируют ошибку в системе уравнений. Рассмотрим пример: есть набор данных, которые мы хотим аппроксимировать уравнением Бейтмена:

Мы хотим подобрать три константы в уравнении Бейтмена таким образом, чтобы ошибка приближения была минимальна. У нас есть семь уравнений (по одной для каждого эксперимента) и три константы, так что в системе избыток данных. Minerr() может обработать эту проблему:

- Три константы являются переменными для этой системы.
- Переменные не могут иметь счетных индексов.
- У параметров (t и c) могут быть счетные индексы.
Возможно, Вам хотелось бы использовать цикл for для семи уравнений, но в блоке решений этого сделать нельзя.
Для полностью определенных систем (с одинаковым числом независимых уравнений и неизвестных) функция Minerr() дает тот же ответ, что и Find().
Резюме
В этом уроке мы определили способы расширенного использования блоков решения:
- Вы можете определить вывод блока решения как функцию. Таким образом в блок решения можно передавать параметры и начальные приближения.
- Если при вычислении точек для графика хотя бы одно решение не будет найдено, то график не будет построен. Этой ошибки можно избежать, написав небольшую программу с использованием “try/on error”, которая выводит NaN (Not a Number – Не Число), если результат отсутствует.
- Для двух и более неизвестных (и уравнений) вывод блока решения является вектором. Если нужен один или два элемента этого вектора, их можно вывести, используя подстрочные индексы.
- Вместо функции Find() можно использовать Minerr() – она минимизирует ошибку для заданного набора ограничений, в том числе, если данные избыточны. Minerr() часто может дать приближенный результат, когда Find() выдает ошибку.
Другие интересные материалы
2. Решение уравнений в Mathcad
2.1. Численное решение уравнения
Для простейших уравнений вида f(x) = 0 решение в Mathcad находится с помощью функции root
root( f(х1, x2, …), х1, a, b )
Возвращает значение х1, принадлежащее отрезку [a, b], при котором выражение или функция f(х) обращается в 0. Оба аргумента этой функции должны быть скалярами. Функция возвращает скаляр.
Аргументы:
f(х1, x2, …) — функция, определенная где-либо в рабочем документе, или выражение. Выражение должно возвращать скалярные значения.
х1 — — имя переменной, которая используется в выражении. Этой переменной перед использованием функции root необходимо присвоить числовое значение. Mathcad использует его как начальное приближение при поиске корня.
a, b – необязательны, если используются, то должны быть вещественными числами, причем a b.
Наиболее распространен графический способ определения начальных приближений. Принимая во внимание, что действительные корни уравнения f(x) = 0 — это точки пересечения графика функции f(x) с осью абсцисс, достаточно построить график функции f(x) и отметить точки пересечения f(x) с осью Ох, или отметить на оси Ох отрезки, содержащие по одному корню. Построение графиков часто удается сильно упростить, заменив уравнение f(x) = 0 равносильным ему уравнением:
где функции f1(x) и f2(x) — более простые, чем функция f(x). Тогда, построив графики функций у = f1(x) и у = f2(x), искомые корни получим как абсциссы точек пересечения этих графиков.
Пример. Графически отделить корни уравнения:
Уравнение (1) удобно переписать в виде равенства:

lg x=.
Отсюда ясно, что корни уравнения (1) могут быть найдены как абсциссы точек пересечения логарифмической кривой y = lg x и гиперболы y =
. Построив эти кривые, приближенно найдем единственный корень
уравнения (1) или определим его содержащий отрезок [2, 3].
Упражнение 1. Построить график функции f(x) (Таблица 1) и приблизительно определить один из корней уравнения. Решить уравнение f(x)= 0 с помощью встроенной функции Mathcad root.
