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

Встречайте: фазовые портреты (они же фазовые диаграммы). Простым языком, фазовый портрет — это то, как величины, описывающие состояние системы (a.k.a. динамические переменные), зависят друг от друга. В случае механического движения это координата и скорость, в электричестве это заряд и ток, в известной популяционной задаче это количество хищников и жертв и т.д.

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

Начнём с простого примера — малых колебаний (так же называемых гармоническими). Малые колебания встречаются почти в каждой сфере естественных наук. Для определённости, будем рассматривать колебания металлического стержня, подвешенного за один из концов (частный случай так называемого физического маятника). Можно показать, что его колебания описываются следующим дифференциальным уравнением:



Где x — угол отклонения стержня от вертикали, точка над x означает производную по времени, а коэффициент перед синусом зависит от размера и массы стержня.

Если амплитуда (размах) колебаний достаточно мала, синус можно приближенно заменить его аргументом (вы ведь помните первый замечательный предел, нет?). В таком случае, уравнение принимает следующий вид:



Это уравнение легко решается регулярными методами, но, давайте, попробуем применить к нему метод фазовых портретов. Для этого, домножим уравнение на производную и проинтегрируем его один раз по времени:



Получилось выражение, первый член которого выглядит как кинетическая энергия. Это не случайно — на самом деле мы получили именно закон сохранения энергии. Постоянная Е в правой части (полная энергия системы на единицу массы) может принимать различные значения, которые соответствуют разным начальным состояниям системы.

Введём обозначение:



Полученный нами закон сохранения превратился в уравнение кривой на плоскости (x,u):



Для разных значений Е мы получим разные кривые. Нарисуем несколько таких линий для разных значений энергии:


По горизонтальной оси отложена величина x, по вертикальной — u

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

По графику видно, что значения скорости и координаты меняются циклическим образом, то есть периодически повторяются. Отсюда можно сделать вывод, что описываемая рассмотренным уравнением система будет совершать колебания. Бинго! Именно так ведёт себя маятник, и если решить уравнение, решение будет иметь вид периодических функций (а именно — комбинации синуса и косинуса).

Следует однако помнить, что замена синуса его аргументом оправдана лишь для малых углов отклонения (от 10 градусов и меньше), поэтому мы не можем доверять тем траекториям, которые выходят за границы области, ограниченной жирными пунктирными линиями, то есть из четырех приведенных траекторий лишь оранжевая достоверно отображает реальность. Кроме того, поскольку x это угол, то его значения, соответствующие 180 и -180 градусам описывают одно и то же положение стержня, то есть правая и левая пунктирные линии (тонкие) на графике это на самом деле одна и та же линия.

Теперь, поскольку нам понятна суть, можно перейти к чему-то посложнее. Выше мы очень сильно упростили уравнение и при этом ограничили себя только малыми колебаниями. Математик бы сказал, что мы линеаризовали уравнение и пренебрегли нелинейными эффектами. Так давайте включим в рассмотрение нелинейность. Вернёмся к самому первому уравнению — с синусом. Если мы повторим с ним то, что проделали с линейным уравнением, мы получим следующий закон сохранения:



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


По горизонтальной оси отложена величина x, по вертикальной — u

Как видите, процессы происходящее в системе стали более разнообразными:

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

При больших энергиях (зеленая траектория) колебаний уже нет, вместо этого мы получаем вращательное движение с переменной скоростью. И действительно, если достаточно сильно «толкнуть» стержень, он будет вращаться, замедляясь при подъёме и ускоряясь при спуске.

При определенном промежуточном значении энергии получается особый набор траекторий, которые отделяют друг от друга области соответствующие разным типам движения и поэтому называются сепаратрисами. И да, значение энергии для красной кривой было выбрано мной именно так, чтобы в нелинейном случае получилась сепаратриса. Каждая ветвь сепаратрисы это траектория, соответствующая особому типу движения. Посмотрим на диаграмму: движение начинается с очень маленькой скоростью от одного крайнего положения стержня, при приближении к положению равновесия скорость растёт, а после изображающая точка все более замедляясь уходит к крайнему положению, где и останавливается. Это соответствует тому, что мы поднимаем стержень вертикально вверх и отпускаем его, проносясь через положение равновесия он поднимается к верхней точке с другой стороны и останавливается.

А теперь давайте посмотрим насколько близки к истине наши выводы, сделанные на основе фазовых портретов. Перед вами график решения линейного уравнения:


По горизонтальной оси отложено время, по вертикальной — x

… и нелинейного:


По горизонтальной оси отложено время, по вертикальной — x

Цветовая маркировка на этих графиках такая же, как и на фазовых портретах. Судить о том, насколько верные выводы были сделаны на основе фазовых портретов я предоставлю вам, дорогие читатели. Обращу ваше внимание только на один момент — колебания в линейном случае происходят синхронно — с одной и той же частотой. В нелинейном же случае, частота колебания с большей амплитудой (синяя линия) оказывается меньше, чем у колебания с малой амплитудой (оранжевая линия). Это служит еще одним подтверждением того, что нелинейные колебания не являются гармоническими.

Ну и напоследок: это всего лишь поверхностный экскурс в метод фазовых портретов, и словосочетание «на пальцах» попало в заголовок неспроста. Те же, кто решит углубиться в перипетии данного предмета, увидят, что за фазовыми портретами скрывается намного большее.

Комментарии (16)


  1. dimview
    09.10.2015 17:09

    > Постоянная Е в левой части (полная энергия системы)

    В правой части масса никуда не потерялась? А то получается энергия в квадратных метрах на квадратную секунду.


    1. tajimura
      09.10.2015 17:18
      +2

      Прошу прощения, это «автопилот теоретика», подразумевается что масса равна единице. Ну или трактуйте Е как «удельную» энергию.

      Оффтоп: с мобильной версии нельзя комментировать и отвечать на комментарии, так и должно быть?


      1. dimview
        09.10.2015 17:30

        Спасибо, теперь всё сходится.

        Про мобильную версию не знаю, у меня глупый телефон.


    1. tajimura
      09.10.2015 17:20
      +1

      Ах да, так как x это угол, там получаются вообже квадратные радианы в квадратную секунду. Но с точностью до (постоянного) коэффициента это всё-таки энергия. Для экспериментатора это великая ересь, но у теоретиков такое встречается часто.


    1. tajimura
      09.10.2015 20:52

      >Постоянная Е в левой части

      Позор на мою голову, право и лево перепутал.


  1. leshabirukov
    09.10.2015 17:34

    Для построения какие методы и инструменты используются?


    1. tajimura
      09.10.2015 18:01

      Если вы про графики ФП, то рисовал я их в Wolfram Matematica с помощью ContourPlot, напрямую задавая уравнения. В старых версиях это делает ImplicitPlot.
      Графики x(t) рисовал тоже в Математике обычным Plot, задав в него подстановки из NDSolve.

      В седой древности (когда дипломку писал) NDSolve заменяла программа на С++ собственного изготовления, реализующая метод Рунге-Кутта (интересно было сделать самому, хотя вольфрамовская математика была уже тогда), результаты которой визуализировались GNUPlot'ом.


      1. c4boomb
        09.10.2015 19:09

        Рунге-Кутты!!!


        1. tajimura
          09.10.2015 19:17
          +2

          Не имею достаточную компетенцию чтобы спорить следует ли склонять фамилию Кутта (ну и вообще иностранные фамилии), но как минимум в учебниках у нас было «Кутта» (учебники советские), в результатах поиска Гугл есть и «Кутта» и «Кутты».

          Ну и к тому же, тогда давайте будем последовательными и потребуем «теорему Фермы».


          1. c4boomb
            09.10.2015 19:31
            +1

            «Ме?тоды Ру?нге — Ку?тты (распространено неправильное название Ме?тоды Ру?нге — Ку?тта или же Ме?тоды Ру?нге — Кутта?) » источник Вики


            1. tajimura
              09.10.2015 19:42
              +2

              Я повторюсь: в литературе употребляется «метод Рунге-Кутта» (я не говорю, что во всех книгах так, но такие книги есть, они допущены к использованию в качестве учебников, на них ссылаются). В интернете на разных ресурсах можно встретить и «Рунге-Кутта» и «Рунге-Кутты». Ну и разумеется, вас никто не принуждает говорить и писать «Кутта». Если вам удобнее «Кутты», пожалуйста, ваше право, но зачем об этом спорить и переубеждать? Java вы как произносите? Я говорю «Джава», есть куча людей, которые говорят «Ява», от этого он (язык) не превращается в Бейсик или в Фортран.


              1. c4boomb
                09.10.2015 19:56
                -2

                «Есть куча людей, которые говорят..», а есть правила Wiki Java


                1. tajimura
                  09.10.2015 20:49
                  +2

                  An island of Indonesia in the Malay Archipelago который по-русски называется Ява, и может это именно мы неправы, произнося название языка, названного в честь сорта кофе «Ява» (или «Яванский»), на что недвусмысленно намекает иконка jdk, как «Джава»?

                  Минусы не мои.

                  В любом случае, предлагаю перенести дискуссию в ПМ, как не относящуюся к теме топика.


                1. sanok
                  10.10.2015 00:59
                  +1

                  Там приведённы правила для английского языка. По крайней мере для одного из значений слова Java (индонезийский остров) правила в русском языке отличаются.

                  Что касается склонения фамилий:

                  Французские фамилии с ударным окончанием -а,-я, не склоняются: Эмилю Золя, Пьером Брока, об Александре Дюма.

                  видимо, поэтому метод Рунге-Кутты, но теорема Ферма.


  1. c4boomb
    09.10.2015 19:30

    Удалено.


  1. MaratKa
    11.10.2015 10:39

    На матлабе (украдено на просторах интернета и немного подрихтовано)

    clear all; close all; clc
    
    f = @(t,Y) [Y(1)+Y(2); 4*Y(1)-2*Y(2)];
    
    y1 = linspace(-2,2,20);
    y2 = linspace(-2,2,20);
    
    % creates two matrices one for all the x-values on the grid, and one for
    % all the y-values on the grid. Note that x and y are matrices of the same
    % size and shape, in this case 20 rows and 20 columns
    [x,y] = meshgrid(y1,y2);
    
    u = zeros(size(x));
    v = zeros(size(x));
    
    % we can use a single loop over each element to compute the derivatives at
    % each point (y1, y2)
    t=0; % we want the derivatives at each point at t=0, i.e. the starting time
    for i = 1:numel(x)
        Yprime = f(t,[x(i); y(i)]);
        u(i) = Yprime(1);
        v(i) = Yprime(2);
    end
    
    quiver(x,y,u,v,'r'); figure(gcf)
    xlabel('y_1')
    ylabel('y_2')
    axis tight equal;