
- •5. Решение дифференциальных уравнений с помощью встроенных функций MathCad
- •Вычислительный блок Given – Odesolve( )
- •Использование встроенных функций rkfixed( ), Rkadapt( ), Bulstoer( )
- •Оду высшего порядка
- •Решение систем оду в одной конечной точке
- •Некоторые примеры решения оду
- •Жесткие системы ду
- •Лабораторная работа 5
5. Решение дифференциальных уравнений с помощью встроенных функций MathCad
Обыкновенное дифференциальное уравнение первого порядка, по определению, содержит, помимо самой искомой функции у(t), только ее первую производную y'(t). В подавляющем большинстве случаев дифференциальное уравнение можно записать в стандартной форме (форме Коши), разрешенное относительно старшей производной:
у'(t)=f(y(t),t)
Только с такой формой умеет работать вычислительный процессор Mathcad. Правильная с математической точки зрения постановка соответствующей задачи Коши для ОДУ первого порядка должна, помимо самого уравнения, содержать одно начальное условие - значение функции y(t0) в некоторой точке t0. Требуется явно определить функцию y(t) на интервале от t0 до tx. По характеру постановки задачи Коши называют еще задачами с начальными условиями (initial value problem), в отличие от краевых задач.
Для численного интегрирования одного ОДУ у пользователя Mathcad имеется выбор - либо использовать вычислительный блок Given – Odesolve( ), либо встроенные функции. Первый путь предпочтительнее из соображений наглядности представления задачи и результатов, а второй дает пользователю больше рычагов воздействия на параметры численного метода. Рассмотрим последовательно оба варианта решения.
Вычислительный блок Given – Odesolve( )
Вычислительный блок для решения одного ОДУ, реализующий численный метод Рунге-Кутта, состоит из трех частей:
- Given - ключевое слово;
- ОДУ и начальное условие, записанное с помощью Булевых операторов, причем начальное условие должно быть в форме у(t0) = b;
- Odesolve(t, t1) - встроенная функция для решения ОДУ относительно переменной t на интервале (t0,t1).
Допустимо, и даже часто предпочтительнее, задание функции Odesolve (t, t1, step) с тремя параметрами, где step – необязательный внутренний параметр численного метода, определяющий количество шагов, в которых по методу Рунге-Кутта будет получено решение дифференциального уравнения. Чем больше step, тем с лучшей точностью будет получен результат, но тем больше времени будет затрачено на его решение. Таким образом, подбором этого параметра можно заметно (в несколько раз) ускорить расчеты без существенного ухудшения их точности.
Пример решения задачи Коши для ОДУ первого порядка у'=у-у2 посредством вычислительного блока Given – Odesolve( ) приведен на рис. 5.1. Вставлять логические операторы нужно при помощи панели инструментов Boolean (Булевы операторы). При вводе с клавиатуры логического знака равенства нужно использовать сочетание клавиш Ctrl =. Символ производной можно ввести как средствами панели Calculus (Вычисления), как это сделано на рис. 5.1, так и в виде штриха (‘), набрав его с помощью сочетания клавиш Ctrl +F7.
Рис.5.1. Решение задачи Коши для ОДУ первого порядка
Mathcad требует, чтобы конечная точка интегрирования ОДУ лежала правее начальной (t0<t1), иначе будет выдано сообщение об ошибке. Функция Odesolve( ) возвращает функцию y(t), определенную на интервале (t0,t1).
Пользователь имеет возможность выбирать между двумя модификациями численного метода Рунге-Кутта. Для смены метода необходимо нажать ПКМ на область функции Odesolve( ), вызвать контекстное меню и выбрать в нем один из двух пунктов: Fixed (Фиксированный шаг) или Adaptive (Адаптивный). По умолчанию применяется первый из них, т. е. метод Рунге - Кутта с фиксированным шагом.