Какие виды функции в mathcad вам известны
Функции в Mathcad
Произвольные зависимости между входными и выходными параметрами задаются при помощи функций. Функции принимают набор параметров и возвращают значение, скалярное или векторное (матричное). В формулах рабочего листа можно использовать стандартные встроенные функции, а также функции, определенные пользователем.
Чтобы использовать функцию в выражении, ее следует вызвать по имени, указав в значения фактических входных параметров в скобках после имени функции. Имена простейших математических функций можно ввести с панели инструментов Калькулятор (Arithmetic). Информацию о других функциях можно почерпнуть в справочной системе или в приложении. Вставить в выражение стандартную функцию можно при помощи команды Вставка > Функция (Insert > Function). В диалоговом окне (рис. 1.9) слева выбирается категория, к которой относится функция, а справа – конкретная функция. В нижней части окна выдается информация о выбранной функции. При вводе функции через это диалоговое окно автоматически добавляются скобки и заполнители для значений параметров.
Пользовательские функции должны быть сначала определены. Определение задается при помощи оператора присваивания. В левой части указывается имя пользовательской функции и, в скобках, формальные параметры – переменные, от которых она зависит. Справа от знака присваивания эти переменные должны использоваться в выражении, например

Если для вычисления пользовательской функции необходимо выполнить несколько операций, то в теле функции формируют необходимое число строк с помощью кнопки Add line панели Программирование и в появившиеся заполнители помещают формулы. Отметим, что в операторах тогда допустима операция внутреннего присваивания, задаваемая стрелкой, а все вычисленные подобным образом переменные являются локальными и за пределами функции будут не определенны. Так, на рис. 1.10 функция fct вычисляется за три действия, а переменные с2k и c3k будут видимыми только внутри функции.

При применении пользовательской функции в последующих формулах ее имя вводят вручную. В диалоговом окне Вставка функции оно не отображается.
Какие виды функции в mathcad вам известны
Как создается функция пользователя (привести пример)?
Переменная – объект для передачи данных внутри документа. Переменные: — простые (целые, вещественные, комплексные); — интервальные; — векторы и матрицы. Тип переменной определяется ее значением; переменные могут быть числовыми, строковыми, символьными и т. д. Имена констант, переменных и иных объектов называют идентификаторами. Идентификаторы в MathCAD представляют собой набор латинских или греческих букв и цифр.
В MathCAD содержится небольшая группа особых объектов, которые нельзя отнести ни к классу констант, ни к классу переменных, значения которых определены сразу после запуска программы. Их правильнее считать системными переменными, имеющими предопределенные системой начальные значения Изменение значений системных переменных производят во вкладке Встроенные переменные диалогового окна MathOptions команды Математика Þ Опции.
Обычные переменные отличаются от системных тем, что они должны быть предварительно определены пользователем, т. е. им необходимо хотя бы однажды присвоить значение. В качестве оператора присваивания используется знак:=, тогда как знак = отведен для вывода значения константы или переменной.
Какие системные переменные Вам известны? Как узнать их значение? Как изменить их значение?
p = 3.14159; e = 2.71828- Основание натурального логарифма; ¥-бесконечность; %; i, j- Мнимая единица; TOL =10 -3 — Допустимая погрешность при различных алгоритмах аппроксимации (интегрирования, решения уравнений). Изменить значение системной переменной TOL и ниже следующих можно с помощью команды МатематикаÞПараметры;CTOL = 10 -3 — Устанавливает точность ограничений в решающем блоке, чтобы решение было допустимым; ORIGIN = 0- Определяет индекс первого элемента векторов и матриц; FRAME = 0- Используется в качестве счетчика при создании анимаций; PRNPRECISION = 4- Число значащих цифр; PRNCOLWIDTH = 8- Число позиций для числа;CWD- Текущий рабочий каталог в форме строки.
Какие виды функций в Mathcad Вам известны?
Функция – выражение, согласно которому проводятся некоторые вычисления с аргументами и определяется его числовое значение.
Функции в MathCAD могут быть встроенные, т.е. заблаговременно введенные разработчиками, и определенные пользователем.
Операторы и функции системы MathCAD
Операторы в системе — это команды, выраженные в виде специальных знаков, предназначенные для выполнения различных математических операций:
факториал X! 4!=24
абсолютное значение |x |-5|=5
нижний индекс Х[i Xi
суммирование членов ряда i$X åXi
перемножение членов ряда i i#x
определенный интеграл x&f(x)
Функции — exp(x), ln(x), log(x), cos(x) и т.д.
Суммирование членов ряда
i$х i:=1.5
Векторными и матричными переменными в системе MathCAD, называются переменные с заданными пределами изменения.
Можно использовать другую конструкцию:
шаг в этом случае равен Nслу-Nнач
Цикл с нецелоисчисленным изменением
Пример реализации двойного цикла с вложением.
i:=1..4 — внешний цикл
+Система MathCAD оперирует с двумя типами массивов. Первый -одномерные массивы или векторы, второй — двумерные или матрицы.
Для задания вектора Alt+M, после этого может быть введено количество строк и столбцов.
Векторы обозначаются V, матрицы M, скалярные величины — буквой z.
z*v умножение вектора на скаляр
v1*v2 умножение двух векторов
m1+m2 сложение матриц
m1-m2 вычитание матриц
m n возведение матрицы в n-степень
m t транспортирование матрицы (обозначается как M[Alt]!)
Sv сумма всех элементов вектора (обозначается как Alt+$+V)
Система имеет так же ряд функций:
length(v) количество элементов вектора
last(v) возврашает индекс последнего элемента вектора max(v)максимальное значение
min(v) минимальное значение
rows(m) число строк матрицы
cols(m) число столбцов
tr(m) след матрицы m, сумма её диагональных элементов
Стандартные и пользовательские функции
Произвольные зависимости между входными и выходными параметрами задаются при помощи функций. Функции принимают набор параметров и возвращают значение, скалярное или векторное (матричное). В формулах можно использовать стандартные встроенные функции, а также функции, определенные пользователем.
Пользовательские функции должны быть сначала определены. Определение задается при помощи оператора присваивания. В левой части указывается имя пользовательской функции и, в скобках, формальные параметры — переменные, от которых она зависит. Справа от знака присваивания эти переменные должны использоваться в выражении. При использовании пользовательской функции в последующих формулах ее имя вводят вручную. В диалоговом окне Insert Function (Вставка функции) оно не отображается.
Приведем обозначения основных из н y их:
1. Тригонометрические и обратные функции:
sin(z), cos(z), tan(z), asin(z), acos(z), atan(z)
z — угол в радианах
2. Гиперболические и обратные функции:
sinh(z), cosh(z), tanh(z), asinh(z), acosh(z), atanh(z)
3. Экспоненциальные и логарифмические:
ln(z) — натуральный логарифм
log(z) — десятичный логарифм
4. Cтатистические функции:
mean(x) — среднее значение
stdev(x) — среднеквадратическое отклонение
cnorm(x)- функция нормального рапределения
erf(x) — функция ошибки
Г(x) — гамма-функция Эйлера
5. Функции Бесселя:
J0(x), J1(x), Jn(n,x) — функции Бесселя первого порядка
Y0(x), Y1(x), Yn(n,x) — функции Бесселя второго порядка
6. Функции комплексного переменного:
Re(z) — вещественная часть комплексного числа
Im(z) — мнимая часть комплексного числа
arg(z) — аргумент комплексного числа
7. Преобразование Фурье:
U:=fft(V) — прямое преобразование (V- вещественное)
V:=ifft(U) — обратное преобразование (V- вещественное)
U:=cfft(V) — прямое преобразование (V- комплексное)
V:=icfft(U) — обратное преобразование (V- комплексное)
8. Корреляционная функция — позволяет рассчитывать коэффициент корреляции двух векторов vx и vy и определить уравнение линейной регрессии:
corr(vx,vy) — коэффициент корреляции
slope(vx,vy) — коэффициент наклона линии регрессии
intercept(vx,vy) — начальная координата линии регрессии
9. Линейная интерполяция:
vx,vy- векторы значений аргумента и функций. x- значение аргумента,
для которого проводится интерполяция
10.Функция для определения корней алгебраических и трансцендентных уравнений:
root(уравнения, переменная) — значение переменной, когда уравнение равно нулю
11.Датчик случайных чисел:
rnd(x) — случайное число с равномерным распределением от 0 до x
12.Целая часть переменной:
floor(x)- ближайшее наименьшее целое число
ceil(x)- ближайшее наибольшее целое число
mod(x,y)- остаток от деления x на y
until(x,y) — когда x
15.Функция условного перехода:
if(условие,x,y) — если условие выполняется, то функция равняется x, иначе y
16.Единичная функция (функция Хевисайда):
Ф(x) — если x>0. То функция равна 1, иначе 0
17.Логические выражения и операции. Простейшими видами логических выражений являются следующие: логическая константа, логическая константа, логическая константа, логическая переменная, выражение отношения. Например, при x:=0.5 операции отношения присваивают L истину или ложь (1 или 0):
18.Функции, определяемые пользователем. Пользователь может самостоятельно определить необходимые ему функции, отсутствующие среди встроенных функций пакета.
Текст, помещенный в рабочий лист, содержит комментарии и описания и предназначен для ознакомления, а не для использования в расчетах. Программа MathCad определяет назначение текущего блока автоматически при первом нажатии клавиши ПРОБЕЛ. Если введенный текст не может быть интерпретирован как формула, блок преобразуется в текстовый и последующие данные рассматриваются как текст. Создать текстовый блок без использования автоматических средств позволяет команда Insert > Text Region (Вставка > Текстовый блок).
Иногда требуется встроить формулу внутрь текстового блока. Для этого служит команда Insert > Math Region (Вставка > Формула).
Решение уравнений и систем

Для численного поиска корней уравнения в программе MathCad используется функция root. Она служит для решения уравнений вида f(x) = 0, где f (х) — выражение, корни которого нужно найти, a x — неизвестное. Для поиска корней с помощью функции root, надо присвоить искомой переменной начальное значение, а затем вычислить корень при помощи вызова функции: root(f(x),x). Здесь f(x) — функция переменной х, используемой в качестве второго параметра. Функция root возвращает значение независимой переменной, обращающее функцию f(x) в 0. Например:
Если уравнение имеет несколько корней (как в данном примере), то результат, выдаваемый функцией root, зависит от выбранного начального приближения. Если надо решить систему уравнений (неравенств), используют так называемый блок решения, который начинается с ключевого слова given (дано) и заканчивается вызовом функции find (найти). Между ними располагают «логические утверждения», задающие ограничения на значения искомых величин, иными словами, уравнения и неравенства. Всем переменным, используемым для обозначения неизвестных величин, должны быть заранее присвоены начальные значения.
Чтобы записать уравнение, в котором утверждается, что левая и правая части равны, используется знак логического равенства — кнопка Boolean Equals (Логически равно) на панели инструментов Evaluation (Вычисление). Другие знаки логических условий также можно найти на этой панели. Заканчивается блок решения вызовом функции find, у которой в качестве аргументов должны быть перечислены искомые величины. Эта функция возвращает вектор, содержащий вычисленные значения неизвестных.
Чтобы построить двумерный график в координатных осях Х-У, надо дать команду
Insert> Graph > X-Y Plot (Вставка > График > Декартовы координаты). В области размещения графика находятся заполнители для указания отображаемых выражений и диапазона изменения величин. Заполнитель у середины оси координат предназначен для переменной или выражения, отображаемого по этой оси. Обычно используют диапазон или вектор значений. Граничные значения по осям выбираются автоматически в соответствии с диапазоном изменения величины, но их можно задать и вручную. В одной графической области можно построить несколько графиков.
С помощью аналитических вычислений находят аналитические или полные решения уравнений и систем, а также проводят преобразования сложных выражений (например, упрощение). Иначе говоря, при таком подходе можно получить нечисловой результат. В программе MathCad конкретные значения, присвоенные переменным, при этом
игнорируются — переменные рассматриваются как неопределенные параметры. Команды для выполнения аналитических вычислений в основном сосредоточены в меню Symbolics (Аналитические вычисления). Чтобы упростить выражение (или часть выражения), надо выбрать его при помощи уголкового курсора и дать команду Symbolics > Simplify (Аналитические вычисления > Упростить). При этом выполняются арифметические действия, сокращаются общие множители и приводятся подобные члены, применяются тригонометрические тождества, упрощаются выражения с радикалами, а также выражения, содержащие прямую и обратную функции (типа e Inx ). Некоторые действия по раскрытию скобок и упрощению сложных тригонометрических выражений требуют применения команды Symbolics > Expand (Аналитические вычисления > Раскрыть). Команду Symbolics > Simplify (Аналитические вычисления > Упростить) применяют и в более сложных случаях. Например, с ее помощью можно:
- вычислить предел числовой последовательности, заданной общим членом;
- найти общую формулу для суммы членов числовой последовательности, заданной общим членом;
- вычислить производную данной функции;
- найти первообразную данной функции или значение определенного интеграла.
Другие возможности меню Symbolics (Аналитические вычисления) состоят в выполнении аналитических операций, ориентированных на переменную, использованную в выражении. Для этого надо выделить в выражении переменную и выбрать команду из меню Symbolics> Variable (Аналитические вычисления > Переменная). Команда Solve (Решить) ищет корни функции, заданной данным выражением, например, если выделить уголковым курсором переменную х в выражении ах 2 + bx + с, то в результате применения команды Symbolics > Variable > Solve (Аналитические вычисления > Переменная > Решить), будут найдены все корни:
Другие возможности использования этого меню включают:
- аналитическое дифференцирование и интегрирование: Symbolics > Variable > Differentiate (Аналитические вычисления > Переменная > Дифференцировать) и Symbolics > Variable > Integrate (Аналитические вычисления > Переменная > Интегрировать);
- замена переменной: Symbolics > Variable > Substitute (Аналитические вычисления > Переменная > Подставить) — вместо переменной подставляется содержимое буфера обмена;
- разложение в ряд Тейлора: Symbolics > Variable > Expand to Series (Аналитические вычисления > Переменная > Разложить в ряд),
- представление дробно-рациональной функции в виде суммы простых дробей с линейными и квадратичными знаменателями: Symbolics > Variable > Convert to Partial Fraction (Аналитические вычисления > Переменная > Преобразовать в простые дроби).
Наконец, самым мощным инструментом аналитических вычислений является оператор аналитического вычисления, который вводится с помощью кнопки Symbolic Evaluation (Вычислить аналитически) на панели инструментов Evaluation (Вычисление). Его можно, например, использовать для аналитического решения системы уравнений и неравенств. Блок решения задается точно так же, как при численном решении (хотя начальные значения переменных можно не задавать), а последняя формула блока должна выглядеть

find(x,y. )®, где в скобках приведен список искомых величин, а далее следует знак аналитического вычисления, отображаемый в виде стрелки, направленной вправо. Любое аналитическое вычисление можно применить с помощью ключевого слова. Для этого используют кнопку Symbolic Keyword Evaluation (Вычисление с ключевым словом) на панели инструментов Evaluation (Вычисление). Ключевые слова вводятся через панель инструментов Symbolics (Аналитические вычисления). Они полностью охватывают возможности, заключенные в меню Symbolics (Аналитические вычисления), позволяя также задавать дополнительные параметры.
Программирование
Наиболее заметная «изюминка» MathCAD, которую сразу оценили пользователи, — это встроенный язык программирования. В MathCAD, по сути, не встроен язык программирования, а просто снято ограничение на использование составных операторов в теле алгоритмических управляющих конструкций выбор и повторение. Кроме того, добавлены цикл с параметром и оператор досрочного выхода break. Алгоритмические конструкции и составные операторы в среде MathCAD вводятся нажимом одной из семи кнопок панели управления:
| Add line | |
| if | while |
| for | break |
| otherwise |
Add line — добавить строку программы, тела цикла, плеча альтернативы и т.д.
While — при нажатии на эту кнопку на экране появляется заготовка цикла с предпроверкой: слово while с двумя пустыми квадратиками. В квадратик правее while нужно записать булево выражение (переменную), управляющее циклом, а во второй квадратик (ниже while ) — тело цикла.
Операторы и функции системы MathCAD
MATHCAD — универсальный математический пакет, предназначенный для выполнения инженерных и научных расчетов. Основное преимущество пакета — естественный математический язык, на котором формируются решаемые задачи. Объединение текстового редактора с возможностью использования общепринятого математического языка позволяет пользователю получить готовый итоговый документ. Пакет обладает широкими графическими возможностями, расширяемыми от версии к версии. Практическое применение пакета существенно повышает эффективность интеллектуального труда.
От других продуктов аналогичного назначения MATHCAD отличается ориентация на создание высококачественных документов (докладов, отчетов, статей) в режиме WYSIWYG (What You See Is What You Get). Это означает, что, внося изменения, пользователь немедленно видит их результаты и в любой момент может распечатать документ во всем блеске. Работа с пакетом за экраном компьютера практически совпадает с работой на бумаге с одной лишь разницей — она более эффективна. Преимущества MATHCAD состоит в том, что он не только позволяет провести необходимые расчеты, но и оформить свою работу с помощью графиков, рисунков, таблиц и математических формул. А эта часть работы является наиболее рутинной и мало творческой, к тому же она и время емкая и малоприятная.
Для тех, кто работает в группах, предусмотрены средства коллективной работы. Возможна поддержка связи с удаленными пользователями по электронной почте: рабочее пространство в стандартном формате, как и электронное сообщение, можно пересылать непосредственно из программы. Так же при интеграции с информационной системой World Wide Web, позволяющая экспортировать и импортировать рабочие документы в Internet, просматривать по WWW- сообщения и осуществлять гипертекстовые переходы для доступа к информации.
НАЗНАЧЕНИЕ СИСТЕМЫ
MathCAD является интегрированной системой программирования, ориентированной на проведение математических и инженерно-технических расчетов.
Система MathCAD содержит текстовый редактор, вычислитель и графический процессор.
Текстовый редактор — служит для ввода и редактирования текстов. Тексты являются комментариями и входящие в них математические выражения не выполняются. Текст может состоять из слов, математических выражений и формул, спецзнаков. Отличительная черта системы — использование общепринятой в математике символики (деление, умножение, квадратный корень).
Вычислитель — обеспечивает вычисление по сложным математических формулам, имеет большой набор встроенных математических функций, позволяет вычислять ряды, суммы, произведения, определенный интеграл, производные, работать с комплексными числами, решать линейные и нелинейные уравнения, проводить минимизацию функции, выполнять векторные и матричные операции и т.д.. Легко можно менять разрядность чисел и погрешность итерационных методов.
Графический процессор — служит для создания графиков. Он сочетает простоту общения с пользователем с большими возможностями графических средств. Графика ориентирована на решение типичных математических задач. Возможно быстрое изменение размеров графиков, наложение их на текстовые надписи и перемещение их в любое место документа. Графический процессор MathCAD автоматически поддерживает работу с математическим процессором. Последний заметно повышает скорость расчетов и вывода графиков, что существенно в связи с тем, что MathCAD всегда работает в графическом режиме. Это связано с тем, что только в этом режиме можно формировать на экране специальные математические символы и одновременно применять их вместе с графиками и текстом. MathCAD поддерживает работу со многими типами принтеров, а так же с плоттерами.
MathCAD — система универсальная, т.е. она может использоваться в любой области науки и техники, везде, где применяются математические методы. Запись команд в системе MathCAD на языке, очень близком к стандартному языку математических расчетов, упрощает постановку и решение задач.
ОСНОВНЫЕ МЕНЮ СИСТЕМЫ
Основное меню содержит следующие позиции:
File, Edit, Window, Help– эти группы команд стандартны для всех windows-приложений, на них останавливаться не будем.
View —Наряду со стандартными пунктами имеются команды «Animate»и «Playback»позволяющие создавать и проигрывать анимации.
В пункте «Preferences» можно задать параметры подключения программы к интернет и настройки проверки правописания (только английский язык)
Insert — группа команд по управлению вставкой в документ различных объектов.
Graph– позволяет вставлять в документ графики в 2-х, 3-х мерных и полярной системах координат
Matrix —позволяет вставлять в документ числовой массив
Function —позволяет вставлять в документ функции (причем как обычные математические – синус, косинус, так и специфические MathCADа.
Unit —позволяет вставлять в документ единицы измерения (метры, градусы и т.п.)
Picture —позволяет вставлять в документ картинки
Math Region/Text Region —позволяет помечать: где вводятся просто текст, а где – формулы
Page Break —позволяет вставлять в документ принудительный переход на следующую страницу
Hyperlink —позволяет вставлять в документ гиперссылку
Reference —позволяет вставлять в документ ссылку на другой файл
Component —позволяет вставлять в документ другой файл из расчетных программ Например из Excel-я, из MathLab.
Object —позволяет вставлять в документ вообще любой файл, например Flash.
Format — группа команд по форматированию документа
Команды задают шрифт, цвет, единицы измерение, отступы для Equation– математических формул;
Results– результатов;
Text– текста;
Paragraph– параграфа;
Tabs– табуляции;
Properties– выделенного объекта;
Graph– формат графиков;
Color– цветовые настройки;
Separate regions/Align regions –разбиение и выравнивание областей
Area –блокировка/разблокировка области
Headers/Footers –заголовок и «подвал» страницы
Repaginate now –переразбить страницы
Math — группа команд по калькуляции формул
Calculate– вычислить выражение;
Calculate Worksheet– вычислить все на листе;
Automatic Calculation– автоматическое вычисление;
Options– точность вычислений;
Symbolics — группа команд для алгебраических вычислений
Evaluate– вычислить (алгебраически/с плав. точкой/комплексные числа);
Simplify– упростить;
Variable, Matrix– работа с переменными и матрицами;
ВОЗМОЖНОСТИ СИСТЕМЫ
Математический интерпретатор системы — наиболее интересная её часть. Математические формулы, подлежащие интерпретации, записываются в общепринятом виде. Например, вычисление квадратного корня из двух в системе MathCAD задаётся как √2 =, а не в виде PRINT SQR (2) , как это делается, скажем, на Бейсике. Для ввода формул используются шаблоны, вводимые определёнными комбинациями клавиш. Имеется возможность изменения формата представления чисел, например числа знаков после разделительной точки, погрешности вычислений и обозначения мнимой единицы (i на j и наоборот) при операциях с комплексными числами.
В MathCAD предусмотрены средства для решения нелинейных уравнений, не имеющих аналитических решений. Так, функция root (f(x,y,z,),x) ищет значение переменной x, при котором f(x,y,z) = 0. Более сложные вычисления (решение систем нелинейных уравнений, минимизация функций нескольких переменных и др.) обеспечиваются организацией вычислительного блока, открываемого словом Given.
Специалистов в электротехнике и энергетике может привлечь способность системы MathCAD выполнять все предусмотренные в ней вычисления как с действительными, так и с комплексными числами.
В MathCAD введён функционально полный набор векторных и матричных операций. Это существенно облегчает решение задач линейной алгебры. В качестве примера в MathCAD даётся решение системы линейных уравнений с комплексными коэффициентами, в ходе которого производится обращение комплексной матрицы. К таким уравнениям приводит анализ электрических и электронных цепей на переменном токе.
Есть средства линейной и сплайн-интерполяции и экстраполяции данных. Линейная интерполяция графически означает просто соединение узловых точек графика отрезками прямых. В отличие от неё сплайн-интерполяция напоминает соединение этих точек с помощью гибкой линейки. Строго математически это означает проведение через каждые три точки линии, описываемой кубическим полиномом. При этом во всех стыкуемых точках обеспечивается непрерывность как первой, так и второй производной каждого из полиномов. Сплайн-интерполяция — это мощное средство представления данных, заданных небольшим числом узловых точек.
ВЫЧИСЛЕНИЯ В MATHCAD
Понятия, используемые в MathCAD: переменная, константа, системная переменная, функция, оператор.
Задание переменных возможно с пределами изменения, что дает возможность проведения циклических вычислений. Целоисчисленная переменная, меняющаяся с шагом 1 от значения Start до значения End, задается следующим образом:
Name: Start;End что дает Name:= Start..End
Идентификаторы
Алфавит системы MathCAD строчные и прописные латинские буквы, арабские цифры, ряд греческих букв и специальных знаков. С их помощью задаются имена встроенных функций и операторы и идентификаторы. Идентификаторы должны начинаться с буквы и их имена должны быть уникальны. (qwerty, resultat – можно; 1u, sin, альфа — нельзя)
Греческие буквы вводятся нажатием клавиши Alt и некоторых латинских букв.
Константы — это тип данных, имеющие неизменное значение во всей программе. В системе имеется только один тип констант — числовые. К числовым константам могут относиться и предварительно определенные переменные (системные переменные):
е = 2.71823 основание натурального логарифма
TOL = 0.001 погрешность численных методов
ORIGIN = 0 нижняя граница индексации массивов
Значения их можно переопределить, но не рекомендуется.
Переменные: набирается: Х:=123
Для ввода значений переменных Х = 123. Форма вывода зависит от установленного пользователем формата вывода. Он может быть глобальным, то есть относиться ко всей программе, может быть локальным, то есть действовать в ограниченной области.
RADIX = d — тип используемых чисел (d — десятичные).
PRECISION DISPLAYED = 4 — количество знаков после запятой.
EXPONENTIAL THRESHOLD = 6 — граница представления чисел в экспоненциальной форме.
IMARGINARY SYMBOL = i — обозначение для мнимой единицы.
ZERO TOLERANCE = 15 — значение машинных нулей при вычислении.
COMPLEX TOLERANCE = 15 — представление машинных нуля для комплексных чисел.
OVERALE DEFAULT — глобальная установка данных.
REVERT — возврат к исходным данным.
DONE — продолжение работы.
Для задания циклических вычислений с целоисчисленной управляющей переменной цикла пользуйтесь следующей конструкцией:
Если Nнач < Nкон, то шаг изменения переменной положительный, если Nнач > Nкон, то отрицательный.
Функции. В системе имеется множество функций (тригонометрические, гиперболические, статистические, и т.д.). функция в ответ на обращение к ней по имени с указанием аргументов должны возвратить свое значение.
Можно задать внешние функции, или функции пользователя.
eх es (Х):=exp(sin(X)) — такая функция будет вести себя как встроенная
Операторы. Специальные знаки или слова, вызывающие определенные действия (+, -, =, :, , Ö ).
Операторы и функции системы MathCAD
Операторы в системе — это команды, выраженные в виде специальных знаков, предназначенные для выполнения различных математических операций:
факториал X! 4!=24
абсолютное значение |x |-5|=5
нижний индекс Х[i Xi
суммирование членов ряда i$X åXi
перемножение членов ряда i i#x
определенный интеграл x&f(x)
Функции — exp(x), ln(x), log(x), cos(x) и т.д.
Суммирование членов ряда
Векторными и матричными переменными в системе MathCAD, называются переменные с заданными пределами изменения.
Можно использовать другую конструкцию:
шаг в этом случае равен Nслу-Nнач
Цикл с нецелоисчисленным изменением
Пример реализации двойного цикла с вложением.
i:=1..4 — внешний цикл
Система MathCAD оперирует с двумя типами массивов. Первый — одномерные массивы или векторы, второй — двумерные или матрицы.
Для задания вектора Alt+M, после этого может быть введено количество строк и столбцов.
Векторы обозначаются V, матрицы M, скалярные величины — буквой z.
z*v умножение вектора на скаляр
v1*v2 умножение двух векторов
m1+m2 сложение матриц
m1-m2 вычитание матриц
m n возведение матрицы в n-степень
m t транспортирование матрицы (обозначается как M[Alt]!)
Sv сумма всех элементов вектора (обозначается как Alt+$+V)
Система имеет так же ряд функций:
length(v) количество элементов вектора
last(v) возвращает индекс последнего элемента вектора max(v)максимальное значение
min(v) минимальное значение
rows(m) число строк матрицы
cols(m) число столбцов
tr(m) след матрицы m, сумма её диагональных элементов
ПОСТРОЕНИЕ ГРАФИКОВ
Пример построения двухмерной графики:
Пример построения трехмерной столбчатой диаграммы:
ВСПОМОГАТЕЛЬНЫЕ МАТЕРИАЛЫ
MathCad 2000 содержит очень много справочных и иных вспомогательных материалов.
Все они объединены в пункте меню «Resource Center»
Применяя «Шаблоны решений» и не имея глубоких знания программы, человек уже может решать ряд типичных задач, например, ниже приведен пример построения простейшего двумерного графика. Это страница-шаблон: в выделенные цветом поля мы можем подставить свои формулы и тут же получить график, совершенно не вникая в особенности МатКада.
Похожие публикации:
- Какие виды массивов в mathcad вам известны
- Какие виды функций в mathcad вам известны
- Какие виды графических зависимостей можно построить в mathcad
- Какие виды массивов используются в mathcad
MathCAD — это просто! Часть 20. Страх и ужас: дифференциальные уравнения

Если вы спросите студентов естественнонаучных и технических специальностей, какую часть высшей математики они «любят» больше всего, то в трех четвертях случаев в ответ услышите именно «дифференциальные уравнения». И действительно, именно диффуры становятся нередко тем самым гранитом науки, который студентам приходится в буквальном смысле грызть. Впрочем, грызть его в силу применения диффуров в различных практических отраслях человеческой деятельности приходится и специалистам, ВУЗ уже давно закончившим. Но им, в отличие от студентов, можно немного облегчить себе жизнь — даже, пожалуй, не немного, а весьма ощутимо — благодаря тому, что такой мощный математический пакет, как MathCAD, поддерживает решение дифференциальных уравнений ничуть не хуже, чем многие другие операции, о которых мы с вами говорили. Студентам, конечно, MathCAD тоже может помочь, но, увы, не при изучении дифференциальных уравнений — вряд ли преподаватели будут в восторге, если принести распечатанное решение такого уравнения в MathCAD’е. Впрочем, не суть важно, студент вы или нет, ведь если вы решили постичь премудрости работы с дифференциальными уравнениями в среде MathCAD — значит, вам зачем-то это нужно…
Как и в прошлый раз, когда мы говорили с вами о такой важной части математики, как комплексные числа, я позволю себе небольшое отступление от темы работы в MathCAD’е для рассказа о том, что же такое, собственно говоря, эти самые дифференциальные уравнения, и почему они вызывают ужас у студентов. В справочнике по математике можно найти определение вроде: «дифференциальным уравнением называют уравнение вида f(y1, y2, …, yn, ?y1/?x1, …, ?y1/?xm, … ?myn/?x1…?xm, x1, …, xm) = 0, где ?jyi/?xk…?xk+j — производная функции yi под аргументам xk…xk+j». На самом же деле, несмотря на то, что написанное выше определение может быть не слишком удобным для восприятия — все довольно просто. Дифференциальное уравнение — это такое уравнение, в котором есть одна или несколько функций и их производные. И задача того, кто решает такое уравнение, — найти все функции, при котором бы оно превращалось в тождество (было справедливым при любом значении аргумента).
Выделяют два больших класса дифференциальных уравнений: обыкновенные дифференциальные уравнения и уравнения в частных производных. В обыкновенных дифференциальных уравнениях фигурируют функции одной переменной, а потому все производные в них полные. Дифференциальные уравнения в частных производных, напротив, содержат в себе функции нескольких переменных и частные производные этих функций по разным переменным. Понятно, что решать обыкновенные дифференциальные уравнения куда проще, но встречаются они, к сожалению, реже, потому что все более-менее важные обыкновенные дифференциальные уравнения давным-давно решены, а их решения записаны в справочники и учебники по математике и физике. Разработаны специальные приемы, которые позволяют хорошо и быстро решать отдельные типы дифференциальных уравнений. Тем не менее, несмотря на то, что эти уравнения известны человечеству уже не одну сотню лет, до сих пор не существует универсального способа, позволяющего аналитически решить любое дифференциальное уравнение. Поэтому при решении этих уравнений в среде MathCAD лучше тоже заранее подготовиться к тому, что далеко не все из того, что вы захотите решить с помощью этого математического пакета, и в самом деле будет решаться. Сейчас мы с вами рассмотрим разные типы дифференциальных уравнений, которые решаются аналитически с применением к ним различных подходов. А в следующий раз посмотрим на то, как можно численно решать дифференциальные уравнения, не теряя времени на определение того, к какому именно типу они принадлежат.
Интегрирование
В конечном счете решение дифференциального уравнения рано или поздно так или иначе явно или неявно, но сводится к интегрированию каких-либо функций. А потому во многих случаях имеет смысл сразу, с места в карьер, приступать к интегрированию. Давайте рассмотрим уравнение вида dy/dx = p(x)*y + q(x), где p и q — некоторые интегрируемые функции. Общее решение подобного вида уравнений вы можете увидеть на приведенной ниже формуле:
Собственно, эта формула — уже фактически готовое решение дифференциального уравнения (напомню, что C1 — это некоторая константа, которая обозначена так потому, что идентификаторы C и c уже заняты стандартными переменными среды MathCAD). Если вместо p(x) и q(x) мы подставим какие- либо конкретные значения коэффициентов, фигурирующих в уравнении, то, если все интегралы окажутся берущимися, среда MathCAD самостоятельно сможет рассчитать решение этого уравнения. Давайте посмотрим на примере, как это может выглядеть:
Аналогичным образом можно поступить, найдя в справочнике формулы для некоторых других видов дифференциальных уравнений. Правда, стоит помнить, что результаты интегрирования, выдаваемые символьным процессором MathCAD’а, стоит перепроверять — но сделать это совсем не сложно путем простой подстановки. А сейчас мы поговорим о другом способе аналитического решения уравнений, который более универсален и требует применения некоторых операторов символьного вычисления, о которых мы с вами не так давно говорили.
Операционное исчисление
Не так давно мы говорили о прямом и обратном преобразованиях Лапласа, которые очень активно применяются при решении дифференциальных уравнений методами операционного исчисления. Операционное исчисление, конечно же, тоже не гарантирует вам того, что ваше уравнение обязательно решится, однако это более универсальный способ, чем использование отдельных формул, специфических для каждого из видов обыкновенных дифференциальных уравнений. Хотя я уже рассказывал о сути операционного исчисления, тем не менее, полагаю, что, если повторю свой рассказ, вряд ли это кому-то повредит. Преобразованием Лапласа мы получаем новые функции комплексных переменных, которые называются изображениями (в то время, как старые функции действительных переменных называются оригиналами). Новые функции образуют между собой новое уравнение, называемое операторным — в отличие от старого, дифференциального, оно алгебраическое. После решения операторного уравнения, которое решить значительно проще, чем исходное, можно вернуться к старым переменным, и получить решение исходного дифференциального уравнения.
Стоит, конечно же, сказать, что операционное исчисление — тоже совсем не панацея, поскольку оно накладывает ряд ограничений на функцию, подвергаемую преобразованию Лапласа. Первое из этих ограничений — необходимость непрерывности функции (допускается наличие только конечного числа разрывов первого рода). Второе ограничение — функция должна иметь нулевые значения для всех отрицательных значений аргумента. Ну и, наконец, функция должна возрастать медленнее экспоненты (впрочем, последнее условие выполнить сравнительно несложно, поскольку на самом деле оно несколько сложнее, чем я его вам изложил). Что ж, давайте посмотрим, как мы можем применить операционное исчисление к дифференциальным уравнениям в MathCAD’е. Для начала выберем уравнение, которое будем решать. Пусть это будет, например, d2F(t)/dx2 + F(t) — cos(2t) = 0. Левую часть этого уравнения нужно подвергнуть преобразованию Лапласа, то есть, говоря по-русски, действию оператора laplace. То, что получится в итоге, можно увидеть ниже.
Это не совсем подходящее выражение для его последующего «скармливания» оператору solve, а потому надо кое-что поменять. А именно — записать в человеческом виде начальные значения функции F и ее производной F(0) и F'(0) (мы их запишем как F0 и Fd0 соответственно). Также нужно записать как-то покороче выражение laplace(F(t),t,s), которое мы, следуя традициям операционных методов, назовем буквой z. Это выражение — та переменная, относительно которой мы будем решать операторное уравнение. Вот так и должно выглядеть его решение, если вы сделали все так, как я вам говорил:
Теперь дело за малым — нам нужно выполнить обратное преобразование Лапласа для того, чтобы от изображения перейти назад к оригиналу, то есть фактически и получить решение нашего исходного дифференциального уравнения d2F(t)/dx2 + F(t) — cos(2t) = 0. Для этого, если вы помните, нужно использовать оператор invlaplace, о котором мы говорили тогда же, когда разбирали и все остальные операторы символьных преобразований. Вот что у нас с вами должно получиться после того, как мы это сделаем:
Конечно, полученное решение с большой натяжкой можно назвать не то что изящным, но даже и просто сколь-нибудь приличным, потому что к нему стоит применить еще некоторые операторы. Какие? Этот вопрос оставим вам на самостоятельное изучение — вернее сказать, даже не на изучение, а на повторение, поскольку обо всех операторах символьных вычислений, какие только могут вам потребоваться, я уже рассказывал в серии «MathCAD — это просто!». Так что, если вы внимательно читали каждую из статей, то у вас не будет проблем с дальнейшим приведением этого выражения в приличный вид.
Что ж, как видите, MathCAD в очередной раз оказался силен — именно поэтому я не устаю петь дифирамбы этому пакету как мощному математическому инструменту, удобному, ко всему прочему, в практической работе. Решать дифференциальные уравнения с помощь MathCAD’а, как я уже говорил, совсем и не сложно — даже если сейчас вам показалось, что процесс их решения занимает много времени, уверяю вас, это мелочи по сравнению с тем временем, которое вы бы затратили на то, чтобы решить их вручную. Конечно, аналитический способ решения не дает вам 100- процентной гарантии успеха, как, впрочем, и всегда, но зато можно воспользоваться решением численным. Но это, как говорится, уже совсем другая история…
SF, spaceflyer@tut.by
Компьютерная газета. Статья была опубликована в номере 34 за 2008 год в рубрике soft
Решатели или Великолепная семерка Mathcad Текст научной статьи по специальности «Математика»
Аннотация научной статьи по математике, автор научной работы — Богомолова Елена Петровна, Очков Валерий Федорович, Хейнлоо Мати
В статье рассмотрены основные математические инструменты Mathcad , позволяющие решать уравнения и их системы аналитическими, численными и графическими методами
i Надоели баннеры? Вы всегда можете отключить рекламу.
Похожие темы научных работ по математике , автор научной работы — Богомолова Елена Петровна, Очков Валерий Федорович, Хейнлоо Мати
Физика vs информатика: веревочный многоугольник в статике, кинематике и динамике, или Ньютон vs Лагранж
Подводная лодка «Наутилус» и новые образовательные технологии
Задачи по физике: новый подход к решению
Использование информационно-коммуникационных технологий при решении систем алгебраических уравнений
Movement of the planets: the calculation and visualization in Mathcad or Kepler’s watch
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.
SOLVERS OR THE MAGNIFICENT SEVEN OF MATHCAD
This article describes the basic mathematical tools of Mathcad that allow solving equations and systems of equations by analytical, numerical and graphical methods.
Текст научной работы на тему «Решатели или Великолепная семерка Mathcad»
УДК 51-74 ВАК 05.13.00 РИНЦ 20.01.00
Великолепная семерка Mathcad
В статье рассмотрены основные математические инструменты Mathcad, позволяющие решать уравнения и их системы аналитическими, численными и графическими методами
Ключевые слова: Mathcad, уравнение, система уравнений, алгебраическое уравнение, дифференциальное уравнение.
THE MAGNIFICENT SEVEN OF MATHCAD
This article describes the basic mathematical tools of Mathcad that allow solving equations and systems of equations by analytical, numerical and graphical methods.
Keywords: Mathcad, an equation, system of equations, algebraic equations, differential equation.
Е.П. Богомолова, В.Ф. Очков,
Многие задачи по математике, физике, химии, механике, термодинамике и другим школьным и вузовским дисциплинам сводятся к решению уравнений и систем уравнений. Поэтому полезно будет узнать, какие инструменты для решения такого рода задач есть у пакета МаШса^ очень популярного у школьников, студентов инженеров и ученых. Эти инструменты объединены в группу «Решение уравнений» встроенных функций МаШса^ которые используют различные численные методы. В среде Mathcad 15 названия этих методов можно узнать, если на имени некоторых функции, их реализующих, нажать правую кнопку мыши.
В группе «Решение уравнений» традиционно находятся семь функций (см. второе название статьи).
Примечание ко второму названию статьи. Есть такой классический вестерн «Великолепная семерка», голливудская адаптация философской драмы Акиры Ку-росавы «Семь самураев». В американском фильме «главным» в семерке ковбоев, защищавших крестьян от бандитов, был Крис
Адамс, которого сыграл Юл Бриннер. Семерка — это некое сакральное число не только в культуре и истории (семь древних мудрецов, семь чудес света, семь дней недели, семь нот в гамме и т.д.), но и в естествознании — семь цветов радуги, семь базовых единиц измерения международной системы СИ и т.д.
Есть еще в среде Mathcad и оператор solve для символьного (аналитического) решения задач. Описание этих инструментов будет сделано на несложных школьных «водных» примерах.
Задача 1. Моторная лодка прошла по реке в одну сторону (L = 10 km), а потом вернулась в исходную точку, затратив на этот «круиз» 1 час 45 минут (t). Спрашивается, какова скорость течения воды в реке (неизвестная х), если собственная скорость лодки (v — скорость в стоячей воде) равна 12 км/ч (kph — мы, следуя современному тренду, будем использовать международное написание единиц измерения).
Раньше подобные «школьные» задачи решались в несколько действий. Но не всякая задача может быть решена пошагово. Поэто-
му-то люди и придумали алгебру. В древние времена, например, пока не была выведена формула корней квадратного уравнения, не каждое такое уравнение можно было решить пошагово, причем решения были очень хитроумными. Кстати, нашу задачу о моторной лодке тоже сходу нельзя решить пошагово. Читатель, найди, если сможешь, пошаговое решение этой задачи и сравни найденное решение с тем, какое приведено ниже. Первый шаг такого решения может быть таким: 2 * 10 km / 12 kph = 1 hr + 40 min: движение в текучей, а не в стоячей воде увеличило время пути на 5 минут. Многие студенты, подлаживаясь под несколько устарелые требования преподавателей, проводят пошаговые вычисления на компьютере в среде того же пакета Mathcad, и переписывают ответ в расчетную записку, имитируя ручной счет.
Сейчас в связи с широким использованием компьютеров в образовательной сфере принято составлять, а затем решать уравнения, выбирая их подходящие корни. Пойдем и мы по этому пути, но, соста-
Елена Петровна Богомолова, к.т.н., доцент Тел.: (495) 362-73-92 Эл. почта: epbogomolova@yandex.ru Национальный исследовательский университет «Московский энергетический институт» http://www. mpei.ru
Elena P. Bogomolova,
Ph.D., Associate Professor Tel.: (495) 362-73-92 E-mail: epbogomolova@yandex.ru National Research University «Moscow Power Engineering Institute «.
Валерий Федорович Очков,
д.т.н., профессор Тел.: (495) 362-71-71 Эл. почта: ochkov@twt.mpei.ac.ru Национальный исследовательский университет «Московский энергетический институт» http://www. mpei.ru
Valeriy F. Ochkov,
Doctorate of Technical Sciences, Professor Tel.: (495) 362-71-71 E-mail: ochkov@twt.mpei.ac.ru National Research University «Moscow Power Engineering Institute».
вив уравнение, попробуем решить его не на бумаге, а на компьютере в среде математической программы Mathcad.
В нашей задаче о моторной лодке время в пути t — это суммарное время, затраченное на поездку в одну сторону L / (v + x) (условно будем считать, что это движение по течению реки), и в обратную сторону (против течения) L / (v — x). Поэтому наше уравнение будет иметь вид:
(L / (v + x)) + (L / (v — x)) = t 0. solve
Начнем с решения полученного уравнения средствами символьной математики Mathcad. Формальное, более правильное и более длинное название символьной математики — компьютерные аналитические преобразования, но у нас прижилась калька с английского -symbolic math. Это название мы и будем использовать далее.
Если численная математика (которая, повторяем, тоже есть в среде Mathcad и составляет его основу) оперирует числами, хранящимися в переменных, то символьная математика работает с самими переменными-символами.
На рисунке 1 показано решение уравнения движения моторной лодки по реке с помощью команды solve символьной математики Mathcad (на этом и некоторых других рисунках будут показаны позиции меню и панели инструментов Mathcad Prime и Mathcad 15 для решения описываемых задач).
Из полученного общего аналитического решения (из вектора с двумя элементами-формулами -см. рис. 1) можно скопировать один элемент, подставить в него исходные значения переменных L, t и v (см. рис. 2) и получить численный ответ — скорость течения воды в реке. Ответ будет выдан в метрах, деленных на секунду (Mathcad
Рис. 1. Аналитическое решение задачи о движении моторной лодки
д.ф.-м.н., профессор Тел. +372-55-10-512 Эл. почта: Mati.Heinloo@emu.ee Эстонский университет естественных наук
Doctorate of Physical and Mathematical Sciences, Professor Те1 +372-55-10-512, E-mail: Mati.Heinloo@emu.ee Estonian University of Life Sciences
по умолчанию ориентирован на СИ — на международную систему исчислений), и подправлен на более уместные тут километры в час (kph). Mathcad — это не просто математический, а физико-математический пакет [1]: переменные Mathcad хранят не числа, а физические величины (длину, время, силу, массу и т.д.), что очень полезно при расчетах в задачах с физическим смыслом. Это существенно ускоряет и упрощает расчеты, позволяет избежать ошибок в них, а также автоматизирует соответствующие преобразования единиц измерения.
£,;=]() km f:=l + min V~ 12 kph
Рис. 2. Решение задачи о моторной лодке по найденной на рис. 1 формуле
Спрашивается, для чего же тогда в пакете Mathcad есть и численная математика, если задачу просто и красиво можно решить с помощью символьной математики? Дело в том, что символьная математика, нацеленная на выдачу всех решений в виде формул (абсолютная точность!), часто не справляется с более-менее сложной задачей, и это показано на рис. 3 и 4.
Полученный результат этой символьной операции слишком длинный для отображения, но он может использоаатъся е последующих расчетах, если будет присвоен функции или переменной.
Рис. 3. Поиск корня уравнения: очень объемный скрытый ответ
На рисунке 3 в уравнении движения моторной лодки один из иксов был возведен в квадрат. Физический смысл уравнения пропал (складывается скорость с квадратом скорости).
Такими «нефизическими» формулами заполнены все современные учебники и задачники по математике. И это не очень хорошо, вернее, совсем плохо. Хорошо тогда, когда за формулой скрывается какая-нибудь физическая реальность. Такое направление ма-
тематики условно называют «натуральная математика». Проблема размерностей исчезнет сразу же, как только мы вспомним, что еще во времена Франсуа Виета господствовал принцип однородности, который требовал в подобных случаях умножать икс на некую единицу, получая везде квадраты скорости. Но, как водится, у современных математиков, умножение на единицу не производится, а размерности игнорируются. Вот типичная задача, часто предлагаемая школьникам и студентам для решения в рамках курса математического анализа. Дана функция, определить значения ее аргумента, при которых первая производная функции больше самой функции. Здесь делается упор на технику взятия производной и решения неравенств, но не принимается во внимание тот факт, что сравнение функции и ее первой производной — это равносильно некорректному сравнению пути (длины) и скорости — разных физических величин.
Но сейчас главное не физический смысл уравнения, показанного на рис. 3. Важно то, что пакет Mathcad, решив это чуть усложненное уравнение, не смог вывести на дисплей ответ — настолько тот оказался громоздким. Но это еще полбеды. Настоящая «беда» показана на рис. 4 для еще более усложненного уравнения. Если, например, один икс возвести в квадрат, а другой в куб, то символьная математика Mathcad «поднимет руки вверх» и скажет: «Сдаюсь!».
Рис. 4. Поиск корня уравнения: решение не найдено
Если в константы этого «нефизического» уравнения подставить безразмерные численные значения известных величин, то хотя бы один действительный корень у этого уравнения зафиксировать удастся — см. рис. 5, где данная задача решена графически.
Рис. 5. Графический поиск нуля функции
Из рисунка 5 видно, что у нашего уравнения, превращенного в функцию пользователя переносом переменной t в левую часть, есть как минимум один действительный корень в районе числа 0.9. Уточнить численное значение этого корня поможет встроенная в Mathcad функция root — см. рис. 6 и 7.
На рисунке 6 показан вызов функции root с четырьмя аргументами, а на рис. 7 с двумя. В обоих
случаях ответ выведен с тремя знаками после десятичной точки. Но можно вывести и большее число знаков — до 15. В первом случае (рис. 6) нуль функции у(х) ищется методом деления пополам на интервале, заданном третьим и четвертым аргументами функции root (см. авторскую анимацию этого метода на сайте http://communities.ptc. com/videos/1468). Во втором случае (рис. 7) нуль функции рассчитывается методом секущих с опорой на первое предположение х := 1 (ани-
Рис. 6. Работа в среде Mathcad встроенной функции root с четырьмя аргументами
мация — http://communities.ptc.com/ videos/1466). В среде Mathcad для вычисления нуля функции пользователя фактически есть две одинаковые по имени, но разные по своей сути встроенные функции root.
ж:=1 root (у (ж), ж) =0.918
Рис. 7. Работа в среде Mathcad
встроенной функции root с двумя аргументами
На рисунке 8 показана работа функции root на довольно простом примере — с функцией пользователя sin(x)/x, которая имеет бесконечное число нулей. На отрезке [2, 7] функция y(x) имеет два нуля (п и 2п), но четырехаргументная функция root ответа не выдала, так как функция y(x) имеет одинаковые знаки на концах этого отрезка и функция root считает, что там не может быть корней уравнения. На отрезке [1, 17] нулей уже пять, один из которых (9.425) найден четырехаргу-ментной функцией root. На концах отрезка [1, 17] функция y(x) имеет разные знаки. При первом приближении, равном 0.01, двухаргумен-тная функция root выдала не ближайший нуль (3.14), а «очень-очень дальний»: 298.451. Понять эти особенности применения функции root можно только после детального рассмотрения численных методов, заложенных в эту функцию -метода деления отрезка пополам и метода секщих.
Ранее мы отметили, что символьная математика Mathcad оперирует не числами, а символами -самими переменными, хранящими или не хранящими числа. Но это не совсем так.
Если какая-либо переменная выражения хранит численное значение, то символьная математика будет работать не с самой переменной (с символом), а с числом, хранящимся в этой переменной. На рисунке 3 была показана осечка символьной математики Mathcad при решении довольно простого уравнения. Но если всем переменным этого уравнения, кроме переменной x, задать численные значения, то символьный оператор solve успешно справится с задачей — см. рис. 9.
Рис. 8. Особенности работы функции root
0.91753907432064754652 -0.10072745491075931273 — 0.50447307772368Ii -0.10072745491075031273 + 0.504473077723(58065275i
-0.35804208224956446063 -1.43206766221807i -0.35804208224956446053 +1.4320676622180746717i
Рис. 9. Численный ответ символьного оператора
На рисунке 9 показано, что «символьный» оператор solve в отличие от «численной» функции root выдал все пять корней уравнения (один действительный и четыре с мнимой частью) без установки интервала (рис. 6) или первого предположения (рис. 7). Кроме того, если численная математика при выводе ответа «на печать», как мы уже отметили, по умолчанию ограничивается тремя знаками после десятичной точки, то символьный оператор solve в этом случае выдал численные решения с двадцатью знаками после запятой. При «численном» ответе количество значащих цифр можно увеличить до 15, а при символьном до 250.
Примечание. Лишить переменную ее численного значения для последующих аналитических преобразований можно операторами: clearsym(a) (Mathcad Prime) или a := a (Mathcad 15).
Если наше уравнение с численными константами (см. рис. 9) и дальше усложнять, то на каком-то этапе оператор solve не сможет найти корни. Функция же root по-
прежнему будет выдавать корень, правда, лишь один из многих и с опорой на заданный интервал поиска (рис. 6) или на первое приближение (рис. 7). При этом задавать интервал поиска придется, исходя из уверенности, что корень на этом интервале имеется. Метод секущих же при неправильном первом приближении вообще не выдаст нужного результата. Это такой своеобразный компромисс. Отсюда общее правило: поставленную математическую задачу нужно стараться сначала решить аналитически в общем виде, не придавая переменным конкретных численных значений (рис.1) или придавая отдельным или всем переменным численные значения (рис. 9). Если же ответа найти не получается, то придется переходить к поиску частных решений численными методами, дополняя их анализом графиков.
На рисунке 10 показано использование графика и функции root в двух ее вариантах для решения нашей задачи о моторной лодке. Интересный факт. Двухаргумент-ная функция root при первом при-
ближении, равном нулю, выдала не ожидаемый положительный, а отрицательный корень. Этот нюанс можно понять, если опять же учесть особенности метода секущих при поиске нулей функции и после построения графика не на отрезке от -3 до 3 км/ч, а на отрезке -13 до 13 км/ч, охватывающем точки разрыва, что мы сделаем ниже. Дело в том, что функция root с двумя аргументами работает так. Пользователь задает одну опорную точку поиска (первое предположение, но это далеко не всегда первое приближение — см. пример на рисунке 8). Далее пакет Mathcad правее этой точки на расстоянии CTOL (по умолчанию это 0.001 в нашем случае метров, т.е. один миллиметр) фиксирует вторую точку и проводит через две эти точки секущую, почти касательную). Эта секущая где-то пересекает ось Х — это будет третьей, очередной точкой итерационного поиска корня. Далее реализуется классический метод секущих. Правая точка разрыва нашей анализируемой функции «перекидывает» поиск в область отрицательных значений. Можно сказать, что в функцию root с двумя аргументами заложен гибрид метода Ньютона (касательных) и метода секущих. На авторском сайте http:// communities.ptc.com/videos/1411 можно видеть анимацию метода Ньютона для одиночного уравнения, а на сайте http://communities. ptc.com/videos/1472 для системы двух уравнений.
Примечание. Для повышения точности поиска нуля функции с помощью встроенной в Mathcad функции root можно не уменьшать значение системной переменной CTOL (см. список левее графика на рис 10), а перемножить анализируемую функцию на 103, 104 и т.д. Выбор точности вычислений — это отдельная задача. С одной стороны, повышенная точность никогда не будет лишней, а с другой стороны, она приводит к замедлению расчетов и срыву их в ряде случаев. Во всем нужна мера!
Уравнение движения моторной лодки, показанное на рис. 1, можно преобразовать в квадратное. К такому приему обычно прибегают
Рис. 10. Графическое и численное (через функцию root) решение задачи о моторной лодке
Рис. 11. Определение коэффициентов полинома
в школах, т.к. школьников, как правило, учат решать аналитически только квадратные уравнения. Как такое преобразование можно сделать в среде Mathcad, показано на рис. 11.
Оператор символьной математики simplify (упростить) приводит левую часть исходного выражения к общему знаменателю, умножает обе части уравнения на полученный знаменатель и переносит все слагаемые в левую часть уравнения (рис. 11). Таким способом выделяется функция, которая приравнена к нулю. Оператор coeffs находит коэффициенты этой функции-полинома (в данном случае квадратного). Это квадратное уравнение можно решить оператором solve, но. см. ниже.
Примечание. Квадратичная функция, полученная после преобразования исходного уравнения движения моторной лодки, не эквивалентна исходной функции, а только имеет с ней два одинаковых корня. В этом можно убедиться, взглянув на графики, показанные на рис. 12. Наше исходное уравнение движения моторной лодки имеет разрывы при x, равном 12 и минус 12 kph. В этих точках лодка не будет перемещаться относительно берега при движения в одну из сторон. Квадратичная же функция таких разрывов, естественно не имеет
Если выражение представляет собой полином (квадратный, например, см. выше), то можно найти все его нули, использовав еще одну функцию из «великолепной семерки Mathcad» — функцию polyroots. Она имеет в качестве аргумента вектор коэффициентов полинома и возвращает его нули (вектор, который на один элемент короче вектора-аргумента), т.е. решение нашей задачи — см. рис. 13.
В нашей задаче о движении моторной лодки полином оказался квадратным и его корни, повторяем, можно было найти через оператор символьной математики solve (см. рис. 1). Но в случае полиномов высокой степени оператор solve
не сработает. Тут и пригодится численная встроенная функция polyroots.
Показать работу еще одной функции из «великолепной семерки Mathcad» — функции Find — поможет нам еще одна дополнительная моторная лодка.
Задача 2. От двух пристаней на прямолинейном участке реки навстречу друг другу одновременно отходят две моторные лодки. Они встречаются в точке, делящей этот участок реки в золотом соотношении. Найти скорость второй лодки v2 и скорость течения воды в реке v, если известна скорость первой лодки v1, расстояние между пристанями L и время t движения лодок до встречи. (Шуточный вариант задачи: от двух станций по одноколейной дороге вышли навстречу друг другу два поезда. И не столкнулись! Почему? Ответ: не судьба!).
Мы в задаче имеем в виду знаменитое «Золотое сечение», т.е. такое деление отрезка на две неравные части, при котором длина меньшей части отрезка так относится к длине большей части, как длина большей части относится к длине всего отрезка (см. рис. 14). Это свойство золотого сечения помнят многие, чего не скажешь о формуле золотого сечения. На сайте http://communities.ptc.com/ videos/1521 показана авторская анимация метода золотого сечения при численном поиске на заданном отрезке минимума функции одного аргумента.
Золотое соотношение (сечение) в задачу вставлено неслучайно. Можно поискать в своей памяти или в справочниках (бумажных или интернетовских) формулу золотого сечения. Но можно поступить иначе [2]: написать в среде Mathcad само уравнение золотого сечения применительно к нашей задаче о моторных лодках и решить его аналитически, получив нужную формулу — см. рис. 14.
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
На рисунке 14 оператор solve выдал два решения, из которых нам подходит только второе — 3.82 km. Первое же решение (26.18 km) ле-
Рис. 12. Исходное и квадратное уравнение движения моторной лодки
Рис. 13. Поиск нулей полинома в среде Mathcad
Рис. 14. Решение уравнения золотого сечения в среде Mathcad
г., := 7 kph V := 1 kph
t-(г>2 + 1>) = L- L.(3-\Z¡0 2
I »| j Ц Блок текста
Блок решения (Ctr1*1)
вставка блока решения В блоке решения 1) введите 1 начального приближения, 2) задайте я, 3) затем решите системы уравмеиий при помощи одного из методов: find,. mmetT, minimize, maximize или «iesoive
i Hud lsolve maximize inkier minimise
flndfvarl, var2, „.J Возвращает знЕыения vari, vac2. , которые решают остему уравнений в Слои» решения возвращает ежапяр, если задан только один аргумент, в противном случае возвращает вектор ответов. Действует только в блока решения polyrtjotä root
J^:- 10km 12kph t30min Given
vj 7kph v ^ 1 kph
В обращает значения переменных Varl, var2. представляющие решение
системы уравнений в блоке решения. Если указам только одим аргумент, возвращает скаляр, иначе возвращает вектор решений.
Рис. 15. Решение систем алгебраических уравнений с помощью функции Find
жит вне рассматриваемого отрезка. Символьная математика, повторяем, выдает все ответы, из которых нужно еще уметь выбрать подходящее. Или уметь заставить оператор solve выдать нужный ответ.
На рисунке 15 показано решение в среде Mathcad Prime и Mathcad 15 задачи о двух моторных лодках, сводящееся к решению системы двух уравнений с двумя неизвестными. Решение найдено с помощью функции Find, требующей начального приближения к решению.
Встроенная функция Find меняет значение своих аргументов, начиная от начального приближения так, чтобы уравнения системы превратились в тождества. Вернее, почти в тождества. Дело в том, что и обе функции root (рис. 7 и 9) и функция Find (рис. 7) возвращают значения, отличающиеся от точных решений на величину, не превышающую по модулю значения, хранящегося в системной переменной CTOL. Ведь что такое корень уравнения?! Корень — это значение переменной, при котором уравнение превращается в тождество. Но при численном (приближенном!) решении найти точный
корень не всегда удается. Подстановка приближенного значения корня в уравнение приводит к тому, что правые и левые части уравнения отличаются друг от друга на значение, хранимое в переменной CTOL, которое по умолчанию равно 0.001. Это значение можно менять, решая конкретную задачу. На сайте с авторской анимацией http:// communities.ptc.com/videos/1472 можно видеть особенности поиска четырех корней системы двух нелинейных уравнений: уравнения эллипса и уравнения лемнискаты Бернулли. На сайте http:// communities.ptc.com/videos/2418 можно увидеть анимацию, показывающую на то, как выбор первого приближения влияет на найденный корень. Более подробно о методах решения, заложенных в функцию Find, можно почитать в работе [3].
Примечание. В среде Mathcad Prime по сравнению с Mathcad 15 существенно изменилась технология решения уравнений с помощью функции Find. В среде Mathcad Prime не нужно больше вводить ключевое слово Given. Достаточно ввести область Решить с тремя подобластями. От ключевого слова Given отказались в том числе и по-
тому, что многие пользователи после этого слова нажимали клавишу пробела, превращали тем самым это ключевое слово в комментарий и. не понимали, почему Mathcad отказывается решать систему уравнений. На рис. 15 показаны для сравнения решения в обеих версиях Mathcad.
Примечание. Переменная L, которой на рис. 15 присваивается начальное значение 10 km (L := 10 km), подчеркнута волнистой чертой, указывающей на некую ненормальную расчетную ситуацию в среде Mathcad 15. Переменная L по умолчанию в среде Mathcad 15 хранит значение одного литра (единица вместимости) и это значение пользователь переопределяет. В среде Mathcad Prime эта недоработка (неудобство) исправлена — там можно иметь две независимые переменные L: единицу вместимости и отдельную пользовательскую переменную, хранящую, как в нашем случае, расстояние.
Можно понять, что система двух алгебраических уравнений движения двух моторных лодок навстречу друг другу, показанная на рис. 15, линейна, и применить к ней еще одну функцию из «великолепной семерки Mathcad» — функцию lsolve, предназначенную для решения (solve) именно систем линейных (l) алгебраических уравнений (СЛАУ) — см. рис. 16.
На рисунке 16 система уравнений (показанная на рис. 15), преобразована к виду классической линейной системы: слева неизвестные v2 и v со своими коэффициентами, справа — свободные члены. Функция lsolve имеет два аргумента: матрицу коэффициентов при неизвестных СЛАУ (у нас это M) и вектор свободных членов V. Возвращает функция lsolve вектор найденных значений неизвестных. При решении СЛАУ с помощью функции lsolve (рис. 16) начальные приближения (см. рис. 15) вводить не надо, т.к. у этой системы либо есть, причем единственное решение, либо решений совсем нет, либо решений бесконечно много.
Рис. 16. Решение СЛАУ в среде Mathcad
В [2] дан графический анализ этой особенности с привлечением понятия ранга матрицы.
Примечание. Вторым аргументом функции ^^ может быть не только квадратная (классический случай СЛАУ), но и прямоугольная матрица, отображающая недоопре-деленную или переоопределенную систему.
5 и 6. Minimize&Maximize
Об очередной функции «великолепной семерки» — о функции Minimize, будет рассказано на примере задачи оптимизации, связанной также с «водным транспортом».
Задача 3. Определить крейсерскую скорость судна — скорость при которой затраты на его эксплуатацию будут минимальны.
Задача предельно упрощена -затраты на эксплуатацию судна состоят из двух частей: почасовой зарплаты экипажа, пропорциональной времени движения судна (обратно пропорциональной скорости судна), и затрат на горючее, пропорциональных квадрату скорости судна (коэффициенты пропорциональности — а и b). Увеличивая скорость судна, мы экономим на зарплате экипажу, но при этом приходится больше тратить денег на горючее. Попробуем найти тут оптимальное решение!
На рисунке 17 показано решение этой типичной задачи оптимизации с помощью встроенной функции Minimize с графической иллюстрацией решения.
Функция Minimize меняет значение своего второго аргумента, начиная от заданного предполагаемого значения (у нас это 10 км/ч) так, чтобы значение первого аргумента (целевой функции Удельные_за-траты) приняло минимальное значение. Если бы мы не минимизировали затраты, а максимизировали,
например, прибыль владельца судна, то нужно было бы при решении такой задачи функцию Minimize заменить на функцию Maximize. В оптимизационных задачах часто присутствуют ограничения — скорость судна, например, не может превышать максимально допустимую. В этом случае функции Minimize или Maximize нужно будет поместить в область Ограничения блока Решить, показанного на рис. 15.
Найти минимум нашей целевой функции Удельные_затраты можно и средствами символьной математики Mathcad, что показано на рис. 18.
На рисунке 18 ведется поиск нулей первой производной функции по удельным затратам на километр пути судна. Но если затраты на топливо будут зависеть от скорости судна, взятой не во второй степени, а в степени n (этот коэффициент, близкий к двойке, уточняют
Рис. 17. Нахождение крейсерской скорости судна численной математикойMathcad
Математика ия Блок решения Блок текста А] Текстовое поле J Изображение Г Операторы ß Символы
Возвращает производную функции от нулевого до 5-го порядка
& £ « Г £ Ü Т ? V Ä & I»,- v,f
Рис. 18. Нахождение крейсерской скорости судна символьной математикой
экспериментально) то символьная математика уже не справится с такой усложненной задачей (рис. 19), и придется вернуться к численным методам решения задач (рис. 17).
d (а . п\ solve,х \- — + Ь’Х—> ?
Символьный результат не найден.
Рис. 19. Осечка при работе с символьной математикой Mathcad
Последняя функция «великолепной семерки» Mathcad — это функция Minerr (Minimal Error -минимальная ошибка). Если функция Find (см. рис. 15) не находит решения системы уравнений, то она возвращает сообщение об ошибке. Функция же Minerr в такой ситуации возвратит не сообще-
ние об ошибке, а значения своих аргументов (невязку системы), при которых система уравнений будет максимально приближена к системе тождеств — точку последнего
приближения к решению. В старых версиях Mathcad не было функций Minimize и Maximize, и задачи оптимизации приходилось решать именно через функцию Minerr. На рисунке 20 показано, как эта функция решает задачу определения крейсерской скорости судна: при оптимальном движении затраты на эксплуатацию судна будут максимально приближены к нулю (мечта всех судовладельцев).
Функцию Minerr можно считать главной в «великолепной семерке Mathcad», т.к. ею можно заменить и функцию Find, и функцию root (в двух ее вариантах), и функцию polyroots, и функцию lsolve, и в ряде случаев функции Minimize и Maximize При использовании функции Minerr надо обязательно предусматривать проверку решений. Нередки случаи, когда решения могут оказаться ошибочными, чаще всего из-за того, что из нескольких корней находится нереальный (или не представляющий интереса) корень. Дело в том, что функция Minerr пытается найти максимальное приближение к искомому числу путем минимизации среднеквадратической погрешности решения. Следует заранее убедиться в том, что решение существует, и как можно точнее указать начальное приближение к решению.
Компьютерная математика с универсальными и скрытыми от пользователей методами аналитических и численных решений за-
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
Рис. 20. Решение задачи оптимизации с помощью функции Minerr
ставляет нас забывать о типах уравнений. Вспомним о них!
Для того чтобы без проблем и правильно решать уравнения и системы уравнений, нужно знать не только специфику численных методов (см. выше), но и свойства самих уравнений, что поможет решать их аналитически.
Математики уравнения с одним неизвестным относят к одному из четырех типов: алгебраические, рациональные, иррациональные и трансцендентные. Метод аналитического решения определяется типом решаемого уравнения.
Если полином и-й степени приравнять нулю, то мы получим алгебраическое уравнение. Основная теорема алгебры говорит о том, что такое уравнение имеет ровно и корней. Но во-первых, не все корни будут действительными и, возможно, вообще не существует ни одного действительного корня. А во-вторых, корни могут совпадать, т.е. быть кратными. Доказано, что не существует формул для корней алгебраического уравнения выше пятой степени. Но и формулы для и = 5 настолько громоздки, что их использование лишено какой-либо практической пользы. Mathcad может символьно решать алгебраические уравнения вплоть до четвертой степени.
Если уравнение более высокой степени допускает частичное разложение на множители, то оно тоже может быть символьно разрешимо. Тут уместно вспомнить школьный метод подбора целого корня и теорему Безу. Если алгебраическое уравнение имеет целые коэффициенты, и делители свободного члена известны, то можно подобрать целый корень х0 (если такой имеется) «вручную», либо использовав Mathcad. Поделив полиномиальную функцию на двучлен (х — х0), получим алгебраическое уравнение степени на единицу меньше. Если целый корень не подбирается, то такое уравнение теряет свои преимущества и становится в один ряд с другими типами уравнений.
Рассмотрим теперь рациональ-
ные уравнения. Такие уравнения содержат исключительно дроби, в числителях и в знаменателях которых находятся только многочлены. С помощью Mathcad эти уравнения легко формально преобразовать в алгебраические. Правда, при таких преобразованиях может измениться область допустимых значений преобразуемого уравнения, т.к. знаменатель какой-то дроби может оказаться в числителе. Это порождает проблему посторонних корней, а поэтому решение рационального уравнения требует обязательной проверки (подстановки полученных чисел в исходное уравнение). Если все дроби в рациональном уравнении «одноэтажные», то проверку можно заменить предварительным поиском области определения рациональной функции, приравняв нулю все знаменатели. Если дроби «многоэтажные», то такая процедура потребует априорных упрощений. Если хоть в одном из знаменателей находится многочлен третьей или более высокой степени, то поиск допустимых значений оборачивается поиском корней нового алгебраического уравнения. В таком случае проверка — более экономный способ отсечения посторонних корней.
Иррациональными называют такие уравнения, которые помимо рациональных функций содержат радикалы (корни целых степеней — квадратные, кубические и т.п.), а все подкоренные выражения являются рациональными функциями. Известно, что радикалы четных степеней определены не везде в действительной области. Это обстоятельство приводит к необходимости находить область определения прежде, чем решать само уравнение. Фактически само уравнение следует сопроводить неравенствами, которые Mathcad тоже будет решать. Если этого не слелать, то уравнение по умолчанию будет решаться на области комплексных чисел, которые для большинства пользователей, исследующих реальные физические и другие явления, попросту бесполезны.
Вторая проблема, возникающая при решении уравнений с радикалами четных степеней — появление
посторонних корней. Ведь основным методом решения иррационального уравнения является метод возведения обеих частей уравнения в нужную степень, а при возведении в четную степень как числа х, так и числа —х, мы получим один и тот же результат. В итоге получается новое уравнение, строго говоря, не равносильное исходному. Заметим, что есть аналитические способы решения и уравнений с кубическими (и другими нечетными) радикалами, которые тоже приводят к посторонним корням. Но тут снова можно прибегнуть к проверке, т.е. подстановке полученных числовых величин в исходное уравнение. Следует помнить, что лишние корни вполне могут принадлежать области определения функции, приравниваемой нулю.
Класс трансцендентных уравнений обширен. В него входят показательные, логарифмические, тригонометрические уравнения, а также уравнения, содержащие различные (а не только степенные) элементарные функции и композиции элементарных функций. Помимо проблем, связанных с областью определения, в таких уравнениях при наличии тригонометрических функций могут возникнуть проблемы с периодичностью решений.
В зависимости от того, сколько неизвестных входят в систему уравнений, можно выделить два типа систем: системы с одним неизвестным и системы с несколькими неизвестными. Классификация всех систем — занятие бессмысленное, поскольку специальные эффективные (матричные) методы решения разработаны только для систем линейных алгебраических уравнений с несколькими неизвестными. Такие системы еще называют линейными алгебраическими системами. Все другие системы решаются с помощью одних и тех же общих численных методов.
Системы с одним неизвестным можно решить так: найти по отдельности решение каждого уравнения системы, а потом выбрать одинаковые для всех уравнений числа. Часто можно поступить проще: сначала решить то уравнение, которое имеет наименьшее число
корней, а потом все эти корни подставить в каждое из оставшихся уравнений системы.
Нелинейные системы с несколькими неизвестными решаются численными итерационными методами, требующими задания начального приближенного значения искомых неизвестных.
Выбор метода решения уравнения
Посмотрим, чем же стоит руководствоваться при выборе метода решения конкретного уравнения или системы.
Для вычисления всех корней алгебраического уравнения не выше пятой степени рекомендуется использовать символьные вычисления а также функцию polyroots (см. рис. 13), поскольку она не требует проведения процедуры локализации корней. Во всех остальных случаях придется либо локализовать корень на конкретном отрезке, либо использовать итерационные методы, имея достаточно хорошее начальное приближение и выбрав подходящую точность вычислений.
Прежде чем начать поиск корней уравнения, нужно на нескольких различных интервалах построить график функции, приравниваемой к нулю. Поведение графика даст ответ на несколько вопросов. Имеет ли функция действительный корень? Где он расположен? Сколько всего действительных корней? Отделены ли корни друг от друга, или они имеют некоторую точку скопления? Можно ли считать, что корни периодически повторяются, и чему равен период? Есть ли у функции точки разрыва, и насколько далеко от них лежат корни? Следует ли уменьшить значение системной переменной CTOL, чтобы различить два близко располо-женых корня?
Когда ответы на все вопросы получены, тогда можно определиться с методом и точностью вычислений.
Заметим, что если проигнорировать этап построения графика функции, то, например, функция root может сработать некорректно. Правда, по графику нельзя определить, попадет ли в процессе решения в точку локального минимума
невязки последовательность приближений. Если причина ошибки в этом, то нужно задать другое начальное приближение. Чем точнее выбрано начальное приближение корня, тем быстрее итерационный процесс будет сходиться.
Результатом решения системы будет численное или символьное значение вектора неизвестных величин. При символьном решении не надо вводить начальные значения, а при численном — надо. Если в системе всего два неизвестных, то построение трехмерных графиков функций, входящих в систему, позволит удачно подобрать начальное приближение для решения системы. В случае неудачного начального приближения появится сообщение об отсутствии сходимости последовательности итераций. Тогда придется начать все сначала, задав другое первое приближение.
Широкое использование компьютеров для аналитического или численного поиска корней уравнений привело к тому, что многие пользователи перестали чувствовать разницу между алгебраическими, рациональными, иррациональными и трансцендентными уравнениями. Более того, все эти уравнения стали называться просто алгебраическими. Так в документации Mathcad сказано, что этот пакет может численно решать и системы алгебро-диффренциальных уравнений (DAE) — системы, где присутствуют и алгебраические и дифференциальные (см. ниже) уравнения. Хотя там могут быть и другие типы
уравнений — рациональные, иррациональные и трансцендентные.
Раз мы упомянули дифференциальные уравнения, то следует сказать, что в Mathcad Prime к великолепной семерке добавилась еще одна функция — функция Odesolve.
Наша первая задача о «круизе» моторной лодки (см. рис. 1 и 2) имела существенное допущение: скорость лодки была постоянной. Но это условие выполнить практически невозможно, т. к. лодка по прибытии в один конец пути должна сбросить скорость, развернуться и пуститься в обратный путь. Можно, конечно, подправить задачу так: лодка достигает конечной точки и в этот момент эстафету принимает другая моторная лодка, движущаяся с такой же собственной скоростью, но в обратном направлении. Приблизить задачу об одной лодке к реальным условиям нам поможет еще одна встроенная функция Mathcad — функция Odesolve, предназначенная для решения (solve) обыкновенных (o — ordinary) дифференциальных (d) уравнений (e — equation) и их систем. Если при численном решении алгебраических уравнений мы получаем числа, подстановка которых в уравнения превращает их в тождества или в почти тождества, то при решении дифференциальных уравнений и их систем мы получаем уже не числа, а функции, подстановка которых
^ВОЭД I’li ,; .’. ^БОДЫ Г’ЕПДЬ ЕГ’ДШ
■ L ГНччЮТм ,>.(_>.. ■ I1
L.225 1 0,3 1000 3 12
Ot>»OtT»|[vll х. Ь. [Ч-р|>
Возфащаст фупця» пи иг» фучциА от
к(0 с)=0 м х'(0 c) = v 1 2 Масса’x»(t) = — —’X'(t) ■ р,мд-н,мд+ к,0И1 Рюды * ВвОДЬ|)
х:= aclesulve (x(t), Г( [.,; : Вст 11 IKd ф’/МЩУ И ка
Категория функции Имя функции
*(■) м Реиемле уравнении Случайные чиста СоетирМка Специальны* Статистке Строка»* Pde»*w Radio Hadapt v rkftted
OdBtohie([vf], тс. Ь. [rrt«fcj)
( 1 (=) Вдооаидет футций или м*тор фу нкцнй от x, предстшляаихх p«u мне
Пгранетр yf опускается п и реиени много ОДУ.
Рис. 21. Решение задачи об остановки лодки
превращает исходные дифференциальные уравнения в тождества. Заметим, что функция Odesolve в группе «Решение уравнений» стала восьмой (7 + 1 — см. выше) только в среде MathcadPrime. В Mathcad 15 в группе «Решение уравнений» ее не было, но она была в другой группе.
Итак, задача 4. На моторной лодке, движущейся со скоростью v, заглушили мотор. Спрашивается, как будут меняться во времени пройденный ею путь? Задача предельно упрощена — на лодку действует силы трения воды и воздуха, пропорциональные квадрату скорости лодки (см. рис. 17, 18, 19 и 20, где этот квадрат присутствовал). На рисунке 21 показано решение этой задачи с помощью функции Odesolve и его графическое отображение.
Коэффициент пропорциональности между инерцией и силой трения, записанный в уравнении на рис. 21 (масса лодки, помноженная на ускорение — на первую производную скорости по времени), состоит из двух частей, связанных с трением о воздух надводной части лодки и трением о воду ее подводной части. Эти коэффициенты пропорциональны плотности р среды (воздуха или воды) и площади поперечного сечения надводной и подводной частей лодки S. В уравнение можно добавить силу тяги мотора и моделировать также старт моторной лодки и ее последующее движение с переменной или постоянной тягой мотора. Если скорость лодки станет постоянной, то дифференциальное уравнение превратится в алгебраическое: сила тяги мотора будет уравновешиваться силой сопротивления воды и воздуха.
Задачу об остановке моторной лодки мы решили численно: функция Odesolve не ищет аналитического решения уравнения. Она формирует таблицу значений искомой функции с именем x (пройденный путь), по которой методом интерполяции создается непрерывная функция, график которой мы построили на рис. 21. На сайте http:// communities.ptc.com/videos/1471 можно просмотреть авторскую анимацию численного решения обыкновенного дифференциаль-
ного уравнения методами Эйлера и Рунге-Кутта, а на сайте http:// communities.ptc.com/videos/1699 помещена анимация похожей задачи — остановки автомобиля под действием сил трения. Другие авторские динамические модели (вращение планет со спутниками, качание маятников, спуск на парашюте, ныряние в воду, движение в туннеле, запуск ракеты с подводной лодки, скатывание с горы и др.), реализованные в среде Mathcad, можно найти здесь http://communities. ptc.com/groups/dynamic-models-in-mathcad.
В среде Mathcad нет средств аналитического (символьного) решения дифференциальных уравнений. Но их можно поискать и найти в Интернете. На рисунке 22 показано аналитическое решение задачи о движении моторной лодки — логарифмическая функция. Оно нашлось, поскольку исходное уравнение было достаточно простым: вторая производная функции пропорциональна квадрату ее первой производной. Но если с нашей задачи о движении лодки начать снимать ограничения, то символьного решения уже не будет, и нам придется возвращаться к численным методам — к функции Odesolve.
Так, например, при торможении лодки площадь поперечного сечения ее надводной части уменьшается (лодка проседает в воду), а подводной части растет (вспомним, что самые быстроходные суда те, у которых подводная часть минимальна: глиссирующие суда, суда на подводных крыльях или на воздушной подушке). Коэффициенты kвозд и ^оды (см. блок исходных данных на рис. 21) в свою очередь зависят от скорости и характера движения лодки: они одни при ламинарном обтекании тела и другие при турбулентном движении, когда за лодкой клубятся вихри воды и воздуха. У воды и воздуха разная вязкость, что тоже нужно учитывать при математическом моделировании движении лодки. Этим занимается очень интересная наука под названием гидрогазодинамика.
И последнее. После нахождения корня алгебраического уравнения (или решения системы уравнений) всегда, независимо от метода, стоит сделать проверку — подставить найденное значение (значения) в уравнение (в систему) и убедиться, что получилось тождество. Или почти тождество, если используются численные (приближенные) методы решения. Проверка решения
Рис. 22. Графическое сравнение аналитического и численного решения ОДУ
рассматриваемого дифференциального уравнения может заключаться в построении графика баланса сил и произведения массы на ускорение (если иметь ввиду задачу, показанную на рис. 21) в зависимости от аргумента полученной функции ^ — см. рис. 21). Этот график должен совпадать с осью х. Кроме того, если есть аналитическое решение дифференциального уравнения, то его можно сравнить с численным решением. Мы это сделали в расчетном документе, показанном на рис. 22, где МаШса^документ (численное решение задачи об остановке лодки) дополнен аналитическим решением.
Почему на рисунке 22 графики торможения моторной лодки не
совпали? Авторы долго ломали над этим головы, пока не сообразили, что в пакете Mathematica (а именно он работает на отмеченном на рис. 22 сайте) log — это натуральный логарифм, а в пакете Mathcad -десятичный. Этим и объясняется различный наклон логарифмических кривых. Если в формуле над кривыми функцию log заменить на In или log(. e), то эти две кривые сольются в одну.
Дифференциальные уравнения тоже можно разбить на типы. Есть, например, линейные дифференциальные уравнения, решения которых можно свести к решению алгебраических уравнений. Но это тема для отдельной статьи.
Каждая из рассмотренных функций «великолепной семерки Mathcad» обладает своими особенностями и ограничениями. Прежде чем приступать к решению задачи, следует продумать, какая из этих функций приведет к поставленной цели, причем наилучшим образом.
Школьнику, студенту, инженеру или ученому необходимо (а в ряде случаев и достаточно) освоить «великолепную семерку Mathcad», особенности численных, графических и аналитических методов решения задач, чтобы успешно решать на компьютере свои учебные или профессиональные задачи [4].
