Print a warning when translating subscripted functions
[maxima.git] / doc / info / ru / dynamics.texi
blob82b20a375b54890f870e2105d79d744e34b1072c
1 @c Language=Russian
2 @c Encoding=UTF-8
3 @c File=dynamics.texi 
4 @c OriginalRevision=1.15
5 @c TranslatedBy: (c) 2008-02 Vadim V. Zhytnikov <vvzhyt@gmail.com>
8 @menu
9 * Введение в пакет dynamics::
10 * Функции и переменные пакета dynamics::
11 @end menu
13 @node Введение в пакет dynamics, Функции и переменные пакета dynamics, Пакет dynamics, Пакет dynamics
14 @section Введение в пакет dynamics
16 Пакет @code{dynamics} включает несколько функций, предназначенных
17 для создания различных графических представлений дискретных
18 динамических систем и фракталов, и реализацию метода Рунге-Кутта 4-го порядка
19 для численного решения систем дифференциальных уравнений.
21 Для того, чтобы использовать функции данного пакета, его нужно сначала загрузить командой
22 @code{load("dynamics")}.
24 @b{Изменения введенные в Maxima 5.12}
26 Начиная с версии Maxima 5.12 пакет dynamics использует для построения 
27 графиков функцию @code{plot2d}. Команды, строящие графики
28 (исключая @code{julia} и @code{mandelbrot}), принимают любые опции
29 команды @code{plot2d}, включая опции выбора различных графических интерфейсов,
30 выбора стилей и цвета, и представления одной или обеих осей в логарифмической шкале.
31 Старые опции @var{domain}, @var{pointsize}, @var{xcenter}, @var{xradius},
32 @var{ycenter}, @var{yradius}, @var{xaxislabel} и @var{yaxislabel},
33 начиная с этой версии не действуют.
35 Все программы теперь принимают произвольные имена переменных, а не только @var{x}
36 и @var{y}, как в старых версиях. Обязательные параметры изменились в двух 
37 программах: @code{evolution2d} теперь требует список, называющий явным образом
38 две независимые переменные, а горизонтальный предел для @code{orbits} 
39 больше не требует указание размера шага.  Теперь предел задает
40 имя переменной, минимальное и максимальное значения. 
41 Размер шага теперь может быть изменен с помощью опции @var{nticks}.
42 @var{nticks}.
44 @opencatbox{Категории:}
45 @category{Динамические системы}
46 @category{Пакеты библиотеки share}
47 @category{Пакет dynamics}
48 @closecatbox
50 @node Функции и переменные пакета dynamics,  , Введение в пакет dynamics, Пакет dynamics
51 @section Функции и переменные пакета dynamics
53 @deffn {Функция} chaosgame (@code{[[}@var{x1}, @var{y1}@code{]}...@code{[}@var{xm}, @var{ym}@code{]]}, @code{[}@var{x0}, @var{y0}@code{]}, @var{b}, @var{n}, ..., options, ...);
55 Реализует так называемую игру хаоса: сначала изображается начальная точка (@var{x0},
56 @var{y0}), далее одна из @var{m} точек
57 @code{[}@var{x1}, @var{y1}@code{]}...@code{[}@var{xm}, @var{ym}@code{]}
58 выбирается произвольным образом. Следующая точка изображается на отрезке,
59 соединяющем предыдущую точку со случайно выбранной, на расстоянии от случайной точки
60 равном длине этого отрезка, умноженной на @var{b}
61 Процедура повторяется @var{n} раз.
63 @opencatbox{Категории:}
64 @category{Пакет dynamics}
65 @category{Графика}
66 @closecatbox
68 @end deffn
70 @deffn {Функция} evolution (@var{F}, @var{y0}, @var{n}, ..., options, ...);
72 Изображает @var{n+1} точек на 2-мерном графе, где горизонтальные
73 координаты точек есть 0, 1, 2, ..., @var{n}, а вертикальные 
74 координаты есть соответствующие значения последовательности @var{y(n)},
75 определенной рекуррентным соотношением
76 @ifnottex
77 @example
78         y(n+1) = F(y(n))
79 @end example
80 @end ifnottex
81 @tex
82 $$y_{n+1} = F(y_n)$$
83 @end tex
85 С начальным значением @var{y(0)} равным @var{y0}. @var{F} должно быть
86 выражением, которое зависит только от одной переменной (в примере,
87 оно зависит от @var{y}, но может быть использована только одна переменная),
88 @var{y0} должно быть вещественным числом, а @var{n} должно быть положительным целым.
90 @opencatbox{Категории:}
91 @category{Пакет dynamics}
92 @category{Графика}
93 @closecatbox
95 @end deffn
97 @deffn {Функция} evolution2d (@code{[}@var{F}, @var{G}@code{]}, @code{[}@var{u}, @var{v}@code{]}, @code{[}@var{u0}, @var{y0}@code{]}, @var{n}, ..., options, ...);
99 Изображает на двумерном графике первые @var{n+1} точек последовательности,
100 определяемой двумерной дискретной динамической системой с 
101 рекуррентными соотношениями
102 @ifnottex
103 @example
104         u(n+1) = F(u(n), v(n))    v(n+1) = G(u(n), v(n))
105 @end example
106 @end ifnottex
107 @tex
108 $$\cases{u_{n+1} = F(u_n, v_n) &\cr v_{n+1} = G(u_n, v_n)}$$
109 @end tex
111 С начальными значениями @var{u0} и @var{v0}. Выражения @var{F} и @var{G} должны 
112 зависеть только от двух переменных @var{u} и @var{v}, 
113 которые должны быть явно объявлены в списке. 
115 @opencatbox{Категории:}
116 @category{Пакет dynamics}
117 @category{Графика}
118 @closecatbox
120 @end deffn
122 @deffn {Функция} ifs (@code{[}@var{r1}, ..., @var{rm}@code{]}, @code{[}@var{A1}, ..., @var{Am}@code{]}, @code{[[}@var{x1}, @var{y1}@code{]}, ..., @code{[}@var{xm}, @var{ym}@code{]]}, @code{[}@var{x0}, @var{y0}@code{]}, @var{n}, ..., options, ...);
124 Реализует метод системы повторяющихся функций (Iterated Function System). 
125 Этот метод аналогичен игре хаоса, описанной в функции @code{chaosgame}, 
126 но вместо сжатия отрезка от текущей точки до случайно выбранной, 
127 две компоненты данного отрезка умножаются на 2х2
128 матрицу @var{Ai}, которая соответствует случайно выбранной точке.
130 Случайный выбор @var{m} точек притяжения может быть осуществлен 
131 с вероятностью, определенной весами
132 @var{r1},...,@var{rm}. Веса могут быть заданы в кумулятивной форме,
133 например, если есть 3 точки с вероятностями 0.2, 0.5 и 0.3, 
134 то веса @var{r1}, @var{r2} и @var{r3} могут быть 2, 7 и 10.
136 @opencatbox{Категории:}
137 @category{Пакет dynamics}
138 @category{Графика}
139 @closecatbox
141 @end deffn
143 @deffn {Функция} julia (@var{x}, @var{y}, ...@var{options}...)
145 Создает графический файл с изображением фрактала Джулия для комплексного числа (@var{x} + i @var{y}). 
146 Параметры @var{x} и @var{y} должны быть вещественными.
147 Файл в графическом формате XPM создается в текущей директории пользователя. 
148 Работа программы занимает несколько секунд, а по окончании вычислений она печатает 
149 имя созданного файла.
151 Точкам, которые не принадлежат фракталу Джулия, присваиваются разные цвета
152 в соответствии с числом итераций, необходимых последовательности,
153 начинающейся в точке, чтобы выити из круга сходимости радиуса 2.
154 Максимальное число итераций определяется опцией @var{levels}.
155 Если после этого числа итераций, последовательность все еще
156 находится в круге сходимости, то точка будет изображена 
157 цветом, определяемым опцией @var{color}.
159 Все цвета, используемые для изображения точек, не принадлежащих
160 фракталу Джулия, имеют одинаковые @var{saturation} и @var{value}, 
161 но различные углю оттенков, равномерно распределенные 
162 в интервале от @var{hue} до (@var{hue} + @var{huerange}).
164 @var{options} -- набор необязательных опций. Список допустимых опций приведен
165 в разделе ниже.
167 @opencatbox{Категории:}
168 @category{Пакет dynamics}
169 @category{Графика}
170 @closecatbox
172 @end deffn
174 @deffn {Функция} mandelbrot (@var{options})
176 Создает графический файл с изображением фрактала Мандельброта. 
177 Файл в графическом формате XPM создается в текущей директории пользователя. 
178 Работа программы занимает несколько секунд, а по окончании вычислений она печатает 
179 имя созданного файла.
181 Точкам, которые не принадлежат фракталу Джулия, присваиваются разные цвета
182 в соответствии с числом итераций, необходимых последовательности,
183 начинающейся в точке, чтобы выити из круга сходимости радиуса 2.
184 Максимальное число итераций определяется опцией @var{levels}.
185 Если после этого числа итераций, последовательность все еще
186 находится в круге сходимости, то точка будет изображена 
187 цветом, определяемым опцией @var{color}.
189 Все цвета, используемые для изображения точек, не принадлежащих
190 фракталу Джулия, имеют одинаковые @var{saturation} и @var{value}, 
191 но различные углы оттенков, равномерно распределенные 
192 в интервале от @var{hue} до (@var{hue} + @var{huerange}).
194 @var{options} -- набор необязательных опций. Список допустимых опций приведен
195 в разделе ниже.
197 @opencatbox{Категории:}
198 @category{Пакет dynamics}
199 @category{Графика}
200 @closecatbox
202 @end deffn
204 @deffn {Функция} orbits (@var{F}, @var{y0}, @var{n1}, @var{n2}, [@var{x}, @var{x0}, @var{xf}, @var{xstep}], ...options...);
206 Изображает диаграмму траекторий семейства одномерных
207 дискретных динамических систем с одним параметром @var{x}.
208 Такой тип диаграмм используется при изучении бифуркации одномерных
209 дискретных систем.
211 Функция @var{F(y)} определяет последовательность с начальным значением @var{y0}, 
212 также как в случае функции @code{evolution}, но в данном случае функция
213 еще зависит от параметра @var{x}, принимающего значения в интервале от
214 @var{x0} до @var{xf} с шагом @var{xstep}. 
215 Каждое значение параметра @var{x} изображается на горизонтальной оси.
216 На вертикальной оси изображаются @var{n2} значений последовательности
217 @var{y(n1+1)},..., @var{y(n1+n2+1)}, полученных поле @var{n1} 
218 начальных итераций.
220 @opencatbox{Категории:}
221 @category{Пакет dynamics}
222 @category{Графика}
223 @closecatbox
225 @end deffn
227 @deffn {Функция} rk (@var{ODE}, @var{var}, @var{initial}, @var{domain})
228 @deffnx {Функция} rk ([@var{ODE1},...,@var{ODEm}], [@var{v1},...,@var{vm}], [@var{init1},...,@var{initm}], @var{domain})
230 Первая форма численно решает одно обычное дифференциальное 
231 уравнение первого порядка, а вторая форма решает систему m 
232 подобных уравнений, с использованием метода Рунге-Кутта 4-го порядка.
233 @var{var} -- зависимая переменная. @var{ODE} -- должно быть выражением, которое 
234 зависит только от независимой и зависимой переменных и определяет 
235 производную зависимой переменной по независимой.
237 Независимая переменная задается параметром @code{domain}, который должен быть списком 
238 четырех элементов. Например:
239 @example
240 [t, 0, 10, 0.1]
241 @end example
242 первый элемент списка есть независимая переменная, 
243 второй и третий элементы есть начальное и конечное значения этой переменной,
244 и последний элемент задает шаг для данного интервала.
246 Если предстоит решить @var{m} уравнений, то должно быть @var{m}
247 зависимых переменных @var{v1}, @var{v2}, ..., @var{vm}. 
248 Начальные значения для этих переменных будут @var{init1}, @var{init2}, ..., @var{initm}.
249 При этом все равно остается только одна зависимая переменная, задаваемая @code{domain},
250 как в предыдущем случае. 
251 @var{ODE1}, ..., @var{ODEm} -- выражения, определяющие производную каждой
252 из зависимых переменных по независимой.
253 Эти выражения могут зависеть только от зависимых переменных и независимой переменной.
254 Важно задать производные  @var{ODE1}, ..., @var{ODEm} в списке точно в том порядке,
255 что и зависимые переменные. Т.е. третий элемент списка будет
256 интерпретирован как производная третьей зависимой переменной.
258 Программа пытается проинтегрировать уравнения от начального значения 
259 независимой переменной до конечного значения с использованием
260 постоянного приращения. 
261 Если на каком-либо шаге значение одной из зависимых переменных
262 становится слишком большим по абсолютной величине, то интегрирование прекращается.
263 Результат является списком с числом элементов равным числу итераций.
264 Каждый элемент сам является списком с @var{m}+1 элементами: 
265 значение зависимой переменной с последующими значениями зависимых переменных
266 в соответствующей точке.
268 @opencatbox{Категории:}
269 @category{Пакет dynamics}
270 @category{Дифференциальные уравнения}
271 @category{Численные методы}
272 @closecatbox
274 @end deffn
276 @deffn {Функция} staircase (@var{F}, @var{y0}, @var{n}, ...options...);
278 Строит лестничную диаграмму для последовательности,
279 заданной рекуррентным соотношением
280 @ifnottex
281 @example
282         y(n+1) = F(y(n))
283 @end example
284 @end ifnottex
285 @tex
286 $$y_{n+1} = F(y_n)$$
287 @end tex
289 Интерпретация и допустимые значения параметров аналогичны таковым для команды @code{evolution}. 
290 Лестничная диаграмма состоит из графика функции @var{F(y)} вместе с прямой @var{G(y)} @code{=} @var{y}. 
291 Из точки (@var{y0}, @var{y0}) на этой прямой строится вертикальный отрезок
292 до переcечения с функцией @var{F}. Из этой точки строится горизонтальный отрезок до
293 точки пересечения с прямой в точке (@var{y1}, @var{y1}).
294 Процедура повторяется @var{n} раз до достижения точки (@var{yn}, @var{yn}).
296 @opencatbox{Категории:}
297 @category{Пакет dynamics}
298 @category{Графика}
299 @closecatbox
301 @end deffn
303 @b{Опции}
305 Каждая опция есть список из двух или более элементов. Первый элемент -- имя опции,
306 остальные -- аргументы опции.
308 Допустимые опции функций @code{evolution}, @code{evolution2d},
309 @code{staircase}, @code{orbits}, @code{ifs} и @code{chaosgame} те же самые, что 
310 у функции @code{plot2d}. Функция @code{orbits} 
311 допускает дополнительную опцию @var{pixels}, которая задает максимальное
312 число точек по вертикали.
314 Следующие опции допускаются функциями @code{julia} и @code{mandelbrot}:
316 @itemize @bullet
317 @item
318 @dfn{size} имеет один или два аргумента. Если задан только один аргумент,
319 то ширина и высота создаваемого графика в пикселях будут равны этому значению.
320 Если заданы два агрумента, то они определяют ширину и высоту соответственно.
321 Значение по умолчанию равно 400 для ширины и для высоты.
322 Если два параметра не равны, то график будет искаженным.
324 @item
325 @dfn{levels} определяет максимальное число итераций, которое также 
326 равно числу цветов, используемых для раскраски не принадлежащих фракталу точек.
327 Значение по умолчанию равно 12. Большее значение приводят к большему времени
328 вычисления.
330 @item
331 @dfn{huerange} определяет диапазон углов оттенков, используемых
332 для раскраски не принадлежащих фракталу точек.
333 Значение по умолчанию 360, что означает -- весь диапазон оттенков.
334 Значения больше 360 означает повторяющиеся оттенки,
335 а отрицательное значение позволяет уменьшать углы оттенков с
336 увеличением числа итераций.
338 @item
339 @dfn{hue} задает оттенок в градусах для первого цвета,
340 используемого для раскраски не принадлежащих фракталу точек.
341 Значение по умолчанию 300, что соответствует цвету маджента.
342 Значения для некоторый других стандартных цветов:
343 0 -- красный, 45 -- оранжевый, 60 -- желтый, 120 -- зеленый, 180 -- циан и
344 240 -- синий. См. также опцию @var{huerange}.
346 @item
347 @dfn{saturation} задает значение насыщенности цвета для не принадлежащих
348 фракталу точек. Оно должно быть в пределах от 0 до 1. 
349 Значение по умолчанию 0.46.
351 @item
352 @dfn{value} задает яркость цвета для не принадлежащих
353 фракталу точек. Оно должно быть в пределах от 0 до 1. 
354 Чем больше значение, тем ярче цвет.
356 @item
357 @dfn{color} должна иметь три параметра, задающих оттенок,
358 насыщенность и яркость. Значение по умолчанию 0 для всех трех параметров,
359 что соответствует черному цвету.
360 Для объяснения допустимых значений см. опции 
361 @var{hue}, @var{saturation} и @var{value}.
363 @item
364 @dfn{center} должна иметь два вещественных параметра, задающих
365 на комплексной плоскости точку центра изображаемой области.
366 Значение по умолчанию 0 для обеих координат (начало координат).
368 @item
369 @dfn{radius} задает радиус наибольшего круга внутри изображаемой квадратной области.
370 Значение по умолчанию 2.
372 @item
373 @dfn{filename} задает имя файла, в котором будет сохранен результирующий график. 
374 Расширение .xpm добавляется к имени файла. Если файл уже существует,
375 то он будет замене на новый.
376 Значение по умолчанию есть julia для фрактала Джулия и mandelbrot
377 для фрактала Мандельброта.
379 @end itemize
381 @b{Примеры}
383 Графическое представление лестничной диаграммы для последовательности:
384 2, cos(2), cos(cos(2)),...
386 @example
387 (%i1) load("dynamics")$
389 (%i2) evolution(cos(y), 2, 11);
391 (%i3) staircase(cos(y), 1, 11, [y, 0, 1.2]);
392 @end example
394 @ifnotinfo
395 @image{@value{figuresfolder}/dynamics1,8cm}
396 @image{@value{figuresfolder}/dynamics2,8cm}
397 @end ifnotinfo
399 Если ваша система медленна, следует уменьшить число итераций в следующих примерах. 
400 Если точки кажутся слишком маленькими на мониторе, то можно 
401 попробовать другой стиль, например 
402 @code{[}@var{style}, @code{[}@var{points}, 0.8 @code{]]}.
404 Диаграмма траекторий для квадратичного отображения с параметром @var{a}.
405 @ifnottex
406 @example
407         x(n+1) = a + x(n)^2
408 @end example
409 @end ifnottex
410 @tex
411 $$x_{n+1} = a + x_n^2$$
412 @end tex
414 @example
415 (%i4) orbits(x^2+a, 0, 50, 200, [a, -2, 0.25], [style, dots]);
416 @end example
418 @ifnotinfo
419 @image{@value{figuresfolder}/dynamics3,8cm}
420 @end ifnotinfo
422 Для того, чтобы увеличить область вблизи нижней бифуркации около x @code{=} -1.25 используем:
423 @example
424 (%i5) orbits(x+y^2, 0, 100, 400, [a,-1,-1.53], [x,-1.6,-0.8],
425              [nticks, 400], [style,dots]);
426 @end example
428 @ifnotinfo
429 @image{@value{figuresfolder}/dynamics4,8cm}
430 @end ifnotinfo
432 Эволюция двумерной системы, приводящая к фракталу:
434 @example
435 (%i6) f: 0.6*x*(1+2*x)+0.8*y*(x-1)-y^2-0.9$
437 (%i7) g: 0.1*x*(1-6*x+4*y)+0.1*y*(1+9*y)-0.4$
439 (%i8) evolution2d([f,g], [x,y], [-0.5,0], 50000, [style,dots]);
440 @end example
442 @ifnotinfo
443 @image{@value{figuresfolder}/dynamics5,8cm}
444 @end ifnotinfo
446 Увеличение небольшой области фрактала:
448 @example
449 (%i9) evolution2d([f,g], [x,y], [-0.5,0], 300000, [x,-0.8,-0.6],
450                   [y,-0.4,-0.2], [style, dots]);
451 @end example
453 @ifnotinfo
454 @image{@value{figuresfolder}/dynamics6,8cm}
455 @end ifnotinfo
457 График треугольника Серпинского, полученный как игра хаоса:
459 @example
460 (%i9) chaosgame([[0, 0], [1, 0], [0.5, sqrt(3)/2]], [0.1, 0.1], 1/2,
461                  30000, [style, dots]);
462 @end example
464 @ifnotinfo
465 @image{@value{figuresfolder}/dynamics7,8cm}
466 @end ifnotinfo
468 Фрактал папоротник (Barnsley's fern) полученный при помощи 
469 системы повторяющихся функций (Iterated Function System):
471 @example
472 (%i10) a1: matrix([0.85,0.04],[-0.04,0.85])$
474 (%i11) a2: matrix([0.2,-0.26],[0.23,0.22])$
476 (%i12) a3: matrix([-0.15,0.28],[0.26,0.24])$
478 (%i13) a4: matrix([0,0],[0,0.16])$
480 (%i14) p1: [0,1.6]$
482 (%i15) p2: [0,1.6]$
484 (%i16) p3: [0,0.44]$
486 (%i17) p4: [0,0]$
488 (%i18) w: [85,92,99,100]$
490 (%i19) ifs(w, [a1,a2,a3,a4], [p1,p2,p3,p4], [5,0], 50000, [style,dots]);
491 @end example
493 @ifnotinfo
494 @image{@value{figuresfolder}/dynamics8,8cm}
495 @end ifnotinfo
497 Чтобы создать файл @emph{dynamics9.xpm} с графическим изображением 
498 фрактала Мандельброта с 12 цветами, выполним:
500 @example
501 mandelbrot([filename,"dynamics9"])$
502 @end example
504 @ifnotinfo
505 @c commented out, image is missing... @image{@value{figuresfolder}/dynamics9,8cm}
506 @end ifnotinfo
508 Для фрактала Джулия с числом (-0.55 + i 0.6):
509 @example
510 julia(-0.55, 0.6, [levels, 36], [center, 0, 0.6], [radius, 0.3],
511       [hue, 240], [huerange, -180], [filename, "dynamics10"])$
512 @end example
514 Граф будет сохранен ф файле @emph{dynamics10.xpm} и будет изображать область
515 от -0.3 до 0.3 по оси x, и от 0.3 до 0.9 по оси y. 
516 Используется 36 цветов, начиная с синего и заканчивая желтым.
518 @ifnotinfo
519 @c commented out, image is missing @image{@value{figuresfolder}/dynamics10,8cm}
520 @end ifnotinfo
522 Чтобы решить дифференциальное уравнение
524 @ifnottex
525 @example
526           dx/dt = t - x^2
527 @end example
528 @end ifnottex
529 @tex
530 $${{dx}\over{dt}} = t - x^2$$ 
531 @end tex
533 с начальным значением x(t=0) = 1, в интервале t от 0 до 8 с шагом 0.1, используем команду:
535 @example
536 (%i20) results: rk(t-x^2,x,1,[t,0,8,0.1])$
537 @end example
539 Результат сохраняется в списке @code{results}.
541 Чтобы численно решить систему:
543 @ifnottex
544 @example
545         dx/dt = 4-x^2-4*y^2     dy/dt = y^2-x^2+1
546 @end example
547 @end ifnottex
548 @tex
549 $$\cases{{\displaystyle{dx}\over\displaystyle{dt}} = 4-x^2-4y^2 &\cr &\cr {\displaystyle{dy}\over\displaystyle{dt}} = y^2-x^2+1}$$
550 @end tex
552 для t от 0 до 4, и с значениями -1.25 и 0.75 для x и y в t=0:
554 @example
555 (%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])$
556 @end example