Teoria de Caos: Iterador de Equação de Diferença

Imagem do painel frontal do applet do iterador de equações de diferença geral de Robert John Morton para x=cx(1-x) and x=x*x+c.
[English]

[Para executar este programa, por favor consulte o final do documento.]

Um dos meus programas relacionados ao caos é este applet Java que escrevi para exercitar duas equações de diferença x = cx (1 − x) e x = x² + c. Ele demonstra como a simples alteração do valor da constante c altera todo o comportamento da equação. O applet ilustra um processo matemático que se pensa ser a chave para a próxima fase da busca do homem para entender a natureza. Este mesmo processo também é entendido como a força motriz das economias nacionais - e, de fato, a economia global como um todo. Por conseguinte, é de importância crítica para aqueles que procuram estabelecer políticas econômicas e sociais para o futuro.

Você deve encontrar este applet fácil de operar e adequado para o propósito dele. No entanto, se você estiver interessado em explorar o comportamento dessas e outras equações, você pode modificar e recompilar o código fonte fornecido, mas, depois de ter feito, você é educadamente solicitado a reconhecer o meu trabalho como o autor desta versão original do applet.

Se, com o Microsoft Windows, aparece uma caixa de segurança dizendo que o aplicativo foi bloqueado porque não é confiável, clique aqui. Se você receber mensagens de aviso com o Linux, clique aqui.

O Processo de Iteração

Isto inclui o cálculo do valor de y de uma equação não-linear y = f (x), traçando-o, depois para realimentar y novamente na equação como x e para repetir o processo sem parar. É o que é conhecido como um ciclo de realimentar positivamente. Ex­emplos práticos são: o processo de vida e os processos de fornecimento e de­manda em um mercado livre.

Os Gráficos de Tempo e Rebote

O applet torna visível este processo de iteração através do gráfico de Rebote mostrado no canto inferior direito da área de exibição. O applet traça a curva de y = f (x) e a linha diagonal reta y = x. O processo de iteração começa a partir do ponto na diagonal correspondente ao valor inicial de x. Em seguida, traça uma linha a partir deste ponto verticalmente para atingir a curva y = f (x). Isto produz o valor correspondente de y. A partir deste ponto, ele projeta uma linha horizontalmente até atingir a diagonal. Isto efetivamente alimenta este valor de y na equação como x para a próxima iteração. Arrumado! Ele traça as linhas de retorno da iteração atual em verde escuro e, em seguida, re-traça as linhas de retorno da iteração anterior em verde claro. Se você diminuir a taxa de iteração para baixo para plotar a cada 2 segundos você verá claramente este processo funcionar. O applet traça um gráfico de Tempo (de x versus tempo) em simultâneo com o seu gráfico de Rebote.

Atratores Estranhos

À medida que as iterações se montam no gráfico de rebote, as linhas verdes brilhantes acumulam-se em um atrator no espaço-de-fase bidimensional formado por plotar xn versus xn-1. Para os valores de c que produzem comportamento linear e periódico, o atrator é simplesmente um ponto ou um quadrado. Se as variáveis x e t fossem contínuas em vez de discretas, os quadrados seriam círculos ou elipses como produzidos pelo meu applet das Figuras de Lissajou.

Quando o comportamento torna-se caótico, o atrator torna-se "estranho" - uma sucessão de retângulos em mudança. Dentro da precisão do raster de pixeis da tela, alguns retângulos parecem repetir e sobreporem-se. Porem, dentro da dupla-precisão da aritmética de ponto flutuante IEEE usada no programa, eles nunca sobreporem-se exatamente. Novamente, se as variáveis x e t fossem contínuas em vez de discretas, o traço assemelharia-se a algo parecido com a máscara de coruja ou o traço de borboleta que se tornou conhecido como o atrator estranho de Lorenz.

Tipo de Funcão

Surpreendentemente, o tipo particular da função f usada parecer não afetar o comportamento fundamental do processo de iteração. Não precisa ser nenhuma das duas funções incorporadas pelas equações escolhidas para o applet. Outras funções exibem o mesmo tipo de comportamento, desde que sejam não-lineares (ou seja, elas produzem curvas e não linhas retas). Tudo o que a mudança da função parece fazer é reposicionar, redimensionar e remodelar tão ligeiramente o caminho traçado por valores sucessivos de x em relação à origem do sistema de coordenadas no qual eles são plotados.

Types of Behaviour

Seja qual for a função particular usada para a equação de diferença, ela exibe um dos três tipos de comportamento de acordo com o valor atual da constante c, a saber:

transiente
x gravita para e estabelece um valor final estável,
oscilatório
x gravita para e estabelece uma oscilação constante entre um pequeno número de valores fixos,
caótico
x gravita em direção a e instala-se dentro de um envelope máximo/mínimo dentro do qual ele rebote imprevisivelmente para sempre.

Para Iterar x = cx(1 − x)

Para c < 2,1, a iteração desta equação produz a curva sigmoide familiar usada para representar o crescimento de plantas e árvores, populações, demanda do mercado e uma infinidade de outras coisas. Para 2,1 < c < 2,9, a curva sobe ao máximo, depois segue uma oscilação moribunda que eventualmente se ajusta a um valor constante. Para 2,9 < c < 3,4 a curva sobe como de costume, mas estabelece-se em uma oscilação regular. Para 3,4 < c < 3,6, a oscilação torna-se cada vez mais complexa, em um ponto adotando um tipo de ritmo de valsa. De 3,7 < c < 4 oscilações regulares dão lugar ao comportamento caótico. Para c < 4, isto torna-se tão extremo que a "população" logo faz um mergulho caótico para zero, do qual não pode se recuperar - como se uma população se extingue.

Para iterar x = x² + c

Isto é matematicamente equivalente à outra equação acima, de modo que seu comportamento será o mesmo, e também pode representar os processos naturais representados pelo outro.

Comportamentos da equação para diferentes valores de c:
para c = 0,5 e além, x patina para o infinito
para c = 0,15, x sobe para um valor constante
Para c = 0, x permanece em zero
Para c = −0,5, x sobe para um valor negativo constante
Para c = −1, x oscila com o período 2
Para c = −1,3, x oscila com o período 4
para c = −1,4, x oscila com o período 8
para c = −1,5, oscilação caótica limitada
para c = −1,7, uma boa demonstração de caos limitado
para c = −1.75, oásis periódicos dentro do caos - período 3
Para c < −2, x rapidamente torna-se selvagem em um caos infinito

Esta equação pode ser considerada como uma versão de "eixo real só" da equação de diferença complexa z = z² + c que gera o Conjunto de Mandelbrot.

Equivalência Matemática

Ambas as equações são funções parabólicas. Quando plotados, eles produzem parábolas. As diferenças entre as equações não estão relacionadas com a natureza do que descrevem. É apenas fazer com a posição a partir da qual o que eles descrevem é observado. Alterar a posição eo ângulo a partir do qual você observa uma coisa não altera a própria coisa.

A essência de uma parábola é descrita completamente pela equação y = x². Todos os outros termos na forma geral da equação de uma parábola são simplesmente fazer com a partir de onde o observador escolhe observar-a. Ou seja, onde ele escolheu colocar o centro do seu quadro de referência, e o grau de ampliação que ele usará enquanto medir o que ele observa. O observador, por definição, reside sempre na origem (ponto 0, 0) do seu sistema de coordenadas

A forma geral da equação para uma parábola é a + bx + c onde:

Os efeitos dessas 3 variáveis são sobreposto uma na outra. Por exemplo, quando c não é zero, uma mudança em b move o ponto y = c (não a origem coordenada y = 0) em torno da curva da parábola. O ponto essencial de tudo isto é que uma parábola é sempre uma parábola, ou seja, y = x². Toda a outra parafernália, na forma generalizada da equação, é simplesmente para fazer com onde o observ­ador está. E onde o observador está não pode afetar a natureza intrínseca e o comportamento do que é observado. Então, para estudar o comportamento da equação, não importa qual equação específica está usada, enquanto for uma pará­bola.

Todas as formas da equação podem ser mapeadas umas nas outras simplesmente por alterar a posição do observador. Para mudar de ver uma parábola como y = cx(1 − x) para vê-lo como y = x² + c, faça o seguinte:

  1. Mova metade de uma unidade à sua direita. A equação é agora y = c(½ + x)(½ − x) que simplifica para y = c(¼ − x²)

  2. Vá ao redor das costas e vire-se de cabeça para baixo. A equação é agora y = c(x² − ¼)

  3. Coloque um par de óculos astigmáticos que reduzam a escala y por um fator de c. A equação é agora y = x² − ¼c. Então deixe a constante c na nova equação ser o que ¼c estava no antigo. Assim, a equação torna-se y = x² + c.

No entanto, o que você está olhando não é alterado. O motivo para mudar a sua posição de observação é que a segunda equação é mais simples e, portanto, mais fácil de construir em um programa de computador e mais rápido para calcular. Em programas iterativos, o tempo é essencial.

Os cientistas costumam curvar, dobrar, escalar e torcer representações gráficas de fenômenos para torná-los mais visíveis. O atrator estranho de Hénon é um exemplo excelente. A dificuldade é que eles não podem mais ser capazes de correlacionar facilmente a nova forma de suas equações com o fenômeno do mundo real que estão tentando simular e do qual eles derivaram as suas equações originais. É tudo uma questão de compromisso - e um aspecto muito interessante da relatividade.

Caos na Natureza

A primeira equação do applet x = cx (1 − x) é conhecida como Equação de Diferença Logística Padrão. Ela modela, entre outras coisas, a forma como as populações, de formas de vida reprodutiva, aumentam-se e diminuem-se. Neste contexto, a constante c representa a fecundidade da forma de vida em causa, ou seja, a ferocidade com a qual ela se reproduz. Isto é moderado por um fator que representa o grau de facilidade ou dificuldade com que a espécie é capaz de adquirir as suas necessidades da vida a partir do meio ambiente. A população é assim mantida em equilíbrio por um mecanismo análogo a um amplificador com retroalimentação negativa, ou um motor com um regulador de velocidade sensível ao torque, ou uma economia de mercado regulada pelas taxas de juros.

As populações humanas e animais seguem uma curva sigmoide suave como a produzida pelo applet para c < 2,1 na equação x = cx (1 − x). Tente c = 1,85 para um bom exemplo de uma população sigmóide. Atualmente, a população mundial humana é pensada para cerca de 0,4 na escala vertical do gráfico do tempo. O que corresponde a cerca de 6.000 milhões. Mas isto não significa que a Terra não pode suportar mais de 6750 milhões (0,45 no gráfico, o ponto em que ele níveis fora). Significa simplesmente que não pode fazê-lo sob o atual nível de tecnologia e sob o regime socioeconômico atualmente dominante.

Em sistemas dinâmicos complexos, especialmente, há um atraso entre causa e efeito. Para a população humana, esse atraso é muito curto em comparação com o ciclo de reprodução. É por isso que a curva que a população humana segue é um sigmoide suave. Mas com insetos, devido à sua alta fecundidade, o atraso é significativo. Os efeitos das mudanças ficam atrasados de suas causas. Isto causa algumas populações de insetos aumentar e diminuir chaoticamente, correspond­endo ao comportamento da equação para c = 3,6 ou por aí. Isto tem um significado para o futuro da humanidade de uma maneira que é mais imediata e menos óbvia do que se supõe.

Caos em Economias

A primeira equação do applet x = cx (1 − x) é conhecida como Equação de Diferença Logística Padrão. Ela modela, entre outras coisas, a forma como a população de um produto cresce dentro de seu potencial mercado. Neste contexto, a constante c é uma amálgama de dois fatores. O primeiro representa a pro­dutividade - o número de unidades de produto que podem ser fabricadas por uma unidade de esforço humano. Isso é ampliado pela tecnologia de produção. O seg­undo representa o número de unidades de produtos que podem ser vendidas no mercado por uma unidade de esforço humano. Isto é ampliado pela tecnologia de comunicação. No entanto, é diminuído pela concorrência. A população de um pro­duto dentro de um mercado é assim mantida em equilíbrio por um mecanismo semelhante ao que mantém as populações da vida em equilíbrio com seus ambi­entes.

A natureza fornece generosamente as necessidades da vida em troca do trabalho humano. Na ausência de guerra, opressão e exploração, todos poderiam viver no conforto e no bem-estar. O valor de c fornecido pela natureza (suponha que seja cerca de 1,3 ou 1,4) é mais do que adequado para as necessidades da human­idade. Ele cria uma economia com uma curva de produtividade suave. Mas a forma de vida humana começou então a desenvolver tecnologia. Primeiras ferramentas, em seguida, a roda, depois máquinas, depois automação, computadores, comuni­cações e mídias de massa.

O sigmoide suave atingiu alturas cada vez maiores. Uma vez que c passou 2,34, a curva começou a badalar quando atingiu o topo. Ou seja, produção ultrapassou e depois caiu de volta à sua taxa estável. A amplitude de badalar cresceu cada vez mais até, quando c = 2,9. Neste ponto começou exibir um ritmo quase constante (embora superficial) de boom e busto. Isto foi quando as economias ocidentais gradualmente emergiram a partir do final da Segunda Guerra Mundial. No entanto, conforme mostra o gráfico de tempo do applet, a relação entre boom e busto gradualmente desapareceu. Acha que isto prova que a política econômica do gov­erno está funcionando? Penso que não.

No qualquer jeito, a tecnologia continua avançando, gerando maior produtividade e aumentando mais o poder e alcançamento de marketing.

O resultado é que a relação entre boom e busto fica maior, mas agora não des­aparece. À medida que c aumenta mais, também a relação entre o boom e o busto, até o seu ritmo torna-se mais complexa. Provavelmente vamos deixar o século 20 com muitas economias nacionais crescendo e rebentando de acordo com este hipnotizante "ritmo de valsa". Mas o que do futuro? O que o novo milênio mantém para as economias nacionais? Em uma palavra: caos. O progresso técnico não vai parar. Pelo contrário, a sua taxa de progresso acelerará. O ciclo do boom-busto provavelmente logo vai seguir o perfil de c = 3.68 que foi estava sendo traçado pelo applet quando você o viu pela primeira vez.

É improvável que os ciclos econômicos caóticos prejudiquem as economias naci­onais ou aqueles que as controlam. No entanto, eles vão arruinar e destruir a vidas econômicas das pessoas comuns. Ou seja, a menos que as regras de engajamento entre o indivíduo e o corpo corporativo sejam substancialmente reestruturadas.

Nota de rodapé:
O applet representa o crescimento da população de um único produto vendido por um único fornecedor em um mercado simples. Embora, na realidade, uma economia nacional seja muito mais complicada, seu comportamento resume-se ao que tem uma estranha semelhança com o que o applet mostra. O caos é escalável. Eu abordo este assunto em profundidade muito maior no meu livro A Herança Perdida.

Instruções de Operação

O painel de controle do applet é a coleção de botões, etc. no quarto inferior esqu­erdo da janela do applet.

Control da Taxa
Esta é a coluna de 5 botões de rádio intitulados "Traçar cada" na extremidade esquerda do painel de controle. Ela permite que você defina ou altere a taxa na qual o applet itera a equação e traça o novo valor resultante de x. Os botões são rotulados em termos do período entre iterações em milissegundos em vez da frequência de iteração. Você pode alterar a taxa de iteração por clicar em um desses botões de opção. Você pode alterar a taxa do iteração quando o gráfico é interrompido ou enquanto ele está em execução. A mud­ança é efetuada imediatamente quando um dos botões de rádio está clicado. A taxa padrão é a mais rápida (um novo valor de x é plotado a cada 100 milis­segundos) para dar uma sensação do ritmo do processo. Ao diminuir a taxa de iteração até um iteração a cada 2 segundos, você é melhor capaz de ver a correlação entre o que está acontecendo no gráfico de rebote e o que está ocorrendo no gráfico da linha do tempo.

Seletor de Equação
Esta é a coluna de 2 botões de rádio intitulados "Equação" no centro superior da área do painel de controle. Ela permite que você selecione ou altere a equação que você gostaria de exercitar. Você seleciona a equação desejada por clicar no botão de opção apropriado. Selecionar a outra (ou mesmo a mesma) equação faz com que o processo de iteração seja restabelecida. Isto causa cada gráfico seja limpo de qualquer traço existente e a constante c e a variável x a serem restabelecidas respectivamente para seus valores padrão e inicial para a equação selecionada. Após disto, o processo de iteração deve ser reiniciado por clicar no botão "Iniciar".

Seletor de Modo de Varredura
Esta é a coluna de 2 botões de rádio intitulados "Varredura" na parte inferior direita da área do painel de controle. Permite configurar ou alterar o modo de varredura. No modo de varredura única, o processo continua a iterar a equação selecionada até chegar ao final do eixo temporal do gráfico da linha do tempo. O processo então pára. Isto permite que você estude o início e as primeiras 70 iterações da equação. No modo contínuo, o processo de iteração continua indefinidamente. Neste modo, quando o gráfico da linha do tempo atingiu o fim do eixo do tempo, ele retorna ao começo novamente e continua a traçar. Ao fazê-lo, ele limpa o traço antigo uma pequena distância antes de cada nova trama. Você pode usar o botão "Parar" para interromper temp­orariamente o processo de iteração a qualquer momento. O botão "Iniciar" reinicia o processo de iteração exatamente onde foi interrompido. Você pode, se desejar, alterar o modo de varredura enquanto a equação está em iter­ação.

Seletor de Modo de Traçar
Esta é a coluna de 2 botões de rádio intitulados "Modo de Traçar" no canto superior direito da área do painel de controle. No modo de "Em Linhas", o gráfico de tempo é plotado juntando parcelas consecutivas com linhas retas. É assim que você vê o Gráfico de Tempo que está sendo plotado quando você vê o applet pela primeira vez. No modo "Uma vez só", o valor de ponto de x após cada iteração da equação é exibido como uma linha horizontal curta. Seu comprimento é o período de iteração no eixo do tempo. Quando você sele­ciona o modo de "Uma vez só", o modo de varredura é configurado auto­maticamente como "Contínuo", de modo que o traçado continua mesmo depois que os gráficos atingiram o final do eixo do tempo. No entanto, o traço não retorna ao início do eixo do tempo, como acontece no modo "Em Linhas" quando o modo de varredura "Contínuo" é selecionada. Em vez disto, ele con­tinua plotando os valores de x nas suas apropriadas posições horizontal no final do eixo do tempo. Estas parcelas gradualmente acumulam-se em uma "barra" que mostra o envelope dentro do qual os valores de x variam uma vez que se estabeleceu depois das 70 iterações iniciais do seu valor inicial. Este envelope é exclusivo para cada valor de c dentro da equação atualmente selecionada.

Campo de Entrada Para Ajustar a Constante 'c'
Este é um campo de entrada de texto no qual você pode inserir o seu próprio valor para a constante c na equação atualmente selecionada. Isto permite que você explore os efeitos de mudanças muito pequenas e precisas no valor de c. Isto é particularmente interessante para os valores em torno dos quais o comportamento da equação iterativa muda dramaticamente de suave para oscilatório ou de oscilatório para caótico. Se você inserir uma coleção de caracteres que não podem ser analisados em um número dentro dos limites válidos para c, o applet irá restabelecer o valor válido anterior. Para inserir um novo valor de c, clique no campo de texto abaixo do título "Ajustar c", exclua o que existe, digite o valor desejado e pressione a tecla 'Return' ou 'Enter' (no teclado do seu computador). O novo valor está em vigor. A inserção de um novo valor de c causa cada gráfico seja eliminado de qualquer rastreamento existente e x seja redefinido para o valor inicial apropriado. O processo de iteração deve então ser iniciado por clicar no botão "Iniciar".

Os Botões + −
Estes permitem que você move gradualmente o valor de c para cima e para baixo por 0,01 por clique. No entanto, eles não permitirão aumentar ou dim­inuir c fora do seu intervalo de valores válido para a equação atualmente sele­cionada. Quando você clica em qualquer um destes botões, a parábola no gráfico de rebote para o direito expande-se ou contrai-se de acordo para acomodar o novo valor de c.

O Botão "Parar/Iniciar"
O botão "Parar" simplesmente interrompe o processo de iteração no ponto em que chegou no momento. Não restaura x ou c. Nem limpa os gráficos. Quando o botão "Parar" foi pressionado, ele transforma-se em um botão "Iniciar". Como um botão "Iniciar", ele simplesmente reinicia o processo de iteração a partir do ponto em que foi interrompido. Este botão permite assim inter­romper o processo e estudar o comportamento da equação atualmente sele­cionada para qualquer breve snap-shot do tempo, não importa quanto tempo o processo de iteração esteve em execução. Você pode então reiniciar o processo de iteração novamente se desejar.

O Botão "Limpar"
Isto causa o processo de iteração (se estiver em execução) seja interrompido e os gráficos a serem removidos. O valor de x é reiniciado para o seu valor inicial. Se x = cx (1 − x) for a equação atualmente selecionada, o valor inicial para x é reiniciado para um pequeno valor arbitrário de 0,01 (caso contrário, x nunca iria sair do chão). Se x = x² + c for a equação atualmente selecionada, x é reiniciado para zero. O botão "Limpar" não altera o valor de c.

Código Fonte para o Iterador de Equações de Diferença

O applet de demonstração de iterações da equação de diferença é composto das seguintes classes:

Muito antes de ser melhorado e reescrito em Java, este demonstrador de iterações de equações de diferença iniciou a vida como três programas separados escritos no MS QuickBASIC 2.0 (que mostra quanto tempo atrás isso foi!). Para os arque­ólogos de software entre vocês, estes três programas originais: stdLog.bas, std­Log1.bas e stdLog2.bas devem revelar-se artefactos muito interessantes. No en­tanto, eles oferecem uma apresentação um pouco diferente do que o do applet.

Para Executar Este Programa

Você precisa do Java instalado em seu computador. Então:

  1. crie uma nova pasta em um local conveniente.
  2. baixe o arquivo difeqn.jar.
  3. mova-o para sua nova pasta.
  4. descompacte o arquivo 'difeqn.jar'.
    [Um arquivo 'jar' é meramente um arquivo 'zip' com extensão '.jar'.]
  5. abra um terminal.
  6. mude o diretório para sua nova pasta.
  7. digite o comando: "java difeqn -pt".

Nota: não obstante os avisos "oficiais", este programa não vão explodir o seu com­putador nem causar qualquer outro tipo de dano fantasioso. Ele simplesmente des­enha gráficos na tela. Nos bons e velhos tempos, este programa simplesmente era executado dentro da página da web, onde sua imagem estática é exibida agora. O applet incorporado ainda é executavel em versões anteriores a 2017 dos naveg­adores com o Java 1.6 instalado e a versão do Web Start ainda é executavel nas versões anteriores a 2019 dos navegadores com o Java 1.8 instalado. Para ler a história rançosa deste triste retrocesso na funcionalidade da Web, clique aqui.
[Back to top.]

Você também pode experimentar com uma versão deste programa escrita em 'C'. Observe que os controles na versão 'C' são um pouco diferentes, mas sua operação é, no entanto, essencialmente evidente. [De volta ao topo.]


© novembro 1997 Robert John Morton | ANTE | PROX