1 @c Language: Portuguese
2 @c Source: dynamics.texi (en) 1.10
5 * Análise gráfica de sistemas dinâmicos discretos::
6 * Visualização usando VTK::
9 @node O pacote dynamics, Análise gráfica de sistemas dinâmicos discretos, dynamics, dynamics
10 @section O pacote dynamics
12 O pacote adicional @code{dynamics} inclui várias
13 funções para criar diversas
14 representações gráficas de sistemas dinâmicos e
15 fractais, para além duma implementaçõ do método
16 numérico de Runge-Kutta de quarta ordem, para resolver sistemas de
17 equações diferenciais.
19 Para usar as funções neste pacote será necessário
20 primeiro que tudo carregá-lo com @code{load("dynamics")}; as
21 funções que criam gráficos precisam que o Xmaxima
24 @node Análise gráfica de sistemas dinâmicos discretos, Visualização usando VTK, O pacote dynamics, dynamics
25 @section Análise gráfica de sistemas dinâmicos discretos
27 @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...);
29 Usa o método designado de @emph{jogo do caos}, para produzir fractais:
30 desenha-se um ponto inicial (@var{x0}, @var{y0}) e logo escolhe-se
31 aleatoriamente um dos @var{m} pontos @code{[}@var{x1},
32 @var{y1}@code{]}...@code{[}@var{xm}, @var{ym}@code{]}. A seguir,
33 desenha-se um novo ponto que estará no segmento entre o último ponto
34 desenhado e o ponto que se acabou de seleccionar aleatoriamente, a uma
35 distância do ponto seleccionado que será @var{b} vezes o comprimento
36 do segmento. O processo repete-se @var{n} vezes.
40 @deffn {Função} evolution (@var{F}, @var{y0}, @var{n},...opções...);
42 Desenha @var{n+1} pontos num gráfico bidimensional (série de tempo),
43 onde as coordenadas horizontais dos pontos são os números inteiros
44 0, 1, 2, ..., @var{n}, e as coordenadas verticais são os valores
45 @var{y(n)} correspondentes, obtidos a partir da relação
56 Com valor inicial @var{y(0)} igual a @var{y0}. @var{F} deverá ser uma
57 expressão que dependa unicamente da variável @var{y} (e não de @var{n}),
58 @var{y0} deverá ser um número real e @var{n} um número inteiro positivo.
62 @deffn {Função} evolution2d (@code{[}@var{F}, @var{G}@code{]}, @code{[}@var{x0}, @var{y0}@code{]}, @var{n}, ...opções...);
64 Mostra, num gráfico bidimensional, os primeiros @var{n+1} pontos da
65 sucessão definida a partir do sistema dinâmico discreto com
66 relações de recorrência:
69 x(n+1) = F(x(n), y(n)) y(n+1) = G(x(n), y(n))
73 $$\cases{x_{n+1} = F(x_n, y_n) &\cr y_{n+1} = G(x_n, y_n)}$$
76 Com valores iniciais @var{x0} e @var{y0}. @var{F} e @var{G} deverão
77 ser duas expressões que dependam unicamente de @var{x} e @var{y}.
81 @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{]},
82 @var{n}, ...opções...);
84 Usa o método do Sistema de Funções Iteradas (IFS, em
85 inglês @emph{Iterated Function System}). Esse método é semelhante
86 ao método descrito na função @code{chaosgame}, mas em
87 vez de aproximar o último ponto para ponto seleccionado
88 aleatoriamente, as duas coordenadas do último ponto multiplicam-se por
89 uma matriz 2 por 2 @var{Ai} correspondente ao ponto que tenha sido
90 escolhido aleatoriamente.
92 A selecção aleatória de um dos @var{m} pontos
93 atractivos pode se realizada com uma função de
94 probabilidade não uniforme, definida com os pesos
95 @var{r1},...,@var{rm}. Pesos esses que deverão ser dados em forma
96 acumulada; por exemplo, se quiser usar 3 pontos com probabilidades
97 0.2, 0.5 e 0.3, os pesos @var{r1}, @var{r2} e @var{r3} poderiam ser 2, 7
98 e 10, ou qualquer outro grupo de números que estejam na mesma
104 @deffn {Função} orbits (@var{F}, @var{y0}, @var{n1}, @var{n2}, [@var{x}, @var{x0}, @var{xf}, @var{xstep}], ...opções...);
106 Desenha o diagrama de órbitas duma família de sistemas
107 dinâmicos discretos unidimensionais, com um parâmetro @var{x}; esse
108 tipo de diagrama usa-se para mostrar as bifurcações dum
109 sistema discreto unidimensional.
111 A função @var{F(y)} define uma sequência que
112 começa com um valor inicial @var{y0}, igual que no caso da
113 função @code{evolution}, mas neste caso a
114 função também dependerá do parâmetro @var{x}, o
115 qual terá valores compreendidos no intervalo de @var{x0} a @var{xf},
116 com incrementos @var{xstep}. Cada valor usado para o parâmetro @var{x}
117 apresenta-se no eixo horizontal. No eixo vertical apresentam-se @var{n2}
118 valores da sucessão @var{y(n1+1)},..., @var{y(n1+n2+1)}, obtidos
119 após deixá-la evoluir durante @var{n1} iterações
124 @deffn {Função} rk (EDO, var, inicial, dominio)
125 @deffnx {Função} rk ([EDO1,...,EDOm], [v1,...,vm], [inic1,...,inicm], domínio)
127 A primeira forma usa-se para resolver numericamente uma
128 equação diferencial ordinária de primeira ordem (EDO),
129 e a segunda forma resolve numericamente um sistema de @var{m} dessas
130 equações, usando o método de Runge-Kutta de quarta
131 ordem. @var{var} representa a variável dependente. EDO deverá ser
132 uma expressão que dependa unicamente das variáveis independente e
133 dependente, e define a derivada da variável dependente em
134 função da variável independente.
136 A variável independente representa-se com @var{domínio},
137 que deverá ser uma lista com quatro elementos, como, por exemplo:
141 o primeiro elemento da lista identifica a variável independente, os
142 segundo e terceiro elementos são os valores inicial e final para essa
143 variável, e o último elemento dá o valor dos incrementos que
144 deverão ser usados dentro desse intervalo.
146 Se se estiverem a resolver @var{m} equações, deverá
147 haver @var{m} variáveis dependentes @var{v1}, @var{v2}, ...,
148 @var{vm}. Os valores iniciais para essas variáveis serão
149 @var{inic1}, @var{inic2}, ..., @var{inicm}. Continuará existindo
150 apenas uma variável independente, definida pela lista @var{domain},
151 tal como no caso anterior. @var{EDO1}, ..., @var{EDOm} são as
152 expressões que definem as derivadas de cada uma das variáveis
153 dependentes, em função da variável independente. As
154 únicas variáveis que podem aparecer em cada uma dessas expressões
155 são a variável independente e qualquer uma das variáveis
156 dependentes. É importante que as derivadas @var{EDO1}, ..., @var{EDOm}
157 sejam colocadas na lista na mesma ordem em que forem agrupadas as
158 variáveis dependentes; por exemplo, o terceiro elemento da lista
159 será interpretado como a derivada da terceira variável dependente.
161 O programa tenta integrar as equações desde o valor
162 inicial da variável independente, até o valor final, usando
163 incrementos fixos. Se em algum passo uma das variáveis dependentes
164 atingir um valor absoluto muito elevado, a integração
165 será interrompida nesse ponto. O resultado será uma lista com um
166 número de elementos igual ao número de iterações
167 realizadas. Cada elemento na lista de resultados é também uma lista
168 com @var{m}+1 elementos: o valor da variável independente, seguido dos
169 valores das variáveis dependentes nesse ponto.
173 @deffn {Função} staircase (@var{F}, @var{y0}, @var{n}, ...opções...);
175 Desenha um diagrama de degraus (ou diagrama de teia de aranha) para a
176 sucessão definida pela equação de recorrência
186 A interpretação e valores permitidos dos parâmetros de
187 entrada é igual que para a função @code{evolution}. Um
188 diagrama de degraus consiste num gráfico da função
189 @var{F(y)}, junto com a recta @var{G(y)} @code{=}
190 @var{y}. Começa-se por desenhar um segmento vertical desde
191 o ponto (@var{y0}, @var{y0}) na recta, até o ponto de
192 intersecção com a função @var{F}. A
193 seguir, desde esse ponto desenha-se um segmento horizontal até o ponto
194 de intersecção com a recta, (@var{y1}, @var{y1}); o
195 processo repete-se @var{n} vezes até alcançar o ponto
196 (@var{yn}, @var{yn}).
202 Cada opção é uma lista com dois ou mais elementos. O
203 primeiro elemento na lista é o nome da opção e os
204 restantes são os argumentos para essa opção.
206 As opções aceites pelas funções
207 evolution, evolution2, staircase, orbits, ifs e chaosgame são as
212 @dfn{domain} especifica os valores mínimo y máximo da
213 variável independente para o gráfico da função @var{F}
214 representada por @code{staircase}.
217 @dfn{pointsize} define o raio de cada ponto desenhado, em unidades de
218 pontos. O valor por omissão é 1.
221 @dfn{xaxislabel} é o nome que será dado ao eixo horizontal.
224 @dfn{xcenter} é a coordenada x do ponto que deverá aparecer no
225 centro do gráfico. Esta opção não é usada pela
226 função @code{orbits}.
229 @dfn{xradius} é metade do comprimento do intervalo de valores de x que
230 serão representados. Esta opção não é usada pela
231 função @code{orbits}.
234 @dfn{yaxislabel} é o nome que será dado ao eixo vertical.
237 @dfn{ycenter} é a coordenada y do ponto que deverá aparecer no
241 @dfn{yradius} é metade do comprimento do intervalo de valores de y que
246 As opções aceites pelos programas juli
249 Representação gráfica e diagrama de degraus da sequência:
250 2, cos(2), cos(cos(2)),...
253 (%i1) load("dynamics")$
254 (%i2) evolution(cos(y), 2, 11, [yaxislabel, "y"], [xaxislabel,"n"]);
255 (%i3) staircase(cos(y), 1, 11, [domain, 0, 1.2]);
263 Se o seu processador for lento, terá que reduzir o número de
264 iterações usado nos exemplos seguintes. E o valor de
265 @var{pointsize} que dá os melhores resultados dependerá do monitor e
266 da resolução usada. Terá que experimentar com
269 Diagrama de órbitas para o mapa quadrático
276 $$y_{n+1} = x + y_n^2$$
280 (%i4) orbits(y^2+x, 0, 50, 200, [x, -2, 0.25, 0.01], [pointsize, 0.9]);
287 Para ampliar a região à volta da bifurcação na parte de
288 baixo, perto de x @code{=} -1.25, use o comando:
290 (%i5) orbits(x+y^2, 0, 100, 400, [x,-1,-1.53,-0.001], [pointsize,0.9],
291 [ycenter,-1.2], [yradius,0.4]);
298 Evolução dum sistema em duas dimensões, que conduz a
302 (%i6) f: 0.6*x*(1+2*x)+0.8*y*(x-1)-y^2-0.9$
303 (%i7) g: 0.1*x*(1-6*x+4*y)+0.1*y*(1+9*y)-0.4$
304 (%i8) evolution2d([f,g],[-0.5,0],50000,[pointsize,0.7]);
311 E uma ampliação de uma pequena região no fractal:
314 (%i9) evolution2d([f,g],[-0.5,0],300000,[pointsize,0.7], [xcenter,-0.7],
315 [ycenter,-0.3],[xradius,0.1],[yradius,0.1]);
322 Um gráfico do triângulo de Sierpinsky, obtido com o jogo do caos:
325 (%i9) chaosgame([[0, 0], [1, 0], [0.5, sqrt(3)/2]], [0.1, 0.1], 1/2,
326 30000, [pointsize,0.7]);
333 O feto de Barnsley, obtido com o Sistema de Funções
337 (%i10) a1: matrix([0.85,0.04],[-0.04,0.85])$
338 (%i11) a2: matrix([0.2,-0.26],[0.23,0.22])$
339 (%i12) a3: matrix([-0.15,0.28],[0.26,0.24])$
340 (%i13) a4: matrix([0,0],[0,0.16])$
345 (%i18) w: [85,92,99,100]$
346 (%i19) ifs(w,[a1,a2,a3,a4],[p1,p2,p3,p4],[5,0],50000,[pointsize,0.9]);
353 Para resolver numericamente a equação diferencial
361 $${{dx}\over{dt}} = t - x^2$$
364 Com valor inicial x(t=0) = 1, no intervalo de t desde 0 até 8, e
365 com incrementos de 0.1, usa-se:
368 (%i20) resultados: rk(t-x^2,x,1,[t,0,8,0.1])$
371 os resultados ficarão armazenados na lista resultados.
373 Para resolver numericamente o sistema:
377 dx/dt = 4-x^2-4*y^2 dy/dt = y^2-x^2+1
381 $$\cases{{\displaystyle{dx}\over\displaystyle{dt}} = 4-x^2-4y^2 &\cr &\cr {\displaystyle{dy}\over\displaystyle{dt}} = y^2-x^2+1}$$
384 para t entre 0 e 4, com valores iniciais -1.25 e 0.75 para (x, y) em t=0:
387 (%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])$
390 @node Visualização usando VTK, , Análise gráfica de sistemas dinâmicos discretos, dynamics
391 @section Visualização usando VTK
393 A função scene cria imagens a três dimensões e animações, usando o
394 software @emph{Visualization ToolKit} (VTK). Para poder usar essa função
395 é necessário ter Xmaxima e VTK instalados no sistema (incluindo a
396 libraria para utilizar VTK desde TCL, que pode vir num pacote separado