MathCAD


5.2. Диффуры


Описанная задача об эпидемии сводится к решению задачи Коши для системы двух обыкновенных дифференциальных уравнений (ОДУ) первого порядка относительно двух неизвестных функций Больные(t) и Здоровые(t).

Больные’(t) = Больные(t) × (Пр × Здоровые(t)-1)

Здоровые(t) = -Пр × Больные(t) × Здоровые(t)

В пункте 2 на рис. 5.1, по сути, реализован метод Эйлера[3] с единичным шагом интегрирования Dt.

Больные(t+1)

= Больныеt + Dt × Больные¢t

Здоровые(t+1)

= Здоровыеt + Dt × Здоровые¢t

Заглядывая вперед, в этюд 6 (вернее, готовя читателя к нему), покажем, как вектор-выражение пункта 2 на рис. 5.1 реализуется средствами программирования (цикл с параметром):

for t Î 1..13

Больныеt+1 ¬ Пр×Здоровыеt ×Больныеt

3доровыеt+1 ¬ 3доровыеt - Пр×Здоровыеt ×Больныеt

В среде Mathcad до версий PLUS 5.0 дифференциальные уравнения без особых ухищрений можно было решать только методом Эйлера, который имеет низкую точность и производительность (плата за простоту). Инструментарий для решения дифференциальных уравнений (систем) различного порядка и различными методами появился в арсенале Mathcad PLUS 6.0. В него входят 13 встроенных функций (Bustoer, bustoer, bvalfit, multigird, relax, Rkadapt, rkadapt, rkfixed, sbval, Stiffb, stiffb, Stiffr и stiffr), работа одной из которых (rkfixed – метод Рунге ¾ Кутты (rk) четвертого порядка с фиксированным (fixed) шагом интегрирования) показана на рис. 5.2. У этой функции пять аргументов: вектор начальных значений искомых решений, абсцисса начальной точки интегрирования, абсцисса конечной точки интегрирования, число шагов интегрирования и функция-вектор правых частей системы. Функция rkfixed возвращает в матрицу (у нас она имеет имя Z) с P+1 столбцами и n строками (P – количество уравнений или порядок уравнения) таблицу решений системы: первый (вернее, нулевой) столбец – это значения аргумента t (их задает пользователь через величины tнач, tкон[4] и n), а последующие столбцы – значения ординат решения.




- Начало -  - Назад -  - Вперед -