Решение дифференциальных уравнений

Для численного решения обыкновенных дифференциальных уравнений (ОДУ или ode – ordinary differential equation) система располагает различными средствами. Можно реализовать алгоритмы известных методов решения средствами MathCAD самостоятельно. Встроенные средства пакета позволяют решать ОДУ в виде задачи Коши или краевой задачи.

ОДУ в форме задачи Коши могут быть решены в системе двумя способами: с помощью вычислительного блока Given – Odesolve и с использованием встроенных функций.

В первом случае для решения ОДУ необходимо произвести следующие действия. Записывают служебное слово Given, ниже которого определяют ОДУ. При этом уравнение должно быть строго линейным. Производную допустимо представлять в любой из двух используемых в математике форм (dy/dx или y'(x)). Символ производной «штрих» набирается сочетанием клавиш Ctrl+F7. Затем внутри блока задают начальные условия – значения искомой функции и ее производных по n-1 включительно (n – порядок ОДУ) в исходной (левой) точке интегрирования. Уравнение и начальные условия записывают с логическим знаком равенства. После этого в блоке используют функцию odesolve(x, r, [step]) для получения значений искомой функции в узловых точках. Число точек определяется границами изменения аргумента x: левой, заданной при описании начальных условий, и правой – r,- а также шагом step.Шаг можно не задавать, по умолчанию step = 0,1. Можно задавать шаг > 1, в этом случае он определяет число узловых точек, а можно - < 1, и тогда он устанавливает интервал следования узлов по оси абсцисс. Функция использует алгоритм Рунге-Кутта 4-го порядка. Пример ее применения приведен ниже.

 

При необходимости можно использовать адаптивный алгоритм поиска решения ОДУ. Для этого следует вызвать контекстное меню (щелчком по функции odesolve) и в нем установить флажок «Адаптивный», а не «Фиксированный».

С помощью встроенных функций можно решать системы ОДУ, чего нельзя сделать с использованием рассмотренного выше блока Given – Odesolve. MathCAD располагает тремя функциями, реализующими разные методы решения: rkfixed(y, x1, x2, n, D) – Рунге-Кутта 4-го порядка с фиксированным шагом; Rkadapt((y, x1, x2, n, D) – адаптивный алгоритм Рунге-Кутта; Bulstoer(y, x1, x2, n, D) – метод Булирша-Штера. Все они используют одинаковый набор аргументов: y – вектор начальных условий; x1 и x2 – граничные точки интервала, на котором ищется решение; n – количество узловых точек, не считая начальной; D – вектор правых частей уравнений, разрешенных относительно первых производных искомых функций. Покажем как пользоваться этими функциями.

Система предлагает пользователю также варианты функций для адаптивного алгоритма и метода Булирша-Штера, имеющие по 7 аргументов: rkadapt() и bulstoer() (их имена начинаются со строчных букв!) [1].