Previous: Введение в пакет dynamics, Up: Пакет dynamics [Contents][Index]
[[
x1, y1]
...[
xm, ym]]
, [
x0, y0]
, b, n, ..., options, ...);Реализует так называемую игру хаоса: сначала изображается начальная точка (x0,
y0), далее одна из m точек
[
x1, y1]
...[
xm, ym]
выбирается произвольным образом. Следующая точка изображается на отрезке,
соединяющем предыдущую точку со случайно выбранной, на расстоянии от случайной точки
равном длине этого отрезка, умноженной на b
Процедура повторяется n раз.
Изображает n+1 точек на 2-мерном графе, где горизонтальные координаты точек есть 0, 1, 2, ..., n, а вертикальные координаты есть соответствующие значения последовательности y(n), определенной рекуррентным соотношением
y(n+1) = F(y(n))
С начальным значением y(0) равным y0. F должно быть выражением, которое зависит только от одной переменной (в примере, оно зависит от y, но может быть использована только одна переменная), y0 должно быть вещественным числом, а n должно быть положительным целым.
[
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, которые должны быть явно объявлены в списке.
[
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.
Создает графический файл с изображением фрактала Джулия для комплексного числа (x + i y). Параметры x и y должны быть вещественными. Файл в графическом формате XPM создается в текущей директории пользователя. Работа программы занимает несколько секунд, а по окончании вычислений она печатает имя созданного файла.
Точкам, которые не принадлежат фракталу Джулия, присваиваются разные цвета в соответствии с числом итераций, необходимых последовательности, начинающейся в точке, чтобы выити из круга сходимости радиуса 2. Максимальное число итераций определяется опцией levels. Если после этого числа итераций, последовательность все еще находится в круге сходимости, то точка будет изображена цветом, определяемым опцией color.
Все цвета, используемые для изображения точек, не принадлежащих фракталу Джулия, имеют одинаковые saturation и value, но различные углю оттенков, равномерно распределенные в интервале от hue до (hue + huerange).
options – набор необязательных опций. Список допустимых опций приведен в разделе ниже.
Создает графический файл с изображением фрактала Мандельброта. Файл в графическом формате XPM создается в текущей директории пользователя. Работа программы занимает несколько секунд, а по окончании вычислений она печатает имя созданного файла.
Точкам, которые не принадлежат фракталу Джулия, присваиваются разные цвета в соответствии с числом итераций, необходимых последовательности, начинающейся в точке, чтобы выити из круга сходимости радиуса 2. Максимальное число итераций определяется опцией levels. Если после этого числа итераций, последовательность все еще находится в круге сходимости, то точка будет изображена цветом, определяемым опцией color.
Все цвета, используемые для изображения точек, не принадлежащих фракталу Джулия, имеют одинаковые saturation и value, но различные углы оттенков, равномерно распределенные в интервале от hue до (hue + huerange).
options – набор необязательных опций. Список допустимых опций приведен в разделе ниже.
Изображает диаграмму траекторий семейства одномерных дискретных динамических систем с одним параметром x. Такой тип диаграмм используется при изучении бифуркации одномерных дискретных систем.
Функция F(y) определяет последовательность с начальным значением y0,
также как в случае функции evolution
, но в данном случае функция
еще зависит от параметра x, принимающего значения в интервале от
x0 до xf с шагом xstep.
Каждое значение параметра x изображается на горизонтальной оси.
На вертикальной оси изображаются n2 значений последовательности
y(n1+1),..., y(n1+n2+1), полученных поле n1
начальных итераций.
Первая форма численно решает одно обычное дифференциальное уравнение первого порядка, а вторая форма решает систему 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 элементами: значение зависимой переменной с последующими значениями зависимых переменных в соответствующей точке.
Строит лестничную диаграмму для последовательности, заданной рекуррентным соотношением
y(n+1) = F(y(n))
Интерпретация и допустимые значения параметров аналогичны таковым для команды evolution
.
Лестничная диаграмма состоит из графика функции F(y) вместе с прямой G(y) =
y.
Из точки (y0, y0) на этой прямой строится вертикальный отрезок
до переcечения с функцией F. Из этой точки строится горизонтальный отрезок до
точки пересечения с прямой в точке (y1, y1).
Процедура повторяется n раз до достижения точки (yn, yn).
Опции
Каждая опция есть список из двух или более элементов. Первый элемент – имя опции, остальные – аргументы опции.
Допустимые опции функций evolution
, evolution2d
,
staircase
, orbits
, ifs
и chaosgame
те же самые, что
у функции plot2d
. Функция orbits
допускает дополнительную опцию pixels, которая задает максимальное
число точек по вертикали.
Следующие опции допускаются функциями 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]