- •Глава 5. Решение обыкновенных дифференциальных уравнений
- •5.1. Решение оду с помощью решающего блока Given …Odesolve.
- •5.1.1. Решение оду первого порядка.
- •5.1.2. Решение оду n-го порядка с одним неизвестным.
- •5.1.3. Решение системы оду первого порядка
- •5.2. Решение системы оду методом Рунге-Кутта с фиксированным шагом интегрирования (функция rkfixed).
- •5.3. Решение системы оду методом Рунге-Кутта с автоматическим выбором шага интегрирования (Rkadapt).
- •5.4. Решение системы оду методом Булирша – Штера (функция Bulstoer).
- •5.5. Решение системы оду методом Розенброка (функция Radau).
- •5.6. Решение краевых задач для обыкновенных дифференциальных уравнений.
Глава 5. Решение обыкновенных дифференциальных уравнений
Одним из основных блоков решения обыкновенных дифференциальных уравнений (ОДУ) в Mathcad является блок Given…Odesolve. Этот решающий блок используется для решения обыкновенных дифференциальных уравнений с заданными начальными условиями (задача Коши). Блок применим как для решения линейных и нелинейных уравнений n –го порядка с одним неизвестным, так и для систем уравнений первого порядка с n неизвестными.
Кроме блока Given…Odesolve в Mathcad имеется ещё несколько функций, реализующих классические алгоритмы численного решения задачи Коши для систем обыкновенных дифференциальных уравнений. Важнейшими из них , по нашему мнению, являются методы Рунге-Кутта интегрирования уравнений с фиксированным (rkfixed) шагом и с переменным шагом (Rkadapt), которые практически всегда приводят к решению. Аналогичные задачи позволяет решать и метод Булирша-Штера( Bulirsch-Stoer) с переменным и фиксированным шагом (функция Bulstoer), который в некоторых случаях даёт более точное решение при меньших затратах машинного времени. Для решения систем с вырожденной матрицей ОДУ предназначена функция Radau.
В Mathcad имеется возможность решения краевой задачи с помощью функции sbval, реализующей «метод прогонки».
Для решения в Mathcad системы уравнений любым из перечисленных выше методов исходная, т.е. записанная в математической форме система уравнений:
, (5.1)
где - аргумент(обычно подразумевается время),
- заданная функция своих аргументов,
должна быть преобразована к виду:
, (5.2)
где вектор (матрица-столбец) искомых функций,
вектор (матрица- столбец) значений производных – вектор правых частей системы уравнений в любой точке решения, представленного в виде матрицы-столбца (t, Y).
5.1. Решение оду с помощью решающего блока Given …Odesolve.
5.1.1. Решение оду первого порядка.
В случае уравнения первого порядка задаётся одно начальное условие на левом конце интервала интегрирования, т.е. в виде . Решение уравнения разыскивается на отрезке времени: .
На рабочем листе алгоритм решения уравнения (5.1) записывается следующим образом ( рис. 5.1):
- задаётся имя правой части уравнения, например f(t,y), которому присваивается её выражение;
- печатается оператор Given;
- печатается дифференциальное уравнение;
- записывается начальное условие;
- решение записывается в виде: y:= Odesolve(t, t1).
Рис. 5.1. Пример решения дифференциального уравнения 1-го порядка блоком Given…Odesolve
Примечание: 1. Для ввода главного символа производной «'» необходимо после имени функции напечатать [Ctrl] +F7 .
2. Внутри блока Given…Odesolve левая и правая части в записи уравнения и начального условия отделяются только знаком эквивалентности, который вводится комбинацией клавиш [Ctrl] + =(равно) или щелчком мыши на панели Boolean.