7.5.2. Функция DEplot из пакета DEtools

Специально для решения и визуализации решений дифференциальных уравнений и систем с дифференциальными уравнениями служит инструментальный пакет DEtools. В него входит ряд функций для построения наиболее сложных и изысканных графиков решения дифференциальных уравнений. Основной из этих функций является функция DEplot.

Функция DEplot может записываться в нескольких формах:

DEplot(deqns, vars, trange, eqns)

DEplot(deqns, vars, trange, inits, eqns)

DEplot(deqns, vars, trange, yrange, xrange, eqns)

DEplot(deqns, vars, trange, inits, xrange, yrange, eqns)

Здесь deqns — список или множество, содержащее систему дифференциальных уравнений первого порядка или одиночное уравнение любого порядка; vars — зависимая переменная или список либо множество зависимых переменных; trange — область изменения независимой переменной t; inits — начальные условия для решения; yrange — область изменения для первой зависимой пере-

менной, xrange — область изменения для второй зависимой переменной; eqns — опция, записываемая в виде keyword=value. Замена имен переменных другими в данном случае недопустима.

Эта функция обеспечивает численное решение дифференциальных уравнений или их систем при одной независимой переменной t и строит графики решения. Для автономных систем эти графики строятся в виде векторного поля направлений, а для неавтономных систем — только в виде кривых решения. По умолчанию реализуется метод Рунге-Кутта 4-го порядка, что соответствует опции method=classical [rk4],

С функцией DEplot могут использоваться следующие параметры:

• arrows=type — тип стрелки векторного поля ('SMALL', 'MEDIUM', 'LARGE', 'LINE' или 'NONE');

• colour, color = arfowcolour — цвет стрелок (задается 7 способами);

• dirgrid = [integer,integer] — число линий сетки (по умолчанию [20, 20]);

• iterations = integer — количество итераций, представленное целым числом;

• linecolor, linecolor = line_info — цвет линии (задается 5 способами);

• method='rk4' — задает метод решения ('euler', 'backeuler', 'impeuler' или 'rk4');

• obsrange = TRUE,FALSE — задает (при TRUE) прерывание вычислений, если кривая решения выходит из области обзора;

• scene = [name,name] — задает имена зависимых переменных, для которых строится график;

• stepsize=h — шаг решения, по умолчанию равный abs((b-a))/20, и представленный вещественным значением.

7.5.3. Решение системы дифференциальных уравнений модели Лотки-Вольтера

Еще одна из моделей динамики популяций, известна как модель Лотки- Вольтера, описывает изменение популяции в биологической среде хищник-жертва. Эта модель позволяет описать периодическое колебательное изменение числа жертв и поедающих их хищников. На рис. 7.14 показано решение системы дифференциальных уравнений Лотки-Вольтера:

x'(t) = x(t)(1 - y(t)), x'(t) = 0,3y(y)(x(t) - 1).

Рис. 7.14. Решение системы дифференциальных уравнений модели Лотки-Вольтерра с выводом в виде графика векторного поля

Решение представлено в виде векторного поля, стрелки которого являются касательными к кривым решения (сами эти кривые не строятся). Обратите внимание на функциональную закраску стрелок векторного поля, делающую решение особенно наглядным (правда, лишь на экране цветного дисплея, а не на страницах книги).

Еще интересней вариант графиков, представленный на рис. 7.15. Здесь помимо векторного поля несколько иного стиля построены фазовые портреты решения с использованием функциональной закраски их линий. Фазовые портреты построены для двух наборов начальных условий: x(0)=y(0)=1,2 и y(0)=1 и y(0)=0,9.

Рис. 7.15. Пример построения двух фазовых портретов на фоне векторного поля

Читатель может легко дополнить этот пример выводом графиков временных зависимостей числа хищников и жертв и убедиться в том, что они действительно носят колебательный характер. При этом отличие фазовых портретов от эллиптической формы говорит о том, что форма колебаний заметно отличается от синусоидальной.

Следует отметить, что функция DEplot может обращаться к другим функциям пакета SEtools для обеспечения специальных графических возможностей, таких как построение векторного поля или фазового портрета решения. В файле deplot.mws можно найти множество дополнительных примеров на применение функции Deplot.

7.5.4. Функция DEplot3d из пакета DEtools

В ряде случаев решение систем дифференциальных уравнений удобно представлять в виде пространственных кривых — например, линий равного уровня, или просто в виде кривых в пространстве. Для этого служит функция DEplot3d:

DEplot3d(deqns, vars, trange, initset, o)

DEplot3d(deqns, vars, trange, yrange, xrange, initset, o)

Назначение параметров этой функции аналогично указанному для функции DEplot.

Рис. 7.16 поясняет применение функции DEPlot3d для решения системы из двух дифференциальных уравнений с выводом фазового портрета колебаний в виде параметрически заданной зависимости x (t), y(t). В данном случае фазовый портрет строится на плоскости по типу построения графиков линий равной высоты (контурных графиков).

Рис. 7.16. Пример решения системы из двух дифференциальных уравнений с помощью функции DEplot3d

Другой пример (рис. 7.17) показывает решение системы из двух дифференциальных уравнений с построением объемного фазового портрета. В этом случае используется трехмерная координатная система и графические построения соответствуют параметрическим зависимостям x(t), y(t) и z(t). Вид фазового портрета напоминает разворачивающуюся в пространстве объемную спираль. Функциональная окраска делает график пикантным, что, увы, теряется при черно-белом воспроизведении графика.

Рис. 7.17. Пример решения системы из двух дифференциальных уравнений с построением трехмерного фазового портрета

Возможности функции DEplot3d позволяют решать системы, состоящие более чем из двух дифференциальных уравнений. Однако в этом случае число решений, представляемых графически, выходит за пределы возможного для трехмерной графики. При этом от пользователя зависит, какие из

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату