|
11.1.2. Встроенные функции rkfixed, Rkadapt, Bulstoer
Альтернативный метод решения ОДУ перешел из прежних версий Mathcad. Он заключается в использовании одной из встроенных функций rkfixed, Rkadapt или Bulstoer. Этот способ несколько проигрывает первому и в простоте, и в наглядности Поэтому я советую предпочесть вычислительный блок Given/odesoive Однако иногда приходится решать ОДУ первого порядка с помощью второго способа, например, при следующих обстоятельствах:
- одно ОДУ решается в контексте решения более сложных задач,
в которые входят системы дифференциальных уравнений (для которых вычислительный
блок неприменим) — в этом случае может потребоваться единый стиль программирования;
- ответ предпочтительнее получить в виде вектора, а не функции;
- Вы привыкли к записи ОДУ в старых версиях Mathcad, у Вас
много документов, созданных с их помощью и т.п.
Поскольку решение вторым способом одного ОДУ мало чем отличается от решения
систем ОДУ (см разд 11.3), приведем пример его использования в задаче из листинга
11.1. практически без комментариев (см. листинг 11.2) и с помощью одной из трех
существующих для этих целей встроенных функций rkfixed. Обратите внимание только
на необходимость явного задания количества точек интегрирования ОДУ м=100 в
третьей строке листинга, а также на получение результата, в отличие от вычислительного
блока, не в виде функции, а в виде матрицы размерности M X 2. Она состоит из
двух столбцов в одном находятся значения аргумента t (от t0 до t1 включительно),
а в другом соответствующие значения искомой функции y(t).
Листинг 11.2. Решение задачи Коши для ОДУ первого порядка вторым способом

В листинге 11.2. приведен пример не лучшего стиля Mathcad-программиро-вания
Сначала переменной у присвоено значение скаляра у=0 1, а затем этой же переменной
присвоено матричное значение (результат решения ОДУ) Старайтесь избегать такого
стиля, который ухудшает читаемость программы и может приводить, в более сложных
случаях, к трудно опознаваемым ошибкам Неплохим решением было бы назвать результат
по-другому, например u.
График решения рассматриваемого уравнения показан на рис. 11.1. Обратите внимание, что он соответствует получению решения в матричном виде (листинг 11.2), поэтому по осям отложены соответствующие столбцы, выделенные из матрицы у оператором <>.
Пример, решенный в листингах 11.1—11.2, взят из области математической
экологии и описывает динамику популяций с внутривидовой конкуренцией Сначала
происходит рост численности популяции, близкий к экспоненциальному, а затем
выход на стационарное состояние
Рис. 11.1. Решение уравнения y' =y-y2 (листинг 11.2)
|