Дифференциальное уравнение N-го порядка
Для решения ОДУ порядка N>1 в Mathcad предусмотрены две возможности:
- вычислительный блок Given/odesolve (начиная с версии 2000) – в этом случае решение имеет вид функции от t;
- встроенные функции решения систем ОДУ, причем уравнения высших порядков необходимо предварительно свести к эквивалентной системе уравнений первого порядка, как об этом рассказано в разд. 9.1.1, – в этом случае решение имеет формат вектора.
В данном разделе рассматривается первый из вариантов, а второй будет описан в следующем, применительно к общему случаю системы N уравнений. Заметим лишь, что первый путь предпочтительнее из соображений наглядности представления задачи и результатов, а второй дает пользователю больше рычагов воздействия на параметры численного метода.
Вычислительный блок для решения ОДУ, реализующий численный метод Рунге-Кутты, состоит из трех частей:
- Given – ключевое слово;
- ОДУ и начальные условия в формате y(t0)=b, записанные с помощью логических операторов, которые должны набираться на панели инструментов Boolean (Булевы операторы);
- odesoive(t,ti) – встроенная функция для решения ОДУ относительно переменной t на интервале (t0,t1), причем t0<t1.
Примечание 1
На запись ОДУ в пределах вычислительного блока накладывается несколько ограничений. Во-первых, ОДУ должно быть линейно относительно старшей производной, т. е. фактически должно быть поставлено в стандартной форме. Во-вторых, начальные условия должны иметь форму у (t0) =b или y(N) (t0) =b, а не более сложную (как, например, встречающаяся в некоторых математических приложениях форма у (t0)+y' (t0)=b).
Примечание 2
Допустимо, и даже часто предпочтительнее, задание функции Odesoive (t,t1, step) с тремя параметрами, где step – внутренний параметр численного метода, определяющий количество шагов в которых метод Рунге-Кутты будет рассчитывать решение дифференциального уравнения. Чем больше step, тем с лучшей точностью будет получен результат, но тем больше времени будет затрачено на его поиск. Помните, что подбором этого параметра можно заметно (в несколько раз) ускорить расчеты без существенного ухудшения их точности.
Пример решения задачи Коши для ОДУ второго порядка, являющегося усложнением модели из листинга 9.1 на нелинейный случай (с параметром квадратичной нелинейности у) приведен в листинге 9.2, а результат – на рис. 9.4. Учтите, что символ производной допускается вводить как средствами панели Calculus (Вычисления), как это сделано в листинге 9.1, так и в виде штриха, набрав его с помощью сочетания клавиш CTRL + F7 (как в листинге 9.2). Выбирайте тот или иной способ представления производной из соображений наглядности представления результатов – на ход расчетов он не влияет.
Рис. 9.4. Решение уравнения w2у''+βу '+у+γу2 =0 (продолжение листинга 9.2)
Еще раз подчеркнем, что результатом применения блока Given/odesolve является функция y(t), определенная на промежутке (t0,t1). Следует воспользоваться обычными средствами Mathcad, чтобы построить ее график или получить значение функции в какой-либо точке указанного интервала, например: у(10)=0.048.
Листинг 9.2. решение задачи Коши для ОДУ второго порядка (модель нелинейного осциллятора):
Пользователь имеет возможность выбирать между двумя модификациями численного метода Рунге-Кутты. Для смены метода необходимо нажатием правой кнопки мыши на области функции odesoive вызвать контекстное меню и выбрать в нем один из трех пунктов: Fixed (С фиксированным шагом), Adaptive (Адаптивный) или Stiff (Для жестких ОДУ). Подробнее о различиях этих методов сказано в разд. 9.3.4 и 9.4.