O atrator de lorenz em risc os na pi framboesa

Interessado em um novo projeto Raspberry Pi? O atrator de Lorenz praticamente sozinho originou todo um ramo da teoria da ciência do caos. Parece apropriado que um homem que trabalhou por grande parte de sua vida em Cambridge, Massachusetts, ser lembrado por um programa que é executado em um sistema operacional projetado em Cambridge, Inglaterra.

Edward Norton Lorenz estava trabalhando em sistemas para prever o tempo. Ele tinha construído um modelo matemático simples de como a atmosfera de convecção devem se comportar. Ele se resumia a um sistema de três equações diferenciais ordinárias. Ele estava usando um dos primeiros computadores da década de 1950 para resolver estas equações por métodos numéricos, porque não há nenhuma maneira analítica para resolvê-los. Isto envolveu repetido cálculos ou iterações de valores, a fim de casa em no resultado. A saída de um conjunto de cálculos foi alimentada para a entrada de um outro. Esta é uma técnica bem conhecida primeiro inventado por Isaac Newton os resultados tanto em casa sobre a resposta correta, ficando menor e menor, ou disparar para o infinito.

O que Lorenz encontrou foi uma classe de equações que nem se deteve sobre um resultado nem desviar para o infinito, mas fez algo entre os dois. Produziu o que parecia ser um resultado de ciclismo com os mesmos valores repetir em um padrão. No entanto, uma inspeção mais minuciosa revelou que, embora os resultados fez ciclo, eles nunca repetido - em outras palavras, eles pedalaram sem fim, mas permaneceu dentro de certos limites. Uma espécie de interminável, nunca repetindo conjunto finito de números.

Video: curva de lorenz

Este padrão de números consistia em três valores que mudariam com relação ao outro. Se você fosse usar esses números para traçar uma posição no espaço tridimensional, eles descrevem uma linha ou órbita que nunca repetiu mas passou para sempre. Esta forma foi mais tarde batizado de um fractal, e esta classe de fractais é conhecido como um atrator estranho. Não importa o que as condições de partida iniciais eram, as equações sempre acabava nesta curva (daí o nome atrator, e porque é uma coisa estranha acontecer, a palavra estranho).

A forma desta curva é um entrançado em forma de oito circuito conhecido como uma curva de borboleta, ou o atractor de Lorenz. Em 1969, Lorenz descreveu o efeito borboleta, que afirma que uma mudança quase insignificante em condições iniciais (como o bater de asas de uma borboleta) poderia causar uma grande mudança no resultado de um sistema iterado.

Tudo o que Lorenz tinha de visualizar seus números com era um teletipo bruto, mas nos dias de hoje temos computadores de alta velocidade com telas gráficas Lorenz nunca sonhou. É relativamente fácil de ver sua curva mais detalhadamente do que Lorenz jamais poderia.



A implementação da linguagem BASIC em RISC OS torna mais fácil escrever um programa para exibir o atrator de Lorenz muito rapidamente e em grande detalhe. Isto é mostrado no seguinte código.

 10: REM O Lorenz Attractor - por Mike Cook20: MODO 2830: CLS: CLG40: PROC_Size50: S = Ymax% / 80: SX = Xmax% / 70: SZ = 260: N% = 70: F% = 0: INC = 4E-370: SX% = Xmax% / 2: SY% = Ymax% / 2: SZ = 080%: X = -6,5: Y = -8,8: Z = 2090: P1 = 10: P2 = 28: P3 = 2,66666100 : 110: REPEAT120: N% = N% + 1130: Se N% gt; 200 THEN N% = 0: GCOL 0, RND (63) TINT 255140: D1 = P1 * (YX) 150: D2 = P2 * XYX * Z160: D3 = X * Y-P3 * Z170: X = X + D1 * INC180: Y = Y + D2 * INC190: Z = Z + D3 * INC200: PROC_PLOT (X, Y) 210: TEMPO = 0220: REPEAT230: ATÉ TIMEgt; 0240: B% = ADVAL (-1) 250: ATÉ B% lt; gt; 0260: A $ = GET $ 270: SE A $ ="s" ENTÃO * Screensave Attract280: END290: 300: DEF PROC_PLOT (X, Y) 310: X% = X * SX: Y% = Y * S320: X% = X% + SX%: Y% = Y% + SY% 330 : SE F% = 0% depois mover X, Y% X% ELSE DESENHO, Y% 340:% F = 1: movimento REM apenas o primeiro time350: ENDPROC360: 370: DEF PROC_Size380: SYS"OS_ReadModeVariable", -1,3 TO ,, Ncolours% 390: SYS"OS_ReadModeVariable", -1,4 TO ,, xFact% 400: SYS"OS_ReadModeVariable", -1,5 TO ,, yFact% 410: SYS"OS_ReadModeVariable", -1,11 TO ,, XLim% 420: SYS"OS_ReadModeVariable", -1,12 PARA ,, YLim% 430: Xmax =%% XLim lt;

As posições de partida iniciais são dadas em linha 80, e os parâmetros da equação são dadas na linha 90. O loop principal do programa vai de linha 110 para a linha 280. Isso simplesmente repete até que você pressione qualquer tecla do teclado. Se a tecla pressionada é um S, em seguida, uma cópia do ecrã é feito para salvar uma imagem da tela em formato de Sprite. O circuito funciona por linhas 140 a 160 para encontrar a diferença de valores a partir do último para o presente iteração. O cálculo é então escalado iteração com a variável INC, que é ajustado para ser de 0,004 nas linhas 170 a 190, e o número resultante é representada no ecrã. Observe como apenas o X e y Os valores são plotados, dando uma visão olhando para o z-eixo. Você pode alterar as duas variáveis ​​passadas na PROC ENREDO chamar-se quaisquer dois valores para obter uma visão diferente sobre a curva. Você pode combinar a X, y, e z valores desta chamada para dar qualquer ângulo de projeção ortográfica, se quiser. Por exemplo, fazendo as seguintes alterações ao código vai dar uma vista isométrica da curva:

 42: C1 = 0,707107: C2 = 0,40824143: C3 = 0,816597: C4 = -C2200: PROC_PLOT (C1 * X + C1 * Z, C2 * X + Y + C3 * C4 * Z)

Linhas 210 a 230 basta fazer um período de tempo, tornando-se mais tempo, aumentando o número no final da linha 230 ou eliminá-lo completamente, saltando esses três linhas.

Video: Indice Gini 3

o ENREDO procedimento em si simplesmente dimensiona os dois pontos e, em seguida, muda-los para o meio da tela. Finalmente, se é a primeira trama do tempo, dá uma mover Comando- caso contrário, ele dá um empate do último comando de ponto de gráficos.

o Tamanho procedimento obtém o tamanho da tela em pixels para que o gráfico preenche a tela, e as linhas 120 e 130 adicionar um pouco de variedade, alterando a cor da linha a cada 200 pontos.


Publicações relacionadas