Este artigo é uma continuação do meu primeiro artigo
, Fractals in Prime Numbers .
Próximo artigo:
Fractais em números irracionais. Parte 2
Em um artigo anterior, aprendemos a desenhar padrões auto-semelhantes usando números primos entre si. Neste artigo, mostrarei a natureza fractal do número
.
Sem um prefácio. Sob gato.
Definiremos terminologia e notação. Em matemática, os sistemas descritos abaixo são chamados de
bilhar . Além disso, usaremos esse termo. As dimensões dos bilhar retangulares serão indicadas por
(largura) e
(altura).
Bilhar binário
No artigo anterior, pegamos um bilhar retangular com lados
e
, lançou uma bola e marcou a trajetória com uma linha tracejada através da célula:

Para mutuamente simples
e
nós obtemos o padrão:

Na versão binária, marcamos a trajetória não com uma linha tracejada, mas preenchendo alternadamente as células com preto e branco (formamos uma matriz binária, colocamos 0 para preto e 1 para branco na célula correspondente):

Regras de reflexão de borda:

Para mutuamente simples
e
a trajetória passa por cada célula:

Para diferentes M e NO que é mais surpreendente nesses padrões é que, para diferentes
e
verifica-se seu próprio padrão único:





No artigo, como
e
, usamos principalmente números de Fibonacci.
Aqui você pode desenhar padrões para outros números (coordenadas do mouse).
Se as partes tiverem um divisor comum, a bola entra no canto antes de passar por cada célula:

É conveniente considerar este caso como bilhar em um retângulo com lados
e
(GCD é o maior fator comum):

Antes de
prosseguir , preencha a tabela proposta pelo usuário
Captain1312 em seu
artigo (dividiremos os lados do bilhar em GCD).
um pouco
Para cada mesa de bilhar
e
demorar um pouco com coordenadas
.

Se
é um divisor
- então um pouco com coordenadas
ausente (
) Nesse caso, pegamos o bit invertido com as coordenadas
.
Preencha a tabela. A origem é o canto superior esquerdo. Por
- largura dos bilhares
por
- altura
. Para cada bilhar marcamos um pouco
ou bit invertido
(retornaremos a este tópico abaixo).

Um pouco sobre os números de FibonacciA tabela mostra as linhas que emergem do canto superior esquerdo. Se você criar essa tabela um pouco com coordenadas
- estas linhas podem ser vistas ainda melhor:

Existe outra maneira original de obter essas linhas.
Para cada
e
se
é um divisor
, construa uma sequência de números de Fibonacci:
E marque os pontos no gráfico
e
:

Sequência binária
Por que invertemos o bit quando a largura dos bilhares
? Para mutuamente simples
e
, a trajetória da bola passa por cada célula. Entre as paredes superior e esquerda do bilhar, a bola passa a cada vez um número par de células.


Os bits na coluna da esquerda são os bits invertidos da linha superior. Não aceitamos o zero - a trajetória começa com ele:

Além disso, podemos remover com segurança cada segundo bit dessa sequência (bit
- bit invertido
):

Tem a sequência

para bilhar
. A sequência é exclusiva para todos.
e
.
Qualquer altura
nós não pegamos - a bola sempre segue a trajetória
entre duas reflexões da parede superior. Na parede superior, o movimento sempre começa com um bit "0" (célula preta) e termina com um bit "1" (célula branca):

De fato, a sequência (que destacamos acima -

) mostra de que lado a bola voou: 1 - se a bola voou, refletida na parede direita e 0 - se a bola voou, refletida na parede esquerda. Na figura, a trajetória da bola é marcada em preto se a bola se moveu para a direita e branca se se move para a esquerda:

É interessanteCom a ajuda de bilhar, você pode dividir dois números no sistema binário. No momento de tocar na parede superior ou inferior, fixamos a direção do movimento da bola. Se a bola se moveu para a direita, escrevemos 0. Se para a esquerda, escrevemos 1. Vamos consertar cada
tocando a bola.
Primeiro toque na parede inferior. A bola se moveu para a direita. Fixed 0
O segundo toque é a parede superior. A bola se moveu para a esquerda. Fixed 1
O quarto toque é a parede superior. A bola se moveu para a direita. Fixed 0
O oitavo toque está na parede superior. A bola se moveu para a direita. Fixed 0
Etc.
Got: 0.1001111001111001111 ... é uma notação binária para a fração
.

Esta sequência (

) contém todas as informações necessárias sobre o padrão. Com ele, podemos restaurar o padrão original (e até olhar além da borda inferior do padrão). Pegue um quadrado com os lados
. Organizamos os bits de nossa sequência nos locais em que a bola bate na parede superior (a distância entre os toques adjacentes da bola é de 2 células).

Se o bit correspondente = 1 - começamos a mover para a esquerda, marcando a trajetória através da célula. Se bit = 0 - mova para a direita.

Nesse caso, não esqueça o bit zero:

Gif:

Obtivemos o padrão original (e parecíamos um pouco além da borda inferior):
Script para visualizar sequências binárias
Podemos construir essa sequência usando o restante da divisão.
Bilhar unidimensional
No eixo numérico
pegue dois pontos:
e
.

Movendo-se de um ponto para outro, meça a distância
:

Marcou o ponto. Continuamos a medir a distância a partir deste ponto, mantendo a direção. Se você chegou ao ponto
ou
- mudar de direção:

Como pode ser visto nas figuras acima, o primeiro ponto mostra o local em que a bola toca a parede inferior do bilhar. Este ponto não nos interessa. Nós só vamos consertar pontos
para
.
Como marcar esses pontos? Vire nossos bilhar no eixo
. Marque os pontos
. Agora chegando ao ponto
não mudamos a direção do movimento, mas continuamos a ir ao ponto

.

Múltiplos
, divida nosso eixo em segmentos. Marcamos condicionalmente esses segmentos com uns e zeros (alternados). Nos segmentos marcados com zeros, a bola (em um bilhar retangular) se move da esquerda para a direita. Nos segmentos marcados com unidades - da direita para a esquerda. Ou mais simples: a bola se move da esquerda para a direita se
para
(Atenção especial deve ser dada a esta fórmula. A seguir, retornaremos a ela)É fácil ver que o ponto em que a bola tocou a parede superior do bilhar é o restante da divisão
em
. Nesse caso, não podemos fixar o movimento da bola na direção oposta. Tomamos toda a parte da divisão
em
se for par - consideramos o restante da divisão
em
. Divida o restante resultante por 2 (a distância entre pontos de contato adjacentes é de duas células). Obteve os índices dos elementos da matriz, que precisamos preencher com zeros. Os demais elementos são preenchidos com unidades (a bola se move da parede direita para a esquerda).
Comprimento da sequência =
.
function sequence(m,n){ var md=m/2; var array=[]; for(var k=0;k<md;k++) array[k]=1; for(var k=0;k<md;k++) if(Math.floor(2*k*n/m)%2==0) array[((2*k*n)%m)/2]=0; return array; } console.log(sequence(55, 34).join(''));
Agora podemos construir uma sequência binária para bilhar com qualquer lado
e
(por números naturais).
Alguns exemplos:
144x89 (números de Fibonacci):
010100101101001011010110100101101001010010110100101101011010010110100101
169x70 (números de Pell):
0101011010100101011010100101011010110101001010110101001010110101001010010101101010010
233x55 (números ímpares de Fibonacci
e
):
0100100110110110010011011011001001001101100100100110110010010011011011001001101101100
10010011011001001001101100100100
Outra mesa interessanteGráficos muito interessantes são obtidos se você pegar bilhar com largura
e construir sequências para cada
de
antes
. Em seguida, empilhe essas seqüências.
var array; for(var y=1;y<m;y++){ array=sequence(m,y); for(var x=0;x<array.length;x++){ if(array[x]==0) context.fillRect (x, y, 1, 1); } }
Alguns exemplos
M = 610:

M = 611:

M = 612:

M = 613:

M = 614:
Quanto ao resto M Nós temos sequências. De que outra forma você pode visualizar sequências binárias? Usando
gráficos da tartaruga .
Gráficos de tartaruga
Desenhe uma linha. Em seguida, pegamos alternadamente os bits da nossa sequência. Se bit = 1 - gire o segmento em relação ao anterior
(sentido horário). Se bit = 0 - gire o segmento
. O início do próximo segmento é o fim do anterior.

Tome dois números de Fibonacci grandes o suficiente:
e
.
Construiu a sequência:
00101101001011010010100101101001011010110100101101001010010110100101 ... (257114 caracteres mais zero bits).
Nós visualizamos usando gráficos de tartarugas. O tamanho do segmento inicial é de 10 pixels (o segmento inicial no canto inferior direito):

O tamanho do segmento inicial é de 5 pixels:

O tamanho do segmento inicial é de 1 pixel:

O próximo exemplo são os números de Pell.
Tome
e
.
Sequência:
0010100101011010100101011010100101001010110101001010110101000010101101 (235415 caracteres mais bit zero).
O tamanho do segmento inicial é de 1 pixel:

Outro exemplo são números ímpares de Fibonacci
e
.
Tome
e
.
Sequência:
00110110010010011111001001001001101101100100110110110010010011011011001001 ... (158905 mais zero bit).
Em vez de cantos
e
vamos usar os cantos
e
.
O tamanho do segmento inicial é de 5 pixels:

O tamanho do segmento inicial é de 0,4 pixels:

Esta curva tem um nome - "
palavra fractal de Fibonacci ". A dimensão Hausdorff para esta curva é conhecida:
Script para visualizar seqüências binárias usando Turtle GraphicsO problema
É possível desenhar um padrão para bilhar, cujos lados são incomensuráveis (um dos lados é um número irracional)? A tarefa não é trivial. Tentando resolver esse problema, enfrentaremos várias perguntas:
1. Se as partes são incomensuráveis - não podemos pavimentar os bilhares com células do mesmo tamanho.
2. Se os lados forem incomensuráveis - a bola será refletida infinitamente e nunca atingirá o canto.
3. Sequências de bilhar são preenchidas não em ordem, mas aleatoriamente.

As duas primeiras perguntas, obviamente, não têm solução. Mas se houvesse uma maneira de preencher a sequência em ordem, poderíamos, movendo a sequência da esquerda para a direita, restaurar o padrão da maneira que usamos acima. E assim, ver como o padrão fica no canto superior esquerdo dos bilhar, cujos lados são incomensuráveis.
Magia negra
Tome bilhar, cujos lados são iguais aos números de Fibonacci (com outros números, esse truque pode não funcionar). Coloque a bola nela e fixe o número da bola tocando na parede superior. Preencha os números com branco - se a bola se mover da direita para a esquerda e preto - se a bola se mover da esquerda para a direita:

A cor branca corresponde a uma na sequência, preto - zero. Agora vamos organizar os números em ordem:

Temos exatamente a mesma sequência de uns e zeros.
Para outros númerosA origem é o canto superior esquerdo. Ao longo do eixo
- largura dos bilhares
. Ao longo do eixo
- altura do bilhar
. Pontos brancos indicam números para os quais as seqüências coincidem:

Números para os quais a sequência é invertida:

Fiz upload do
script :

A primeira linha são as coordenadas do mouse, usadas como largura e altura dos bilhares.
A segunda linha são os primeiros 100 bits da sequência obtida através do restante da divisão.
A terceira linha são os primeiros 100 bits da sequência obtida através da paridade da parte inteira.
Cor preta - Renderize a primeira sequência usando gráficos Turtle.
Violeta - visualização da segunda sequência.
De fato, em alguns casos, não precisamos pegar o restante da divisão. Para números de Fibonacci, basta verificar a paridade da parte inteira da divisão
em
:
No numerador, temos
. No denominador -
.
Como você sabe:
- A proporção áurea. Número irracional. Agora podemos escrever nossa fórmula como:
Temos uma fórmula com a qual podemos preencher a sequência de bilhar em ordem, cuja largura é igual a
e altura
. Comprimento da sequência =
, mas podemos restaurar parte do padrão, movendo-se da esquerda para a direita em sequência e olhando para o canto superior esquerdo da mesa de bilhar. Resta descobrir como contar
A unidade dividida pela proporção áurea pode ser reescrita como:
Podemos nos livrar de dois:
Nossa fórmula assume a forma:
Para maior clareza, desenhei uma mesa. Na terceira coluna, descartamos a parte fracionária e deixamos o todo. Na quarta coluna, verificamos a paridade da parte inteira:

Na quarta coluna, temos nossa sequência: 01010010110100 ...
Continuamos a calcular os bits para o resto
. Restaurando parte do padrão de bilhar com lados
e
:

Se você não tira o tempo todo
- então cada segundo bit na sequência é invertido. Temos a fórmula geral:
O que nos impede de usar a raiz quadrada de três ou, digamos, de dois, em vez da raiz quadrada de cinco? Nada.
Construímos uma sequência para
var x=3; var q=[]; for(var k=0;k<256000;k++) q[k]=Math.floor(k*Math.sqrt(x)+k)%2;
Os primeiros bits da sequência:
00100101101001001011010010110110100101101001001011010010010110100101 ...
Vamos visualizar usando gráficos de tartarugas. Ângulos de 90 e -90 graus. O tamanho inicial do segmento é de 5 pixels:

O tamanho do segmento inicial é de 0,5 pixels:

Construímos uma sequência para
var x=2; var q=[]; for(var k=0;k<256000;k++) q[k]=Math.floor(k*Math.sqrt(x))%2;
Os primeiros bits da sequência (
A083035 ):
01001101100100110010011011001101100100110110011011001001100100110110 ...
Ângulos de 90 e -90 graus. O tamanho inicial do segmento é de 5 pixels:

O tamanho do segmento inicial é de 0,5 pixels:

É interessanteNessa curva, você pode restaurar o "padrão de bilhar" e ver o que está ao redor da curva:

Seria interessante pegar
e
para esse padrão.
E issoO número de segmentos na parte repetida da curva =
(Números de referência: 0, 1, 2, 5, 12, 29, 70, 169, 408, 985, 2378, ...).

Ângulos de 60 e -60 graus. O tamanho inicial do segmento é de 5 pixels:
Script de visualizaçãoAlguém pode duvidar que a paridade da parte inteira de
dá uma sequência fractal. Visualizamos parte dessa sequência da segunda maneira:

Para maior clareza, pintei a curva mais longa no padrão resultante:

Esta curva tem um nome - "palavra fractal de Fibonacci".
Como obter essa sequência usando bilhar? Pegamos bilhar, cuja largura = 1 e altura =
. Nos limites superior e inferior, fixamos a direção do movimento da bola. Se a bola se moveu da esquerda para a direita - escreva 0, se da direita para a esquerda - escreva 1.

Dois gráficos:


Você pode continuar nessa linha por muito tempo - os padrões têm muitas propriedades interessantes. Mas o artigo já era muito pesado. Vou contar sobre uma das propriedades interessantes no final.
Ao visualizar imagens, alguns usuários podem sofrer uma convulsão epiléptica.No bilhar binário, começamos a bola no canto superior esquerdo e enchemos a matriz com pedaços.
Para bilhar 610x377:

Parte ampliada do padrão:

Se você iniciar a segunda bola de um ângulo diferente (no canto inferior esquerdo do bilhar 610x377) e marcar os bits que coincidem nas duas trajetórias - obtemos um padrão muito interessante:

Os bits correspondentes são marcados com pixels pretos. Parte ampliada do padrão:

Existem mais duas maneiras de desenhar esse padrão. Um deles foi mencionado no artigo
Perfect shuffle . Segundo:
Vamos desenhar um gráfico da função:
E marque com pontos pretos
:

Parte ampliada do padrão:
