Как встроить функции в маткаде примеры решения
БлогNot. MathCAD: решаем основные типы дифференциальных уравнений встроенными функциями
MathCAD: решаем основные типы дифференциальных уравнений встроенными функциями
Решать дифференциальные уравнения (далее ДУ) в MathCAD, составляя собственные подпрограммы-функции не всегда удобно и экономично по времени, хотя и полезно на этапе обучения. Опишем в этой заметке способы решения основных типов ДУ с помощью стандартных средств пакета, ограничимся простыми примерами.
1. ДУ с разделяющимися переменными. Общая постановка задачи: y’=f(x,y)=g(x)*h(y) , y(x0)=y0 . То есть, f(x,y) допускает представление в виде произведения функций от x и от y .
Для решения уравнения достаточно задать его правую часть как пользовательскую функцию MathCAD, определить интервал поиска решения [x0,x1] , начальное условие y0 и применить стандартную функцию Odesolve . Покажем этот процесс на примере уравнения y’=2x-y+x 2 , x∈[0,2] , y(0)=0 с известным решением y(x)=x 2 :
Решение дифференциальных уравнений с разделяющимися переменными
Знак «равно» в записи уравнений, конечно же, жирный (панель Boolean или сочетание клавиш Ctrl+=).
Функция Odesolve вернула именно функцию y , её нужно смотреть от аргумента, например, y(1)= .
И ещё 2 особенности:
Зная точное решение, графически сравним с ним найденное решение. Как видно на графике, MathCAD справился с задачей отлично.
Графики полученного и точного решения совпадают
2. Неоднородное ДУ первого порядка. В общем виде такое уравнение можно записать как y’=a(x)*y+b(x) . Оно решается аналитически по формуле, которую можно найти в любой книге по решению обыкновенных ДУ:
Формула для решения неоднородного ДУ первого порядка
Здесь С – константа интегрирования. Остаётся применить формулу к конкретному уравнению (возьмём для примера задачу y’+2xy=x*e -x 2 sin(x) , y(0)=1 ) и оценить её символьно:
Аналитическое решение неоднородного ДУ первого порядка в MathCAD
Здесь мы получаем решение в общем виде. Нижний оператор оценён символьно (см. панель «Символика»), а аргумент t используется, так как x в документе «уже занят» (для корректной работы символьной оценки переменные не должны быть определены заранее).
После подстановки начального условия получим частное решение y(t,Y0) , а для проверки решения будет достаточно подставить полученную функцию в исходное уравнение и упростить его символьной функцией simplify . Полученный результат в нашем случае совпал с заданной в условии правой частью. Также для y(x,Y0) , как и для любой функции, можно построить график на нужном интервале изменения x.
Проверка решения неоднородного ДУ первого порядка и построение графика
3. Неоднородное ДУ второго порядка. В общем виде имеем уравнение y» + p(x)*y’ + g(x)*y = f(x) плюс набор краевых условий, количество которых соответствует порядку задачи, например y(0)=. y'(0)=. или y(0)=. y(1)=.
Возьмём уравнение, которое мы мучили вот здесь, решим его стандартными средствами, сравним с известным точным решением и построим график:
Решение неоднородного ДУ второго порядка в MathCAD
Здесь при вызове Odesolve второй параметр, равный единице — это правая граница интервала, третий параметр, равный 10, задаёт количество интервалов. Точное решение u(t) взяли по ссылке. Как видим, даже на 10 интервалах всё очень хорошо совпадает.
4. Система ДУ. Подход к решению системы ДУ покажем на примере. Пусть задана система дифференциальных уравнений
x’ = a*x — y — (x 2 + y 2 )*x,
y’ = a*y + x — (x 2 + y 2 )*y,
x(0)=0, y(0)=1, a=-0.2
Чтобы решить эту систему стандартной функцией rkfixed , нужно задать для неё вектор начальных значений x = (x0, y0) и вектор правых частей D(t,x) .
После этого задача решится вызовом rkfixed , второй и третий параметры ( 0, 20 ) задают интервал по времени t , на котором ищется решение, четвёртый параметр 100 означает количество точек на интервале.
Функция вернёт матрицу решений системы, в которой количество строк соответствует количеству точек на интервале, а количество столбцов — количеству уравнений в системе.
Для построения графика достаточно отобразить зависимость столбцов Zi,1 , Zi,2 от Zi,0 , i=0..99 :
Решение системы ДУ в MathCAD функцией rkfixed
Встроенные функции MathCAD для решения нелинейных алгебраических и трансцендентных уравнений
Уравнения в MathCAD решаются с помощью двух встроенных функцийroot и polyroots.
3.1.2.1 Встроенная функция MathCAD – root(F(x), x)
Для численного решения уравнений предназначена стандартная функция MathCAD – root(F(x), x), которая возвращает значение корня с заданной точностью. Функция root имеет два аргумента:
первый – выражение, стоящее в левой части уравнения, то есть F(x), второй – переменная, относительно которой решается уравнение, то есть x.
Ищется значение переменной x, при которой выражение F(x) обращается в ноль. Функция root возвращает значение переменной x, которая обращает выражение F(x) в ноль.
Второй аргумент — имя переменной, которое используется в выражении. Это та переменная, варьируя которую Mathcad пытается обратить выражение F(x) в ноль.
Функция реализует вычисление итерационным методом и перед её применением необходимо задать начальное значение переменной x, принадлежащее интервалу изоляции корня.
В зависимости от начального приближения функция root возвращает различные значения.
Решение уравнений с помощью функции root может производиться с различной точностью, которая задается значением системной переменной TOL.
Пример 3.1 Решить уравнение с точностью .
Процесс решения показан на рисунке 1. Выполняется следующая последовательность действий:
1.Сначала вводится функция , соответствующая левой части уравнения.
2. Задается точность.
3. Графически находится приближенное решение уравнения (можно использовать трассировку).
4. При помощи функции root выполняется нахождение решения уравнения с заданной точностью.
5. Выполняется проверка найденного решения.
В зависимости от начального приближения функция root возвращает различные значения. Результат решения задачи приведён на рисунке 3.1.1 В результате найдены корни x0=-3.258, x1=0.2, x2=3.057.

Рисунок 3.1.1 – Пример решения нелинейного алгебраического уравнения
Функцию root можно записать в виде root (f(x), x, a, b), где a, b – пределы интервала изоляции корня. При такой форме записи нет необходимости задавать начальное значение х, так как оно определено в интервале .
Пример 3.2 Решить уравнение e x /5 -2(x-1) 2 = 0.
Результаты решения показаны на рисунке 2. Используя график функции, определяют пределы интервала изоляции каждого корня, а затем с помощью функции root (f(x), x, a, b) находят значение интересующего корня.
В данном случае найдено три корня. Необходимо правильно указывать интервал изоляции, в случае ошибки значение корня не будет найдено, что показано на рисунке 3.1.2

Рисунок 3.1.2 – Пример решения уравнения с использованием
функции root (f(x), x, a, b)
На рисунке 3.1.3 показан пример решения уравнения, имеющего комплексные корни. В таких случаях начальное приближённое значение корня также должно быть комплексным. При вводе мнимого числа надо писать 1i, а не i. В данном примере при вычислении второго корня х2 первый исключается делением f(х) на (х-х1). При нахождении третьего корня f(х) делится на (х-х1)(х-х2).

Рисунок 3.1.3 – Пример решения уравнения, имеющего
действительные и комплексные корни
Необходимо отметить особенность функции root, связанную с тем, что она не всегда позволяет найти значение корня.
Mathcad при поиске корня с помощью функции root использует метод итераций. Начальное значение, присвоенное переменной x, становится первым приближением к искомому корню. Когда значение выражения f(x) при очередном приближении становится меньше значения встроенной переменной TOL, корень считается найденным и функция root возвращает результат. Если после многих итераций Mathcad не может найти соответствующее приближение, то появляется сообщение об ошибке «отсутствует сходимость». Эта ошибка может быть вызвана следующими причинами:
— уравнение не имеет корней;
— корни уравнения располагаются далеко от начального приближения;
— выражение имеет локальные максимумы или минимумы между начальным приближением и корнем;
— выражение имеет разрывы между начальным приближением и корнями;
— выражение имеет комплексный корень, но начальное приближение было вещественным (или наоборот).
Чем точнее выбрано начальное приближение корня, тем быстрее функция root будет сходиться к точному решению.
Практическое занятие № 31. » Mathcad-14: встроенные и пользовательские функции, работа с графиками.»
Цель занятия– изучение возможностей использования встроенных функций, метода создания пользовательских функций, приобретение навыков работы с графиками, знакомство с методами решения алгебраических уравнений.
1. Встроенные функции Mathcad.
Откройте программу Mathcad-14. Mathcad содержит огромное количество встроенных функций. Некоторые из них просто рассчитывают определенное значение, а некоторые реализуют сложные алгоритмы. Учитывая, что большинство алгебраических функций Mathcad имеют общепринятую стандартную математическую форму, нет смысла подробно описывать в данном руководстве все имеющиеся функции. Ограничимся лишь перечислением категорий существующих функций. Доступ к мастеру вставки функций осуществляется кнопкой , расположенной на стандартной панели инструментов. Откройте окно мастера и изучите его интерфейс. Окно содержит четыре области и четыре управляющих кнопки:
область Function Category – для выбора интересующей категории функций;
область Function Name – для выбора конкретной функции;
область математической формы записи функции и ее аргументов (параметров);
область справочных сведений о выбранной функции;
кнопка – для вызова расширенной справки о выбранной функции;
кнопка – для вставки функции в документ и закрытия окна мастера;
кнопка – для вставки функции в документ;
кнопка – для закрытия окна мастера без вставки функции в документ.
Категории встроенных функций Mathcad:
Bessel, Special, Piecewise Continuous– специальные математические функции, символы и условия;
Complex Numbers – функции работы с комплексными числами;
Curve Fitting and Smoothing – функции аппроксимации и сглаживания;
Data Analysis – функции анализа данных;
Debugging – функции для отладки программ Mathcad;
Differential Equation Solving – функции решения дифференциальных уравнений;
Expression Type – функции определения типа данных;
File Access – функции записи и чтения файлов данных при вычислениях;
Finance – группа функций для финансовых расчетов;
Fourier Transform – функции быстрого преобразования Фурье;
Graphing – функции для работы с графикой;
Hyperbolic, Trigonometric – гиперболические и тригонометрические функции;
Image Processing – функции для работы с изображениями;
Log and Exponential – функции, связанные с логарифмированием;
Lookup, Vector and Matrix– функции для работы с элементами линейной алгебры;
Number Theory/Combinatorics – функции теории чисел и комбинаторики;
Probability Density, Probability Distribution, Random Numbers – функции для работы со случайными числами и их распределениями;
Solving, Sorting – функции сортировки и решения вычислительных блоков;
Statistics – функции для статистической обработки данных;
String – функции для работы с текстовыми (строковыми) данными;
Truncation and Round—Off – функции для усечения и округления данных;
Wavelet Transform, Wavelets – функции для вейвлет-преобразований.
При решении конкретных задач пользователь имеет возможность, на основе собственных представлений о предметной области той или иной задачи, выбрать категорию и найти подходящую встроенную функцию. Опыт применения библиотеки функций вырабатывается при практическом индивидуальном использовании программы Mathcad, когда пользователь привыкает к собственному набору наиболее часто используемых функций, специфичных для решаемых классов вычислительных и моделирующих задач. В данном руководстве рассматриваются только отдельные примеры, иллюстрирующие применение некоторых встроенных функций.
Для предотвращения синтаксических ошибок рекомендуется (по крайней мере, для начинающих пользователей) вводить имя и шаблон параметров встроенных функций не вручную, а с использованием кнопки вызова мастера функций.
При изучении следующих примеров повторите вычисления по предлагаемым образцам, а затем предложите возможные варианты решения задач для самостоятельной проработки.
Использование функций генерации случайных чисел, проверки условий, округления чисел.
Пример 1.1. Моделирование случайных событий: опыт с подбрасыванием монеты.
Необходимо реализовать модель бинарного случайного опыта, например, с подбрасыванием монеты. При этом возможны два исхода: выпадение герба или цифры (или чисел 0 и 1).
Возможно применение следующих встроенных функций:
rnd(X) – генерация случайного числа, распределенного равномерно в пределах от 0 до величины X, где X может быть определено, как число или как переменная;
if(Условие (логическое выражение),Значение_1,Значение_2) – если выполняется логическое Условие, то функция возвращает Значение_1, в противном случае – Значение_2;
ceil(X) – округление до наименьшего целого значения, большего или равного X;
floor(X) – округление до наибольшего целого значения, меньшего или равного X;
round(X,n) – округление числа X с точностью до n знаков после запятой. Если n отсутствует, то округление производится до ближайшего целого числа;
trunc(X) – возвращение целой части числа (отбрасывание дробной части).
Вариант 1.Производится генерация случайного числа из диапазона 0…1. Если это число больше середины интервала 0.5 (знак десятичного разделителя вводится как точка), то переменной А присваивается текстовое значение «ГЕРБ» (вводится в двойных кавычках), в противном случае – «ЦИФРА». Для повторения опыта используйте комбинацию клавиш Ctrl+F9.

Вариант 2.После генерации равномерно распределенного от 0 до 1 числа используется функция округления, превращающая дробное число в 0 или 1 по принципу близости значения к тому или иному целому значению.

Возможна запись этого решения в виде одного оператора присваивания:

Многократно применяя комбинацию клавиш Ctrl+F9, убедитесь в работоспособности созданной модели случайных событий.
Пример 1.2. Используя возможности описанных выше функций, самостоятельно предложите варианты реализации модели игрового кубика: равновероятны появления чисел от 1 до 6.
Заполнение матрицы значениями функции в MathCAD
Константу g задавать не надо, так как она является встроенной в MathCAD.
Заполним вектор (одномерный массив) b значениями высоты
Число элементов m в векторе b можно вычислить по формуле
Введём ранжированную переменную
Для начала нумерации массива с единицы надо присвоить
переменной ORIGIN:=1
для i-того элемента вектора
Так как в MathCAD вектор это один столбец для вывода в строку используем операцию транспонирования.
Тогда элемент таблицы (матрицы) равен
Полностью решение в MathCAD выглядит так:
Задание к лабораторной работе № 2
Заполнить матрицу значениями функции:
F(x,y) = a*sin(Pi*x)*cos(Pi*y)
Значение константы а, диапазон изменения и шаг по переменным х и у выбрать самостоятельно.
ЗАДАНИЯ НА МАТРИЦЫ
1. Определить произведение матриц А и В (матрицу А взять из табл. 1.6., матрицу B задать произвольно).
2. Транспонировать матрицы А и В.
3. Ввести матрицу Н (из табл. 1.6.). Вычислить определитель и получить обратную матрицу .
4. Ввести вектор V (из табл. 1.6.). Определить сумму элементов вектора, максимальный элемент в нём. Упорядочить его элементы по возрастанию. Создать на основе вектора V диагональную матрицу.
| Вариант | H | А | V |
ЛАБОРАТОРНАЯ РАБОТА №3
Решения СЛАУ. Реализовать решение заданной СЛАУ в среде MathCAD
Решение СЛАУ в среде MathCad
Mетод Крамера
Матричный метод
Решить СЛАУ методом матричным методом.
1. Проверка условия невырожденности матрицы A
2. Определение вектора решения системы X
Метод итерации
Информация к решению
Метод итерации относится к разряду приближённых.
Рекомендуется использовать специальный вычислительный блок MathCAD:

Знак логического оператора «=» можно ввести в документ с панели инструментов Математика => палитры Операторы или с помощью сочетания клавиш Ctrl + =.
В качестве начальных (нулевых) приближений для искомых неизвестных:
рекомендуется принимать соответствующие значения свободных членов
Решить СЛАУ (8) методом итерации.
1. Задание начальных (нулевых) приближений для искомых неизвестных: