1 @c Language: Brazilian Portuguese, Encoding: iso-8859-1
2 @c /dynamics.texi/1.13/Sat Jun 2 00:13:21 2007//
4 * Introdução a dynamics::
5 * Funções e Variáveis Definidas para dynamics::
8 @node Introdução a dynamics, Funções e Variáveis Definidas para dynamics, dynamics, dynamics
9 @section Introdução a dynamics
11 O pacote adicional @code{dynamics} inclui muitas
12 funções para criar várias representações gráficas de sistemas
13 dinâmicos discretos e fractais, e uma implementação deo método
14 numérico de Runge-Kutta de quarta ordem para a resolução de sistemas de equações diferenciais.
16 Para usar as funções nesse pacote você deve primeiramente torná-lo disponível para uso com
17 @code{load("dynamics")}.
19 @b{Modificações introduzidas no Maxima 5.12}
21 Iniciando no Maxima 5.12, o pacote dynamics agora utiliza a função
22 @code{plot2d} para monar os gráficos. Os comandos que produzem gráficos
23 (com exceção de @code{julia} e de @code{mandelbrot}) agora aceitam
24 qualquer opção de @code{plot2d}, incluindo a opção que modificam o montante das
25 várias interfaces gráficas, usando diferentes estilos de montagem de gráfico e cores,
26 e representando um ou ambos os eixos em uma escala logarítmica. As antigas
27 opções @var{domain}, @var{pointsize}, @var{xcenter}, @var{xradius},
28 @var{ycenter}, @var{yradius}, @var{xaxislabel} e @var{yaxislabel}
29 não são aceitas nessa nova versão.
31 Todos os programas irão agora aceitar quaisquer nomes de variáveis, e não apenas @var{x}
32 e @var{y} como nas antigas versões. Dois parâmetros requeridos tiveram
33 modificações em dois desses programas: @code{evolution2d} agora requer uma lista
34 nomeando explicitamente as duas variáveis independentes, e o intervalo
35 horizontal para @code{orbits} não mais requer um tamanho de passo; o intervalo
36 pode somente espcificar o nome da variável, e o menor e o maior
37 valores; o número de passos pode agora ser modificado com a opção
40 @node Funções e Variáveis Definidas para dynamics, , Introdução a dynamics, dynamics
41 @section Funções e Variáveis Definidas para dynamics
43 @deffn {Função} chaosgame (@code{[[}@var{x1}, @var{y1}@code{]}...@code{[}@var{xm}, @var{ym}@code{]]}, @code{[}@var{x0}, @var{y0}@code{]}, @var{b}, @var{n}, ...opções...);
45 Implementa o então chamado jogo do caos: o ponto inicial (@var{x0},
46 @var{y0}) é colocado no gráfico e então um dos @var{m} pontos
47 @code{[}@var{x1}, @var{y1}@code{]}...@code{[}@var{xm}, @var{ym}@code{]}
48 será selecionado de forma aleatória. O próximo ponto colocado no gráfico será sobre o
49 segmento que vai do ponto anteriormente colocado no gráfico ao ponto escolhido aleatóriamente, à
50 distância do ponto aleatório que será @var{b} vezes o comprimento daquele
51 segmento. o procedimento é repetido @var{n} vezes.
55 @deffn {Função} evolution (@var{F}, @var{y0}, @var{n}, ..., opções, ...);
57 Desenha @var{n+1} pontos em gráfico bidimensional, onde as coordenadas
58 horizontais dos pontos são os inteiros 0, 1, 2, ..., @var{n}, e
59 as coordenadas verticais são os valores correspondentes @var{y(n)} da
60 seq@"{u}ência definida pela relação de recorrência
70 com valor inicial @var{y(0)} igual a @var{y0}. @var{F} deve ser uma
71 expressão que depende somente de uma variável (no exemplo, essa variável
72 dependente de @var{y}, mas qualquer outra variável pode ser usada em lugar de @var{y}),
73 @var{y0} deve ser um número real e @var{n} deve ser um inteiro positivo.
77 @deffn {Função} evolution2d (@code{[}@var{F}, @var{G}@code{]}, @code{[}@var{u}, @var{v}@code{]}, @code{[}@var{u0}, @var{y0}@code{]}, @var{n}, ..., opções, ...);
79 Mostra, em um gráfico bidimensional, os primeiros @var{n+1} pontos na
80 seq@"{u}ência de pontos definida por meio do sistema dinâmico discreto
81 bidimensional com relações de recorrência
84 u(n+1) = F(u(n), v(n)) v(n+1) = G(u(n), v(n))
88 $$\cases{u_{n+1} = F(u_n, v_n) &\cr v_{n+1} = G(u_n, v_n)}$$
91 Com valores iniciais @var{u0} e @var{v0}. @var{F} e @var{G} devem ser
92 duas expressões que dependem somente de duas variáveis @var{u} e
93 @var{v}, que devem ser nomeadas explicitamente em uma lista.
97 @deffn {Função} 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}, ..., opções, ...);
99 Implemanta o método de Sistemas de Funções iteradas. Esse método é similar
100 ao método descrito na função @code{chaosgame}, mas em lugar de
101 encolher o segmento do ponto corrente ao ponto escolhido
102 aleatóriamente, as duas componentes daquele segmento irão ser multiplicadas pela matrix 2 por 2
103 @var{Ai} que corresponde ao ponto escolhido aleatóriamente.
105 A escolha aleatória de um dos @var{m} pontos de atração pode ser feita com
106 uma distribuição de probabilidade não uniforme definida por meio dos pesos
107 @var{r1},...,@var{rm}. Esses pesos são fornecidos de forma cumulativa; por exemplo se existem 3 pontos com probabilidades 0.2, 0.5 e
108 0.3, os pesos @var{r1}, @var{r2} e @var{r3} podem ser 2, 7 e 10.
113 @deffn {Função} rk (EDO, var, inicio, domain)
114 @deffnx {Função} rk ([EDO1,...,EDOm], [v1,...,vm], [inic1,...,inicm], domain)
116 A primeira forma resolve numericamente uma equação diferencial de primeira
117 ordem, e a segunda formaresolve um sistema de m dessas equações,
118 usando o método de Runge-Kutta de quarta ordem. @code{var} representa a variável
119 dependente. EDO deve ser uma expressão que dependa somente da variável independente e da
120 variável dependente e defina a derivada da variável
121 dependente com relação à variável independente.
123 A variável independente é especificada com @code{domain}, que deve ser uma
124 lista dde quatro elementos como, por exemplo:
128 O primeiro elemento da lista identifica a variável independente, o
129 segundo e o terceiro elementos são os valores inicial e final para para aquela
130 variável, e o último elemento escolhe o incremento que pode ser usado
131 dentro daquele intervalo.
133 Se @var{m} equações estão sendo resolvidas, podem existir @var{m}
134 variáveis dependentes @var{v1}, @var{v2}, ..., @var{vm}. Os valores iniciais
135 para aquelas variáveis serão @var{inic1}, @var{inic2}, ..., @var{inicm}.
136 Ainda pode ser apenas uma variável independente definida por @code{domain},
137 como no caso anterior. @var{EDO1}, ..., @var{EDOm} são as expressões
138 que definem as derivadas de cada variável dependente em
139 termos da variável independente. As variáveis que podem aparecer
140 naquelas expressões são a variável independente e quaisquer outras variáveis
141 dependentes. É importante fornecer as derivadas @var{EDO1}, ...,
142 @var{EDOm} na lista exatamente na mesma ordem usada para variáveis
143 dependentes; por exemplo, o terceiro elemento na lista irá ser interpretado
144 com a derivada da terceira variável dependente.
146 O programa tentará integrar as equações a partir do valor inicial
147 da variável independente até seu último valor, usando incrementos
148 constantes. Se em algum passo uma das variáveis dependentes recebe um
149 valor absoluto muito grande, a integração será interrompida naquele
150 ponto. O resultado será uma lista com tamtos elementos quantos forem o número de
151 iterações feitas. Cada elemento na lista de resultado é em si mesmo outra lista
152 comh @var{m}+1 elementos: o valor da variável independente, seguido
153 pelos valores das variáveis dependentes correspondentes àquele ponto.
157 @deffn {Função} staircase (@var{F}, @var{y0}, @var{n}, ...opções...);
159 Desenha um diagrama em escada para a seq@"{u}ência definida pela relação de
170 A interpretação e os valores permitidos dos parâmetros de entrada são os
171 mesmos que para a função @code{evolution}. Um diagrama em escada consiste
172 de um gráfico da função @var{F(y)}, juntamente com a linha
173 @var{G(y)} @code{=} @var{y}. Um segmento vertical é desenhado a partir das
174 point (@var{y0}, @var{y0}) on that line until the point where it
175 intersecções com a função @var{F}. A partir daquele ponto um segmento horizontal é
176 desenhado até encontrar o ponto (@var{y1}, @var{y1}) sobre a linha, e
177 o procedimento é repetido @var{n} vezes até que o ponto (@var{yn}, @var{yn})
184 Cada opção é uma lista de dois ou mais itens. O primeiro item é o nome
185 da opção, e os restantes compreendem os argumentos para a opção.
187 As opções aceitas pelas funções @code{evolution}, @code{evolution2d},
188 @code{staircase}, @code{orbits}, @code{ifs} e @code{chaosgame} são as mesmas opções para
189 @code{plot2d}. Adicionalmente para aquelas opções, @code{orbits} aceita a
190 opção extra @var{pixels} que escolhe o número máximo de pontos
191 diferentes que irão ser representados na direção vertical.
196 Representação gráfica e diagrama em escada para a seq@"{u}ência:
197 2, cos(2), cos(cos(2)),...
200 (%i1) load("dynamics")$
202 (%i2) evolution(cos(y), 2, 11);
204 (%i3) staircase(cos(y), 1, 11, [y, 0, 1.2]);
208 @image{@value{figuresfolder}/dynamics1,8cm}
209 @image{@value{figuresfolder}/dynamics2,8cm}
212 Se seu sistema for lento, você deverá reduzir o número de iterações nos
213 seguintes exemplos. E se os pontos parecerem muito pequenos no seu
214 monitor, você pode querer tentar um estilo diferente, tal como
215 @code{[}@var{style},@code{[}@var{points},0.8@code{]]}.
217 Diagrama de órbitas para o mapa quadrático, com um parâmetro @var{a}.
224 $$y_{n+1} = x + y_n^2$$
228 (%i4) orbits(x^2+a, 0, 50, 200, [a, -2, 0.25], [style, dots]);
232 @image{@value{figuresfolder}/dynamics3,8cm}
235 Para ampliar a região em torno da bifurcação menor perto de x @code{=} -1.25 use:
237 (%i5) orbits(x+y^2, 0, 100, 400, [a,-1,-1.53], [x,-1.6,-0.8],
238 [nticks, 400], [style,dots]);
242 @image{@value{figuresfolder}/dynamics4,8cm}
245 Evolução de um sistemma bidimensional que leva a um fractal:
248 (%i6) f: 0.6*x*(1+2*x)+0.8*y*(x-1)-y^2-0.9$
250 (%i7) g: 0.1*x*(1-6*x+4*y)+0.1*y*(1+9*y)-0.4$
252 (%i8) evolution2d([f,g], [x,y], [-0.5,0], 50000, [style,dots]);
256 @image{@value{figuresfolder}/dynamics5,8cm}
259 E uma ampliação de uma pequena regial naquele fractal:
262 (%i9) evolution2d([f,g], [x,y], [-0.5,0], 300000, [x,-0.8,-0.6],
263 [y,-0.4,-0.2], [style, dots]);
267 @image{@value{figuresfolder}/dynamics6,8cm}
270 Um gráfico do triângulo de Sierpinsky, obtido com o jogo do caos:
273 (%i9) chaosgame([[0, 0], [1, 0], [0.5, sqrt(3)/2]], [0.1, 0.1], 1/2,
274 30000, [style, dots]);
278 @image{@value{figuresfolder}/dynamics7,8cm}
281 A samambaia de Barnsley, obtida com um Sistema de Funções Iteradas:
284 (%i10) a1: matrix([0.85,0.04],[-0.04,0.85])$
286 (%i11) a2: matrix([0.2,-0.26],[0.23,0.22])$
288 (%i12) a3: matrix([-0.15,0.28],[0.26,0.24])$
290 (%i13) a4: matrix([0,0],[0,0.16])$
300 (%i18) w: [85,92,99,100]$
302 (%i19) ifs(w, [a1,a2,a3,a4], [p1,p2,p3,p4], [5,0], 50000, [style,dots]);
306 @image{@value{figuresfolder}/dynamics8,8cm}
309 Para resolver numericamente a equação diferencial
317 $${{dx}\over{dt}} = t - x^2$$
320 Com valor inicial x(t=0) = 1, no intervalo de @code{t} de 0 a 8 e com
321 incrementos de 0.1 para @code{t}, use:
324 (%i20) results: rk(t-x^2,x,1,[t,0,8,0.1])$
327 os resultados serão salvos na lista de resultados.
329 Para resolver numericamente o sistema:
333 dx/dt = 4-x^2-4*y^2 dy/dt = y^2-x^2+1
337 $$\cases{{\displaystyle{dx}\over\displaystyle{dt}} = 4-x^2-4y^2 &\cr &\cr {\displaystyle{dy}\over\displaystyle{dt}} = y^2-x^2+1}$$
340 para @code{t} entre 0 e 4, e com valores de -1.25 e 0.75 para x e y em t=0:
343 (%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])$