Математический редактор MathCAD

         

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)


Содержание раздела