Применение функции odeplot пакета plots
Применение функции odeplot пакета plots
Для обычного графического представления результатов решения дифференциальных уравнений может использоваться функция odeplot из описанного выше пакета plots. Эта функция используется в следующем виде:
odep1ot(s,vars.r,o)
где s — запись (в выходной фирме) дифференциального уравнения или системы дифференциальных уравнений, решаемых численно функцией dsolve, vars — переменные, г — параметр, задающий пределы решения (например, а. .Ь), и о — необязательные дополнительные опции.
представлен пример решения одиночного дифференциального уравнения с выводом решения у(х) с помощью функции odeplot.
В этом примере решается дифференциальное уравнение:
y'(x)=cos(x2y(x))
при у(0) = 2 и x, меняющемся от-5 до 5. Левая часть уравнения записана с помощью функции вычисления производной diff. Результатом построения является график решения у(х).
В другом примере представлено решение системы из двух нелинейных дифференциальных уравнений. Здесь с помощью функции odeplot строятся графики двух функций. —у(х) и z(x).
В этом примере решается система:
у'(х)=z(х),
z'(x) = 3 sin(y(x))
при начальных условиях y(0)=0, z(0) = 1 их, меняющемся от -4 до 4 при числе точек решения, равном 25.
Иногда решение системы из двух дифференциальных уравнений (или одного дифференциального уравнения второго порядка) представляется в виде фазового портрета — при этом по осям графика откладываются значения у(х) и z(х) при изменении х в определенных пределах. Рисунок демонстрирует построение фазового портрета для системы, представленной выше.
Обычное решение, как правило, более наглядно, чем фазовый портрет решения. Однако для специалистов (например, в теории колебаний) фазовый портрет порою дает больше информации, чем обычное решение. Он более трудоемок; для построения, поэтому возможность Марle 7 быстро строить фазовые портреты трудно переоценить.
Функция DEplot из пакета DEtools
Специально для решения и визуализации решений дифференциальных уравнений и систем с дифференциальными уравнениями служит инструментальный пакет DEtools. В него входит ряд функций для построения наиболее сложных и изысканных графиков решения дифференциальных уравнений. Основной из этих функций является функция DEplot. Функция DEplot может записываться в нескольких формах:
DEplot(deqns, vars. trange. eqns)
DEplot(deqns, vans, trange. inits. eqns)
DEplot(deqns. vars. trange, уrange, xrgnge, eqns) .
DEplot(deqns. vars, trange. Inits, xrange. yrange, eqns)
Здесь deqns — список или множество, содержащее систему дифференциальных уравнений первого порядка или одиночное уравнение любого порядка; vars — зависимая переменная или список либо множество зависимых переменных; trange — область изменения независимой переменной t; Inits — начальные условия для решения; yrange — область изменения для первой зависимой переменной, xrange — область изменения для второй зависимой переменной; eqns — опция, записываемая в виде keyword-value. Замена имен переменных другими в данном случае недопустима.
Эта функция обеспечивает численное решение дифференциальных уравнений или их систем при одной независимой переменной t и строит графики решения. Для автономных систем эти графики строятся в виде векторного поля направлений, а для неавтономных систем — только в виде кривых решения. По умолчанию реализуется метод Рунге—Кутта 4-го порядка, что соответствует опции methodiclassical[rk4]. С функцией DEplot могут использоваться следующие параметры:
- arrows = type — тип стрелки векторного поля (‘SMALL’, ‘MEDIUM’, ‘LARGE’, ‘LINE’
- или ‘NONE’);
- colour, color = arrowcolour — цвет стрелок (задается 7 способами);
- dirgrid = [integer,integer] — число линий сетки (по умолчанию [20, 20]);
- iterations = integer — количество итераций, представленное целым числом;
- linесоlor, linecolor = lineinfo — цвет линии (задается 5 способами);
- method=’rk4′ — задает метод решения (‘euler’, ‘backeuler’, ‘impeuler’ или ‘rk4’);
- obsrange = TRUE.FALSE — задает (при TRUE) прерывание вычислений, если кривая решения выходит из области обзора;
- scene = [name.name] — задает имена зависимых переменных, для которых строится график;
- stepsize = h — шаг решения, по умолчанию равный abs((b-a))/20 и представленный вещественным значением.
На показано решение системы диффкренциальных уравнений
x'(t)=x(t)(1-y(t)
y'(t)= 0,3y(t)(x(t)-1),
описывающих модель Лотки—Вольтерра при заданных в документе изменениях t, x(t) и y(t). Решение представлено в виде векторного поля стрелки которого являются касательными к кривым решения (сами эти кривые не строятся). Обратите внимание на функциональную закраску стрелок векторного поля, делающую решение особенно наглядным (правда, лишь на экране цветного дисплея, а не на страницах книги).
Еще интересней вариант графиков, представленный. Здесь помимо векторного поля несколько иного стиля построены фазовые портреты решения с использованием функциональной закраски их линий. Фазовые портреты построены для двух наборов начальных условий:
x(0) = y(0) = 1,2 и x(0) = 1 и у(0)=0,7.