Maple 9.5/10 в математике, физике и образовании - Владимир Дьяконов
Шрифт:
Интервал:
Закладка:
7.5. Графическая визуализация решений дифференциальных уравнений
7.5.1. Применение функции odeplot пакета plots
Для обычного графического представления результатов решения дифференциальных уравнений может использоваться функция odeplot из описанного выше пакета plots. Эта функция используется в следующем виде:
odeplot(s,vars, r, о)
где s — запись (в выходной форме) дифференциального уравнения или системы дифференциальных уравнений, решаемых численно функцией dsolve, vars — переменные, r — параметр, задающий пределы решения (например, a..b) и о — необязательные дополнительные опции.
На рис. 7.11 представлен пример решения одиночного дифференциального уравнения с выводом решения у(х) с помощью функции odeplot.
Рис. 7.11. Пример решения одиночного дифференциального уравнения
В этом примере решается дифференциальное уравнение
у'(х) = cos(x²y(x))при у(0)=2 и х, меняющемся от -5 до 5. Левая часть уравнения записана с помощью функции вычисления производной diff. Результатом построения является график решения y(x).
В другом примере (рис. 7.12) представлено решение системы из двух нелинейных дифференциальных уравнений. Здесь с помощью функции odeplot строятся графики двух функций — y(х) и z(x).
Рис. 7.12. Пример решения системы из двух дифференциальных уравнений
В этом примере решается система:
y'(х) = z(х), z'(x) = 3 sin(y(x))при начальных условиях y(0)=0, z(0)=1 и х, меняющемся от -4 до 4 при числе точек решения, равном 25.
Иногда решение системы из двух дифференциальных уравнений (или одного дифференциального уравнения второго порядка) представляется в виде фазового портрета — при этом по осям графика откладываются значения у(х) и z(х) при изменении х в определенных пределах. Рисунок 7.13 демонстрирует построение фазового портрета для системы, представленной выше.
Рис. 7.13. Представление решения системы дифференциальных уравнений в виде фазового портрета
Обычное решение, как правило, более наглядно, чем фазовый портрет решения. Однако для специалистов (например, в теории колебаний) фазовый портрет порою дает больше информации, чем обычное решение. Он более трудоемок для построения, поэтому возможность Maple быстро строить фазовые портреты трудно переоценить.
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 позволяют решать системы, состоящие более чем из двух дифференциальных уравнений. Однако в этом случае число решений, представляемых графически, выходит за пределы возможного для трехмерной графики. При этом от пользователя зависит, какие из зависимостей опускаются при построении, а какие строятся. В файле deplot3d.mws есть ряд дополнительных примеров на применение функции Deplot3d.
7.5.5. Графическая функция dfieldplot
Графическая функция dfieldplot служит для построения поля направления с помощью векторов по результатам решения дифференциальных уравнений. Фактически эта функция как бы входит в функцию DEplot и при необходимости вызывается последней. Но она может использоваться и самостоятельно, что демонстрирует рис. 7.18, на котором показан пример решения следующей системы дифференциальных уравнений: x'(t)=x(t)(1-у(t)), у'(t)=0,3у(t)(х(t)-1).