Maxima Manual: Функции и переменные пакета dynamics

Previous: Введение в пакет dynamics, Up: Пакет dynamics [Contents][Index]

### 47.2 Функции и переменные пакета dynamics

Функция: chaosgame (`[[`x1, y1`]`...`[`xm, ym`]]`, `[`x0, y0`]`, b, n, ..., options, ...);

  Реализует так называемую игру хаоса: сначала изображается начальная точка (x0, y0), далее одна из m точек `[`x1, y1`]`...`[`xm, ym`]` выбирается произвольным образом. Следующая точка изображается на отрезке, соединяющем предыдущую точку со случайно выбранной, на расстоянии от случайной точки равном длине этого отрезка, умноженной на b Процедура повторяется n раз.

  Категории:Пакет dynamics ·Графика ·

Функция: evolution (F, y0, n, ..., options, ...);

  Изображает n+1 точек на 2-мерном графе, где горизонтальные координаты точек есть 0, 1, 2, ..., n, а вертикальные координаты есть соответствующие значения последовательности y(n), определенной рекуррентным соотношением

              y(n+1) = F(y(n))

  С начальным значением y(0) равным y0. F должно быть выражением, которое зависит только от одной переменной (в примере, оно зависит от y, но может быть использована только одна переменная), y0 должно быть вещественным числом, а n должно быть положительным целым.

  Категории:Пакет dynamics ·Графика ·

Функция: evolution2d (`[`F, G`]`, `[`u, v`]`, `[`u0, y0`]`, n, ..., options, ...);

  Изображает на двумерном графике первые n+1 точек последовательности, определяемой двумерной дискретной динамической системой с рекуррентными соотношениями

              u(n+1) = F(u(n), v(n))    v(n+1) = G(u(n), v(n))

  С начальными значениями u0 и v0. Выражения F и G должны зависеть только от двух переменных u и v, которые должны быть явно объявлены в списке.

  Категории:Пакет dynamics ·Графика ·

Функция: ifs (`[`r1, ..., rm`]`, `[`A1, ..., Am`]`, `[[`x1, y1`]`, ..., `[`xm, ym`]]`, `[`x0, y0`]`, n, ..., options, ...);

  Реализует метод системы повторяющихся функций (Iterated Function System). Этот метод аналогичен игре хаоса, описанной в функции `chaosgame`, но вместо сжатия отрезка от текущей точки до случайно выбранной, две компоненты данного отрезка умножаются на 2х2 матрицу Ai, которая соответствует случайно выбранной точке.

  Случайный выбор m точек притяжения может быть осуществлен с вероятностью, определенной весами r1,...,rm. Веса могут быть заданы в кумулятивной форме, например, если есть 3 точки с вероятностями 0.2, 0.5 и 0.3, то веса r1, r2 и r3 могут быть 2, 7 и 10.

  Категории:Пакет dynamics ·Графика ·

Функция: julia (x, y, ...options...)

  Создает графический файл с изображением фрактала Джулия для комплексного числа (x + i y). Параметры x и y должны быть вещественными. Файл в графическом формате XPM создается в текущей директории пользователя. Работа программы занимает несколько секунд, а по окончании вычислений она печатает имя созданного файла.

  Точкам, которые не принадлежат фракталу Джулия, присваиваются разные цвета в соответствии с числом итераций, необходимых последовательности, начинающейся в точке, чтобы выити из круга сходимости радиуса 2. Максимальное число итераций определяется опцией levels. Если после этого числа итераций, последовательность все еще находится в круге сходимости, то точка будет изображена цветом, определяемым опцией color.

  Все цвета, используемые для изображения точек, не принадлежащих фракталу Джулия, имеют одинаковые saturation и value, но различные углю оттенков, равномерно распределенные в интервале от hue до (hue + huerange).

  options – набор необязательных опций. Список допустимых опций приведен в разделе ниже.

  Категории:Пакет dynamics ·Графика ·

Функция: mandelbrot (options)

  Создает графический файл с изображением фрактала Мандельброта. Файл в графическом формате XPM создается в текущей директории пользователя. Работа программы занимает несколько секунд, а по окончании вычислений она печатает имя созданного файла.

  Точкам, которые не принадлежат фракталу Джулия, присваиваются разные цвета в соответствии с числом итераций, необходимых последовательности, начинающейся в точке, чтобы выити из круга сходимости радиуса 2. Максимальное число итераций определяется опцией levels. Если после этого числа итераций, последовательность все еще находится в круге сходимости, то точка будет изображена цветом, определяемым опцией color.

  Все цвета, используемые для изображения точек, не принадлежащих фракталу Джулия, имеют одинаковые saturation и value, но различные углы оттенков, равномерно распределенные в интервале от hue до (hue + huerange).

  options – набор необязательных опций. Список допустимых опций приведен в разделе ниже.

  Категории:Пакет dynamics ·Графика ·

Функция: orbits (F, y0, n1, n2, [x, x0, xf, xstep], ...options...);

  Изображает диаграмму траекторий семейства одномерных дискретных динамических систем с одним параметром x. Такой тип диаграмм используется при изучении бифуркации одномерных дискретных систем.

  Функция F(y) определяет последовательность с начальным значением y0, также как в случае функции `evolution`, но в данном случае функция еще зависит от параметра x, принимающего значения в интервале от x0 до xf с шагом xstep. Каждое значение параметра x изображается на горизонтальной оси. На вертикальной оси изображаются n2 значений последовательности y(n1+1),..., y(n1+n2+1), полученных поле n1 начальных итераций.

  Категории:Пакет dynamics ·Графика ·

Функция: rk (ODE, var, initial, domain)
Функция: rk ([ODE1,...,ODEm], [v1,...,vm], [init1,...,initm], domain)

  Первая форма численно решает одно обычное дифференциальное уравнение первого порядка, а вторая форма решает систему m подобных уравнений, с использованием метода Рунге-Кутта 4-го порядка. var – зависимая переменная. ODE – должно быть выражением, которое зависит только от независимой и зависимой переменных и определяет производную зависимой переменной по независимой.

  Независимая переменная задается параметром `domain`, который должен быть списком четырех элементов. Например:

      [t, 0, 10, 0.1]

  первый элемент списка есть независимая переменная, второй и третий элементы есть начальное и конечное значения этой переменной, и последний элемент задает шаг для данного интервала.

  Если предстоит решить m уравнений, то должно быть m зависимых переменных v1, v2, ..., vm. Начальные значения для этих переменных будут init1, init2, ..., initm. При этом все равно остается только одна зависимая переменная, задаваемая `domain`, как в предыдущем случае. ODE1, ..., ODEm – выражения, определяющие производную каждой из зависимых переменных по независимой. Эти выражения могут зависеть только от зависимых переменных и независимой переменной. Важно задать производные ODE1, ..., ODEm в списке точно в том порядке, что и зависимые переменные. Т.е. третий элемент списка будет интерпретирован как производная третьей зависимой переменной.

  Программа пытается проинтегрировать уравнения от начального значения независимой переменной до конечного значения с использованием постоянного приращения. Если на каком-либо шаге значение одной из зависимых переменных становится слишком большим по абсолютной величине, то интегрирование прекращается. Результат является списком с числом элементов равным числу итераций. Каждый элемент сам является списком с m+1 элементами: значение зависимой переменной с последующими значениями зависимых переменных в соответствующей точке.

  Категории:Пакет dynamics ·Дифференциальные уравнения ·Численные методы ·

Функция: staircase (F, y0, n, ...options...);

  Строит лестничную диаграмму для последовательности, заданной рекуррентным соотношением

              y(n+1) = F(y(n))

  Интерпретация и допустимые значения параметров аналогичны таковым для команды `evolution`. Лестничная диаграмма состоит из графика функции F(y) вместе с прямой G(y) `=` y. Из точки (y0, y0) на этой прямой строится вертикальный отрезок до переcечения с функцией F. Из этой точки строится горизонтальный отрезок до точки пересечения с прямой в точке (y1, y1). Процедура повторяется n раз до достижения точки (yn, yn).

  Категории:Пакет dynamics ·Графика ·

Опции

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

Допустимые опции функций `evolution`, `evolution2d`, `staircase`, `orbits`, `ifs` и `chaosgame` те же самые, что у функции `plot2d`. Функция `orbits` допускает дополнительную опцию pixels, которая задает максимальное число точек по вертикали.

Следующие опции допускаются функциями `julia` и `mandelbrot`:

- size имеет один или два аргумента. Если задан только один аргумент, то ширина и высота создаваемого графика в пикселях будут равны этому значению. Если заданы два агрумента, то они определяют ширину и высоту соответственно. Значение по умолчанию равно 400 для ширины и для высоты. Если два параметра не равны, то график будет искаженным.
- levels определяет максимальное число итераций, которое также равно числу цветов, используемых для раскраски не принадлежащих фракталу точек. Значение по умолчанию равно 12. Большее значение приводят к большему времени вычисления.
- huerange определяет диапазон углов оттенков, используемых для раскраски не принадлежащих фракталу точек. Значение по умолчанию 360, что означает – весь диапазон оттенков. Значения больше 360 означает повторяющиеся оттенки, а отрицательное значение позволяет уменьшать углы оттенков с увеличением числа итераций.
- hue задает оттенок в градусах для первого цвета, используемого для раскраски не принадлежащих фракталу точек. Значение по умолчанию 300, что соответствует цвету маджента. Значения для некоторый других стандартных цветов: 0 – красный, 45 – оранжевый, 60 – желтый, 120 – зеленый, 180 – циан и 240 – синий. См. также опцию huerange.
- saturation задает значение насыщенности цвета для не принадлежащих фракталу точек. Оно должно быть в пределах от 0 до 1. Значение по умолчанию 0.46.
- value задает яркость цвета для не принадлежащих фракталу точек. Оно должно быть в пределах от 0 до 1. Чем больше значение, тем ярче цвет.
- color должна иметь три параметра, задающих оттенок, насыщенность и яркость. Значение по умолчанию 0 для всех трех параметров, что соответствует черному цвету. Для объяснения допустимых значений см. опции hue, saturation и value.
- center должна иметь два вещественных параметра, задающих на комплексной плоскости точку центра изображаемой области. Значение по умолчанию 0 для обеих координат (начало координат).
- radius задает радиус наибольшего круга внутри изображаемой квадратной области. Значение по умолчанию 2.
- filename задает имя файла, в котором будет сохранен результирующий график. Расширение .xpm добавляется к имени файла. Если файл уже существует, то он будет замене на новый. Значение по умолчанию есть julia для фрактала Джулия и mandelbrot для фрактала Мандельброта.

Примеры

Графическое представление лестничной диаграммы для последовательности: 2, cos(2), cos(cos(2)),...

    (%i1) load("dynamics")$

    (%i2) evolution(cos(y), 2, 11);

    (%i3) staircase(cos(y), 1, 11, [y, 0, 1.2]);

Если ваша система медленна, следует уменьшить число итераций в следующих примерах. Если точки кажутся слишком маленькими на мониторе, то можно попробовать другой стиль, например `[`style, `[`points, 0.8 `]]`.

Диаграмма траекторий для квадратичного отображения с параметром a.

            x(n+1) = a + x(n)^2

    (%i4) orbits(x^2+a, 0, 50, 200, [a, -2, 0.25], [style, dots]);

Для того, чтобы увеличить область вблизи нижней бифуркации около x `=` -1.25 используем:

    (%i5) orbits(x+y^2, 0, 100, 400, [a,-1,-1.53], [x,-1.6,-0.8],
                 [nticks, 400], [style,dots]);

Эволюция двумерной системы, приводящая к фракталу:

    (%i6) f: 0.6*x*(1+2*x)+0.8*y*(x-1)-y^2-0.9$

    (%i7) g: 0.1*x*(1-6*x+4*y)+0.1*y*(1+9*y)-0.4$

    (%i8) evolution2d([f,g], [x,y], [-0.5,0], 50000, [style,dots]);

Увеличение небольшой области фрактала:

    (%i9) evolution2d([f,g], [x,y], [-0.5,0], 300000, [x,-0.8,-0.6],
                      [y,-0.4,-0.2], [style, dots]);

График треугольника Серпинского, полученный как игра хаоса:

    (%i9) chaosgame([[0, 0], [1, 0], [0.5, sqrt(3)/2]], [0.1, 0.1], 1/2,
                     30000, [style, dots]);

Фрактал папоротник (Barnsley’s fern) полученный при помощи системы повторяющихся функций (Iterated Function System):

    (%i10) a1: matrix([0.85,0.04],[-0.04,0.85])$

    (%i11) a2: matrix([0.2,-0.26],[0.23,0.22])$

    (%i12) a3: matrix([-0.15,0.28],[0.26,0.24])$

    (%i13) a4: matrix([0,0],[0,0.16])$

    (%i14) p1: [0,1.6]$

    (%i15) p2: [0,1.6]$

    (%i16) p3: [0,0.44]$

    (%i17) p4: [0,0]$

    (%i18) w: [85,92,99,100]$

    (%i19) ifs(w, [a1,a2,a3,a4], [p1,p2,p3,p4], [5,0], 50000, [style,dots]);

Чтобы создать файл dynamics9.xpm с графическим изображением фрактала Мандельброта с 12 цветами, выполним:

    mandelbrot([filename,"dynamics9"])$

Для фрактала Джулия с числом (-0.55 + i 0.6):

    julia(-0.55, 0.6, [levels, 36], [center, 0, 0.6], [radius, 0.3],
          [hue, 240], [huerange, -180], [filename, "dynamics10"])$

Граф будет сохранен ф файле dynamics10.xpm и будет изображать область от -0.3 до 0.3 по оси x, и от 0.3 до 0.9 по оси y. Используется 36 цветов, начиная с синего и заканчивая желтым.

Чтобы решить дифференциальное уравнение

              dx/dt = t - x^2

с начальным значением x(t=0) = 1, в интервале t от 0 до 8 с шагом 0.1, используем команду:

    (%i20) results: rk(t-x^2,x,1,[t,0,8,0.1])$

Результат сохраняется в списке `results`.

Чтобы численно решить систему:

            dx/dt = 4-x^2-4*y^2     dy/dt = y^2-x^2+1

для t от 0 до 4, и с значениями -1.25 и 0.75 для x и y в t=0:

    (%i21) sol: rk([4-x^2-4*y^2,y^2-x^2+1],[x,y],[-1.25,0.75],[t,0,4,0.02])$

Previous: Введение в пакет dynamics, Up: Пакет dynamics [Contents][Index]