\(\mathbb P(\lambda\to\mu)=\frac{f^{\mu}}{(n+1)\,f^{\lambda}}\)Crescimento de Plancherel Um diagrama de Young crescendo uma caixa por vez com probabilidade proporcional à dimensão do módulo de Specht resultante. A cor mostra o comprimento do gancho.
A matemática, em palavras simples
Imagine empilhar caixas formando uma escada, uma de cada vez. Em cada passo a caixa cai onde pode, mas alguns lugares são "mais populares": um lugar é favorecido na proporção de quantas maneiras há de construir a forma final (essa contagem é \(f^\mu\)). Repita isso sem parar e surge uma forma limite única e surpreendentemente estável. O acaso, deixado sozinho, desenha uma figura definida.
\(r=\cos(k\theta)\)Curvas rosa A família \(r=\cos(k\theta)\) com \(k\) variando lentamente pelos racionais.
A matemática, em palavras simples
Uma rosa é o que se obtém deixando um ponto girar em torno da origem enquanto sua distância ao centro oscila, \(r=\cos(k\theta)\). Se \(k\) é inteiro, aparecem pétalas. Se \(k=p/q\) é uma fração, a curva só se fecha após \(q\) voltas e as pétalas se sobrepõem como uma renda. Aqui \(k\) desliza devagar, e você vê a aritmética simples virar geometria.
\(z_v\ge 4:\; z_v\to z_v-4,\ z_w\to z_w+1\)Pilha de areia abeliana Grãos largados no centro de uma grade desmoronam quando quatro ou mais se acumulam; a ordem dos desmoronamentos não importa.
A matemática, em palavras simples
Jogue grãos de areia em um único ponto. Quando uma pilha chega a quatro grãos, ela desmorona e dá um grão a cada vizinha, que por sua vez pode desmoronar. Curiosamente, o desenho final não depende da ordem em que as pilhas são derrubadas. Essa regra de que "a ordem não importa" torna o padrão tão organizado e esconde uma bela álgebra comutativa.
\(i\mapsto k\,i \pmod N\)Tabuada em um círculo Cordas ligando \(i\) a \(k\,i\) módulo o número de pontos \(N\), com \(k\) variando de 2 a 10. Em \(k=2\) o envelope é uma cardioide; em \(k=3\), uma nefroide.
A matemática, em palavras simples
Coloque \(N\) pontos em um círculo e ligue cada ponto \(i\) ao ponto \(k\,i\), contando ao longo do círculo. Só multiplicação, e no entanto surgem curvas: para \(k=2\) uma cardioide em forma de coração, para \(k=3\) uma nefroide de dois lóbulos. Retas podem "envolver" uma curva, assim como muitas tangentes desenham o contorno de uma dobra.
\(p_{t+1}=p_t+\tfrac{n}{n+3}\,(v-p_t)\)Jogo do caos Um ponto salta repetidamente parte do caminho em direção a um vértice aleatório de um polígono regular. Com 3, 4, 5 e 6 vértices, uma estrutura fractal emerge do puro acaso.
A matemática, em palavras simples
Escolha ao acaso um vértice de um polígono e salte parte do caminho em direção a ele. Repita milhares de vezes. Você esperaria uma mancha, mas surge um fractal nítido. A razão: cada salto encolhe a figura em direção a um vértice, então o padrão só pode ser uma cópia de si mesmo feita de cópias menores. O acaso esconde uma estrutura exata.
\(z(t)=\sum_k c_k\,e^{ikt}\)Epiciclos de Fourier Um pentagrama desenhado por círculos giratórios encadeados, um para cada coeficiente de Fourier. A cada volta entram mais círculos e a curva fica mais nítida.
A matemática, em palavras simples
Ptolomeu explicava os planetas com círculos montados em círculos. Acontece que qualquer curva fechada pode ser desenhada assim: uma longa cadeia de setas giratórias, cada uma com sua velocidade inteira, soma-se em uma ponta que percorre a curva. A soma \(\sum c_k e^{ikt}\) é a ideia de Fourier: movimentos complicados são misturas de rotações simples.
\(\Delta\theta_0=10^{-3}\ \mathrm{rad}\)Pêndulos duplos Oito pêndulos duplos soltos com ângulos iniciais que diferem por \(10^{-3}\) radiano. Começam juntos e depois se separam; a cada 22 segundos de tempo simulado o experimento recomeça.
A matemática, em palavras simples
Um pêndulo simples é previsível; pendure um segundo na ponta dele e tudo muda. Os oito pêndulos começam quase iguais, com diferença de um milésimo de radiano, e por um tempo dançam juntos. Depois se separam completamente. Essa dependência sensível das condições iniciais é o que "caos" significa: as regras são exatas, mas a previsão de longo prazo é inalcançável.
\(\begin{aligned}\dot x&=10(y-x)\\ \dot y&=x(28-z)-y\\ \dot z&=xy-\tfrac83 z\end{aligned}\)Atrator de Lorenz Duas soluções do sistema de Lorenz começando a \(10^{-3}\) de distância. Ambas se acomodam no mesmo atrator em forma de borboleta, mas logo seguem caminhos sem relação: o efeito borboleta. O valor \(\Delta\) é a distância entre elas.
A matemática, em palavras simples
Edward Lorenz encontrou estas três equações simples ao modelar o clima. Cada trajetória gira em torno de dois lóbulos como uma borboleta, sem nunca se repetir ou se cruzar. Duas trajetórias que começam muito próximas ficam na mesma borboleta, mas logo seguem rotas diferentes. O efeito borboleta não é uma metáfora: é um fato matemático sobre este sistema.
\(x_{n+1}=r\,x_n(1-x_n)\)Diagrama de bifurcação Comportamento de longo prazo da aplicação logística \(x\mapsto rx(1-x)\) com \(r\) de 2,8 a 4: ponto fixo, duplicação de período, e então caos com janelas de ordem.
A matemática, em palavras simples
A regra \(x\mapsto rx(1-x)\) modela uma população: cresce quando pequena, se aperta quando grande. Para \(r\) baixo ela se estabiliza em um valor. Aumente \(r\) e ela passa a alternar entre dois, depois quatro, depois oito valores, dobrando cada vez mais rápido até nunca se estabilizar: caos. Dentro do caos, janelas de calma reaparecem. O mesmo padrão de duplicações surge em sistemas muito diferentes.
Esboços interativos
Clique em uma miniatura para abrir o esboço com seus controles: controles deslizantes e botões recalculam tudo ao vivo no seu navegador.
Empacotamento de círculos em um retângulo
n círculos iguais são inflados e afastados dentro de um retângulo até que nenhum possa crescer. O raio encontrado é um bom empacotamento (nem sempre o ótimo) e círculos em contato são ligados por segmentos.
\(\max r \ \text{s.t.}\ \|p_i-p_j\|\ge 2r,\ p_i\in[r,W-r]\times[r,H-r]\)
A matemática, em palavras simples
Quão grandes podem ser \(n\) moedas iguais se todas precisam caber em uma caixa sem se sobrepor? Para poucas moedas a melhor disposição é conhecida; para muitas, é um problema em aberto. A simulação infla as moedas e deixa que se empurrem até travar. O estado travado é um bom empacotamento, mas nem sempre o melhor: muitos ótimos locais, um vencedor global.
\(\max r \ \text{s.t.}\ \|p_i-p_j\|\ge 2r,\ p_i\in[r,W-r]\times[r,H-r]\)Empacotamento de círculos em um retângulo n círculos iguais são inflados e afastados dentro de um retângulo até que nenhum possa crescer. O raio encontrado é um bom empacotamento (nem sempre o ótimo) e círculos em contato são ligados por segmentos.
Círculos de Apolônio
Para dois focos A e B, o lugar geométrico |PA| = k·|PB| é um círculo (vermelho); os círculos que passam por A e B (azul) cortam todos eles em ângulo reto. Juntos formam a grade bipolar.
Tome dois pontos A e B. Os pontos cujas distâncias a A e a B têm uma razão fixa formam um círculo perfeito, não uma elipse nem outra coisa. Os círculos vermelhos de razões diferentes nunca se tocam, e os azuis que passam por A e B cruzam cada círculo vermelho exatamente em ângulo reto. Duas famílias de círculos que se encaixam como uma rede tecida.
\(\frac{|PA|}{|PB|}=k,\qquad R=\frac{2ck}{|k^2-1|}\)Círculos de Apolônio Para dois focos A e B, o lugar geométrico |PA| = k·|PB| é um círculo (vermelho); os círculos que passam por A e B (azul) cortam todos eles em ângulo reto. Juntos formam a grade bipolar.
Figuras de Lissajous
Duas oscilações perpendiculares com frequências inteiras \(a\) e \(b\) e defasagem \(\delta\). Razões racionais dão curvas fechadas; variar \(\delta\) faz a figura girar como uma fita.
\(x=A\sin(at+\delta),\quad y=B\sin(bt)\)
A matemática, em palavras simples
Faça um ponto oscilar para a esquerda e direita em uma velocidade e para cima e baixo em outra. Se as velocidades estão na razão de números inteiros pequenos, como 3 para 2, o caminho se fecha em uma laçada limpa. Mudar a fase faz a figura girar como uma fita 3-D. São as curvas que um osciloscópio desenha, e uma forma visual de "ver" um intervalo musical.
\(x=A\sin(at+\delta),\quad y=B\sin(bt)\)Figuras de Lissajous Duas oscilações perpendiculares com frequências inteiras \(a\) e \(b\) e defasagem \(\delta\). Razões racionais dão curvas fechadas; variar \(\delta\) faz a figura girar como uma fita.
Epiciclos de Fourier
Desenhe uma curva fechada com o mouse ou o dedo; a transformada de Fourier discreta a converte em uma cadeia de círculos giratórios cuja ponta redesenha o traço. Use menos círculos para ver a aproximação piorar.
\(z(t)=\sum_{k=-m}^{m} c_k\,e^{ikt}\)
A matemática, em palavras simples
Qualquer laço que você desenhar pode ser reconstruído com círculos. O computador mede quanto de cada velocidade de giro se esconde no desenho (a transformada discreta de Fourier) e empilha um círculo por velocidade. Os círculos grandes carregam a forma geral, os pequenos acrescentam as quinas. Fala, música e imagens são comprimidas com essa mesma ideia: guarde os círculos grandes, descarte os minúsculos.
\(z(t)=\sum_{k=-m}^{m} c_k\,e^{ikt}\)Epiciclos de Fourier Desenhe uma curva fechada com o mouse ou o dedo; a transformada de Fourier discreta a converte em uma cadeia de círculos giratórios cuja ponta redesenha o traço. Use menos círculos para ver a aproximação piorar.
Conjuntos de Mandelbrot e Julia
À esquerda: o conjunto de Mandelbrot; clique ou arraste para escolher \(c\). À direita: o conjunto de Julia de \(z^2 + c\) para esse \(c\). Dê zoom com o controle e mude o limite de iterações.
\(z_{n+1}=z_n^2+c\)
A matemática, em palavras simples
Escolha um número \(c\), comece em 0 e repita \(z\mapsto z^2+c\). Ou os valores ficam limitados ou disparam. O conjunto de Mandelbrot é o mapa de todos os \(c\) para os quais ficam. Cada ponto desse mapa tem também seu conjunto de Julia à direita: conexo quando \(c\) está dentro, poeira quando está fora. Uma regra minúscula, detalhes sem fim.
\(z_{n+1}=z_n^2+c\)Conjuntos de Mandelbrot e Julia À esquerda: o conjunto de Mandelbrot; clique ou arraste para escolher \(c\). À direita: o conjunto de Julia de \(z^2 + c\) para esse \(c\). Dê zoom com o controle e mude o limite de iterações.
Transformações de Möbius da grade de Apolônio
Uma transformação de Möbius leva círculos em círculos. Aqui ela age sobre a grade bipolar de círculos de Apolônio; mude os parâmetros e veja a família se curvar sem deixar de ser formada por círculos.
\(w=\frac{az+b}{cz+d},\quad ad-bc\neq 0\)
A matemática, em palavras simples
Uma transformação de Möbius \(w=\frac{az+b}{cz+d}\) pode esticar, girar, encolher e inverter o plano, mas nunca transforma um círculo em algo que não seja um círculo (uma reta conta como círculo passando pelo infinito). Por isso a grade de círculos se curva, mas mantém seu caráter e seus cruzamentos em ângulo reto. As transformações de Möbius são as simetrias da geometria conforme da esfera.
\(w=\frac{az+b}{cz+d},\quad ad-bc\neq 0\)Transformações de Möbius da grade de Apolônio Uma transformação de Möbius leva círculos em círculos. Aqui ela age sobre a grade bipolar de círculos de Apolônio; mude os parâmetros e veja a família se curvar sem deixar de ser formada por círculos.
O jogo do caos
Escolha um vértice aleatório de um polígono e salte uma fração fixa do caminho em direção a ele, repetidamente. Para a fração certa surge um fractal: o triângulo de Sierpiński, o fractal de Vicsek e parentes.
\(p_{k+1}=p_k+r\,(v_{j}-p_k)\)
A matemática, em palavras simples
Escolha ao acaso um vértice de um polígono e salte parte do caminho em direção a ele. Repita milhares de vezes. Você esperaria uma mancha, mas surge um fractal nítido. A razão: cada salto encolhe a figura em direção a um vértice, então o padrão só pode ser uma cópia de si mesmo feita de cópias menores. O acaso esconde uma estrutura exata.
\(p_{k+1}=p_k+r\,(v_{j}-p_k)\)O jogo do caos Escolha um vértice aleatório de um polígono e salte uma fração fixa do caminho em direção a ele, repetidamente. Para a fração certa surge um fractal: o triângulo de Sierpiński, o fractal de Vicsek e parentes.
A árvore de Collatz
Todo número n leva a 1 pela regra n ↦ n/2 (par) ou 3n+1 (ímpar). A árvore de todas as órbitas inversas a partir de 1 é desenhada até uma profundidade escolhida, com ângulos de giro que você controla.
Escolha um número. Se for par, divida por dois; se ímpar, multiplique por três e some um. Repita. Todos que tentaram terminaram em 1, mas ninguém consegue provar que isso sempre acontece, e o problema está aberto desde 1937. A árvore mostra todos os números que chegam a 1 em um dado número de passos, ramificando como uma planta que ninguém entende por completo.
\(n\mapsto\begin{cases}n/2 & n\text{ even}\\ 3n+1 & n\text{ odd}\end{cases}\)A árvore de Collatz Todo número n leva a 1 pela regra n ↦ n/2 (par) ou 3n+1 (ímpar). A árvore de todas as órbitas inversas a partir de 1 é desenhada até uma profundidade escolhida, com ângulos de giro que você controla.
Diagramas de Voronoi e triangulações de Delaunay
Cada ponto domina a célula dos pontos mais próximos dele do que de qualquer outro (Voronoi); ligar os pontos cujas células se tocam dá a triangulação de Delaunay, cujos círculos circunscritos não contêm nenhum ponto. Arraste, crie ou apague pontos, deixe-os à deriva ou aplique o relaxamento de Lloyd e veja as células virarem uma tesselação centroidal, quase hexagonal.
Espalhe algumas cidades em um mapa e dê cada casa à cidade mais próxima. As regiões são as células de Voronoi, sempre polígonos convexos. Ligue as cidades cujas regiões compartilham fronteira e você obtém a triangulação de Delaunay, que evita triângulos finos tanto quanto possível. Antenas de celular, grãos de cristal e territórios de animais seguem esse padrão.
\(V(p_i)=\{x:\ \|x-p_i\|\le\|x-p_j\|\ \forall j\}\)Diagramas de Voronoi e triangulações de Delaunay Cada ponto domina a célula dos pontos mais próximos dele do que de qualquer outro (Voronoi); ligar os pontos cujas células se tocam dá a triangulação de Delaunay, cujos círculos circunscritos não contêm nenhum ponto. Arraste, crie ou apague pontos, deixe-os à deriva ou aplique o relaxamento de Lloyd e veja as células virarem uma tesselação centroidal, quase hexagonal.
Pontilhismo de Voronoi de uma fotografia
Os pontos são levados ao centro de massa da sua célula de Voronoi, ponderado pelo brilho da imagem (algoritmo de Lloyd), até que só os pontos redesenhem a figura. Começa com Einstein; envie a sua foto (ela não sai do seu navegador) ou arraste uma sobre a figura, e salve o resultado como PNG ou JPG.
Apenas pontos. Cada ponto fica no centro de equilíbrio da região do papel que está mais perto dele do que de qualquer outro, ponderada pelo brilho da foto ali. Repetir o equilíbrio espalha pontos densamente onde a imagem é escura e esparsamente onde é clara, e a imagem surge só de pontos, como uma foto de jornal desenhada por um matemático.
\(x_i\leftarrow\frac{\int_{V_i} \rho(x)\,x\,dx}{\int_{V_i} \rho(x)\,dx}\)Pontilhismo de Voronoi de uma fotografia Os pontos são levados ao centro de massa da sua célula de Voronoi, ponderado pelo brilho da imagem (algoritmo de Lloyd), até que só os pontos redesenhem a figura. Começa com Einstein; envie a sua foto (ela não sai do seu navegador) ou arraste uma sobre a figura, e salve o resultado como PNG ou JPG.
Esboços em laço
Branco e cores sobre preto. Cada um se repete para sempre e traz um pedaço de matemática; clique para ampliar.
\(k=n\pi r^{2},\qquad k_{\mathrm{perc}}\approx 4.51,\qquad k_{\mathrm{conn}}\approx\ln n\)Grafo geométrico aleatório 160 pontos vagam sobre um toro e dois são ligados quando estão a menos de \(r\) um do outro, enquanto \(r\) respira lentamente. Pontos isolados esmaecem, componentes pequenas ganham cor própria e a componente gigante fica branca no grau médio \(k = n\pi r^2 \approx 4{,}51\) (percolação contínua); o grafo todo só fica conexo perto de \(k=\ln n\) (Penrose). O gráfico mostra a fração da maior componente enquanto r varia.
A matemática, em palavras simples
Espalhe pontos ao acaso e ligue os que estão próximos. Com poucas ligações por ponto você vê apenas ilhazinhas; quando o número médio de vizinhos passa de cerca de 4,5, um aglomerado gigante aparece de repente (uma transição de fase, como a água congelando). Perto de \(\ln n\) vizinhos, quase todo ponto está conectado. As redes passam de fragmentos a um todo de modo muito abrupto.
\((x,y)\mapsto(x+A\sin y,\;y),\qquad (x,y)\mapsto(x,\;y+A\sin x),\qquad \det=1\)Misturar e desmisturar 62.500 partículas coloridas sobre um toro são misturadas por cisalhamentos alternados, x ↦ x + A sen y e depois y ↦ y + A sen x. Cada cisalhamento preserva a área, então o fluxo é incompressível e, mesmo assim, caótico: as faixas de cor são esticadas e dobradas em filamentos cada vez mais finos. Cada passo é invertível, e por isso o filme depois corre ao contrário e a imagem original reaparece exatamente, como no experimento do corante de G. I. Taylor.
A matemática, em palavras simples
Mexer o café com uma colher o mistura, e é isso que estes cisalhamentos fazem com os pontos coloridos. Mas cada cisalhamento preserva a área e é perfeitamente reversível: execute-o ao contrário e a imagem original volta exata. Misturar não é perder informação, apenas escondê-la em dobras finas. A desordem pode ser um rearranjo exato e desfazível.
\(\dot\theta_i=\kappa\,\mathrm{Arg}\Big(e^{-i\theta_i}\sum_{j\sim i}e^{i\theta_j}\Big)+\sqrt{2D}\,\xi_i,\qquad \psi=\Big|\frac1n\sum_j e^{i\theta_j}\Big|\)Bando em voo: modelo de Vicsek 180 aves voam com velocidade constante e continuam girando para a direção média dos vizinhos, contra um ruído aleatório de intensidade \(D\). A cor é a direção. Quando o ruído diminui, o bando de repente se alinha em uma direção comum, uma transição de fase medida pelo parâmetro de ordem \(\psi\) no gráfico; quando o ruído aumenta, o bando se dissolve de novo.
A matemática, em palavras simples
Cada ave segue uma regra: olhar para as vizinhas e virar para a direção média delas, com uma pequena oscilação aleatória. Sem líder, sem plano. Com pouco ruído o bando inteiro se alinha em uma direção comum; com muito, se desfaz na confusão. O número \(\psi\), entre 0 e 1, mede o quanto o bando está alinhado, e salta de baixo para alto quando o ruído diminui.
\(x_i=\frac{\int_{V_i}x\,\rho(x)\,dx}{\int_{V_i}\rho(x)\,dx},\qquad x_i(s)=(1-s)\,x_i^{E}+s\,x_{\sigma(i)}^{T}\)Pontilhismo: Einstein e Tesla 18.000 pontos, cada um no centro de massa da sua célula de Voronoi sob o brilho de um retrato (algoritmo de Lloyd), de modo que só os pontos redesenham a fotografia. Emparelhar os dois conjuntos de pontos um a um por transporte ótimo faz cada ponto deslizar em linha reta do lugar de Einstein para o de Tesla. A volta usa exatamente o mesmo caminho, e assim o laço se fecha com exatidão. No meio do caminho, o d3-delaunay calcula ao vivo, no seu navegador, o diagrama de Voronoi dos pontos em movimento na ida e o seu dual, a triangulação de Delaunay, na volta.
A matemática, em palavras simples
Apenas pontos. Cada ponto fica no centro de equilíbrio da região do papel que está mais perto dele do que de qualquer outro ponto, ponderada pelo quanto a foto é escura ali. Repetir isso espalha pontos densamente nas áreas escuras e esparsamente nas claras, e um rosto emerge. A transição leva cada ponto a um parceiro no segundo retrato, com parceiros escolhidos para que a distância total percorrida seja a menor possível.
\(\Pr(\sigma_i\to-\sigma_i)=\min\bigl(1,e^{-\Delta E/T}\bigr),\qquad T_c=\frac{2}{\ln(1+\sqrt2)}\approx2.269\)O modelo de Ising: esfriando através de Tc 25.600 spins, cada um para cima (laranja) ou para baixo (azul), viram pela regra de Metropolis: sempre que isso baixa a energia, e senão com probabilidade \(e^{-\Delta E/T}\). A temperatura oscila e, ao cruzar o valor crítico \(T_c=2/\ln(1+\sqrt2)\approx2{,}269\), a espuma aleatória se junta em domínios enormes e surge uma magnetização, que derrete de novo no aquecimento. O gráfico acompanha \(|m|\) contra \(T\); a curva branca é o resultado exato de Onsager, \(\bigl(1-\operatorname{senh}^{-4}(2/T)\bigr)^{1/8}\).
A matemática, em palavras simples
Cada spin só quer concordar com seus quatro vizinhos, e o calor não para de tirá-los dessa concordância. Quente, a imagem é só chuvisco; frio, uma cor domina a folha inteira. No meio, em exatamente uma temperatura, aparecem manchas de todos os tamanhos ao mesmo tempo, e a magnetização \(|m|\) liga com inclinação infinita. Lars Onsager resolveu isso exatamente em 1944.
\(u_t=D_u\Delta u-uv^{2}+F(1-u),\quad v_t=D_v\Delta v+uv^{2}-(F+k)v\)Padrões de Turing: Gray–Scott Duas substâncias se difundem e reagem sobre um toro: \(u\) é alimentada com taxa \(F\), \(v\) é removida com taxa \(k\), e \(u+2v\to3v\). O estado uniforme perde a estabilidade por causa da difusão e brotam pontos, listras e labirintos, como no artigo de Turing de 1952 sobre morfogênese. As taxas de alimentação e remoção percorrem uma vez o laço desenhado no gráfico, e o padrão não para de se dividir, esticar e se rearranjar conforme o ponto cruza os regimes.
A matemática, em palavras simples
Alan Turing mostrou em 1952 que duas substâncias que se difundem com velocidades diferentes podem transformar uma mistura perfeitamente lisa em pontos e listras, uma possível receita para a pelagem dos animais. Aqui uma substância alimenta outra que a consome de volta, e mexer um pouquinho nas taxas \(F\) e \(k\) troca pontos por vermes e por labirintos.
Arte com polinômios e matrizes
Imagens feitas de milhões de raízes ou autovalores. Clique numa imagem para abrir o esboço com seus controles e sua explicação.
Arte com raízes de polinômios Sorteie dois pontos na circunferência unitária, resolva uma equação de grau 8 e marque as oito raízes; faça isso milhões de vezes e surge uma figura brilhante e translúcida. Segundo a arte matemática de Simone Conradi.
Arte com raízes de polinômios
Sorteie dois pontos na circunferência unitária, resolva uma equação de grau 8 e marque as oito raízes; faça isso milhões de vezes e surge uma figura brilhante e translúcida. Segundo a arte matemática de Simone Conradi.
O artista
Esta página se baseia na arte matemática de Simone Conradi, que publica seu trabalho em profconradi.github.io: imagens computacionais de raízes de polinômios e de padrões no plano complexo, e simulações de física, tudo escrito em Python (o lema do site dele é “Where mathematics becomes visible”, “onde a matemática se torna visível”). No GitHub (profConradi) ele compartilha notebooks sobre fractais, imagens de autovalores (“eigenfish”), vida artificial e outras simulações em Python, o que coloca esse tipo de imagem num hábito mais amplo de olhar para a matemática calculando-a.
A imagem que inspirou este esboço é assinada “Simone Conradi, 2024” e traz o polinômio impresso no alto. A ideia, o polinômio e o aspecto geral são dele. O código desta página é uma reimplementação minha e as cores foram ajustadas a olho, não copiadas dos arquivos dele; pequenas diferenças são esperadas. Visite a página dele e veja os originais.
(A forma impressa traz o coeficiente do meio como \(-500i\,t_1^3+500i\,t_1^2-500\,t_1+500i\); pondo \(500i\) em evidência obtém-se a forma acima, e \(1{,}5625=25/16\).) Todos os termos têm fator \(x^2\), logo \(P=x^2Q\) com
A raiz dupla em \(0\) é a mesma para todos os parâmetros e é descartada; o desenho mostra as oito raízes de \(Q\). Escreva \(t_1=e^{i\alpha}\) e \(t_2=e^{i\beta}\): os parâmetros vivem num toro \(\mathbb T^2=S^1\times S^1\), e cada ponto \((\alpha,\beta)\) dele dá oito pontos do plano. Dois fatos simples valem para todos (verifiquei numericamente): \(Q\) não tem termo em \(x^7\), então as oito raízes sempre têm centro de massa \(0\); e o produto delas é \(\tfrac{25/16}{16}=\tfrac{25}{256}\), de modo que a média geométrica dos módulos é sempre \((25/256)^{1/8}\approx0{,}748\). Tipicamente quatro raízes são pequenas (perto de \(0{,}2\)) e quatro são grandes (de \(2\) a \(4\)): as pequenas formam o pequeno ornamento no centro, as grandes formam a grande figura de três lóbulos.
A imagem é o conjunto de todas as raízes quando os parâmetros percorrem o toro, desenhado com uma densidade. Esse conjunto tem uma descrição simples. Resolvendo \(Q(x)=0\) em \(t_2\), obtém-se
Assim, um ponto \(x\) do plano é raiz para algum par de parâmetros exatamente quando \(|1+iR_{t_1}(x)|=1\) para algum \(t_1\) na circunferência, isto é, quando \(R_{t_1}(x)\) está na circunferência de raio \(1\) centrada em \(i\). Para \(t_1\) fixo, as raízes formam portanto uma curva: a pré-imagem de uma circunferência por uma aplicação racional de grau \(8\). Quando \(t_1\) dá uma volta, a curva se move e varre uma região. O desenho é a união de todas essas curvas.
Por que anéis e buracos
A aplicação \((\alpha,\beta)\mapsto x\) vai de uma superfície (o toro, coberto oito vezes pelas folhas das raízes) para o plano, então preenche regiões em vez de traçar curvas. Onde a derivada degenera (uma dobra), os pontos do toro dos dois lados da dobra são enviados para o mesmo lado de uma curva e se acumulam ali: para uma dobra genérica a densidade de pontos cresce como \(1/\sqrt{d}\), sendo \(d\) a distância à curva da dobra. É o mesmo mecanismo das linhas brilhantes (cáusticas) no fundo de uma xícara de café ao sol, e é o que se vê como anéis brilhantes e bordas nítidas. Os buracos escuros são pontos \(x\) para os quais nenhuma escolha de \((t_1,t_2)\) nas circunferências produz uma raiz. Onde várias folhas se sobrepõem, as densidades se somam, o que dá o aspecto em camadas e translúcido.
Como o desenho é calculado
Sorteie \(\alpha,\beta\) uniformemente; faça \(t_1=e^{i\alpha}\), \(t_2=e^{i\beta}\) e monte \(A\) e \(B\).
Ache as oito raízes de \(Q\) pela iteração de Aberth–Ehrlich, um método de Newton simultâneo em que cada aproximação repele as outras: com \(N_k=Q(z_k)/Q'(z_k)\), \[z_k\leftarrow z_k-\frac{N_k}{1-N_k\sum_{j\ne k}\frac{1}{z_k-z_j}}.\] Comece numa circunferência e pare quando cada passo for menor que \(10^{-11}\). Acha todas as raízes de uma vez e é bem mais rápida do que montar um problema de autovalores para cada amostra. (As raízes também podem ser calculadas como autovalores da matriz companheira, que é provavelmente o que um script Python faria com numpy.roots.)
Coloque cada raiz numa grade de pixels. Em vez de acender um só pixel, uma raiz de peso \(1\) é repartida entre os quatro pixels mais próximos (pesos bilineares). Isso funciona como um ponto muito menor e elimina o aspecto quadriculado dos histogramas de um pixel.
Para cada pixel guardam-se três números: o peso total e as somas de \(\cos\alpha\) e \(\sin\alpha\) dos parâmetros que produziram as raízes ali (a direção delas é a média local de \(t_1\)).
Mapeamento de tons. Após um leve suavizado \(3\times3\), o peso \(n\) vira um brilho \(v=\bigl(\ln(1+n/p)/\ln(1+q/p)\bigr)^{\gamma}\), em que \(p\) e \(q\) são percentis baixo e alto da imagem, de modo que as regiões tênues continuam visíveis ao lado dos anéis brilhantes. A cor vem de uma rampa verde-azulado → salmão → creme em \(v\), com as franjas de baixa densidade tingidas de azul ou carmim conforme a direção média de \(t_1\). A rampa foi ajustada a olho a cores amostradas da imagem de Conradi, que é mais quente do que minha primeira tentativa.
Muitas threads (Web Workers) calculam amostras aleatórias diferentes ao mesmo tempo e enviam suas imagens parciais à página, que as soma. Um par custa algo como alguns milhares de operações aritméticas, então milhões de pares levam de segundos a minutos conforme o computador.
Por que milhões de pares? É uma imagem de Monte Carlo: o ruído num pixel cai como \(1/\sqrt{n}\), então quatro vezes mais pares reduzem o granulado à metade. Com algumas centenas de milhares de pares o interior parece arenoso; com vários milhões vira um brilho suave e aparece a estrutura fina dos anéis. Uma tela maior precisa de proporcionalmente mais pontos para a mesma suavidade, e por isso a resolução e o número de pares são controles separados.
Cores e HDR. Além dos esquemas papel, script e gradiente descritos abaixo, o menu Cores tem doze rampas: o quente, ajustado à imagem de Conradi, minha primeira paleta verde-azulado e salmão, brasa, gelo, aurora, crepúsculo, ouro, um tipo viridis, matizes pastel e vivos da fonte de cor (\(t_1\), \(t_2\) ou o índice da raiz), creme e branco. Se a sua tela e o navegador mostram alto alcance dinâmico (por exemplo a tela XDR de um MacBook Pro ou um iPhone, num navegador compatível), aparece uma caixa de seleção: a imagem passa a ser desenhada num canvas WebGPU em faixa estendida e as cristas mais brilhantes são multiplicadas, em luz linear, por até o fator escolhido, de modo que brilham mais que o branco da página. A caixa fica oculta quando o navegador não informa tela HDR e mapeamento de tons estendido; se você acha que seu aparelho suporta, acrescente ?hdr=1 ao endereço para forçar. O PNG salvo é sempre a versão padrão (SDR).
Tem importância, ou é só uma imagem bonita?
Minha resposta franca: é arte experimental com matemática de verdade dentro, mas não conheço teorema sobre este polinômio em particular, nem sei como ele foi encontrado. Os números \(500\) e \(25/16\) parecem ajustados à mão: o fator grande \(500\) faz os termos do meio competirem com os termos \(16x^8\) e constante em módulos onde quatro raízes estão perto de \(0{,}2\) e quatro perto de \(3\), e pequenas mudanças alteram muito a imagem (experimente os controles). O caminho mais provável é o de quem experimenta: escolher uma família de polinômios com parâmetros unimodulares, desenhar, ajustar os coeficientes, repetir.
Várias ideias reais aparecem nela, porém. As raízes dependem continuamente dos coeficientes, então um toro de parâmetros é levado a uma mancha bidimensional. Dobras e a densidade \(1/\sqrt{d}\) são teoria de singularidades padrão (dobras e cúspides de Whitney, as mesmas cáusticas da óptica). O conjunto das raízes possíveis de uma família de polinômios é exatamente a questão da “estabilidade robusta” em teoria de controle (para onde podem ir as raízes se os coeficientes variam num conjunto?), e imagens de raízes de famílias estruturadas são uma velha tradição matemática: as raízes de todos os polinômios com coeficientes inteiros pequenos (“The beauty of roots”, de John Baez), de polinômios de Littlewood, ou as imagens de autovalores de matrizes aleatórias e estruturadas. Aqui os parâmetros são dois ângulos, a menor família que preenche regiões e ainda tem dobras que se podem acompanhar à mão.
Para experimentar: ponha a ampliação perto de \(9\times\) para ver o pequeno ornamento perto da origem; clique na figura para recentrar; mude \(c\) e veja os buracos se moverem e se fundirem; mude \(s\) para ver a forma inflar ou colapsar; compare “matiz por \(t_1\)” com “matiz por \(t_2\)” para ver qual parâmetro leva cada raiz para onde.
O termo constante \(c\)
O controle de \(c\) (de \(0\) a \(500\), em escala cúbica para que os valores pequenos sejam fáceis de alcançar, mais uma caixa para o valor exato) multiplica o último coeficiente: \(Q(x)=16x^{8}+A\,x^{5}+B\,x^{4}+c/16\) (a menos do fator \(16\) que foi dividido). Ele controla o tamanho do detalhe central da imagem: \(c\) pequeno o encolhe e \(c\) grande o aumenta. O valor inicial \(c=1{,}5626\) é próximo do \(25/16=1{,}5625\) da imagem impressa; o script Python abaixo usa \(c=18{,}345\). Para \(c=0\) o polinômio tem uma raiz de multiplicidade quatro em \(0\), e a imagem trata esse caso também.
Cores, a ferramenta de gradiente e a placa gráfica
O esquema papel pinta tinta pastel translúcida sobre fundo claro. O esquema script é o do script Python abaixo: o matiz é o ângulo do primeiro parâmetro (\(t_1\) ou \(\alpha\)), a saturação é \(0{,}8\) e o brilho cresce de \(0{,}2\) a \(1\) com o ângulo do segundo parâmetro (\(t_2\) ou \(\beta\)), sobre preto. Com meu gradiente você desenha as cores: clique na barra para criar uma parada de cor, arraste uma parada para movê-la, mude sua cor na caixa de cor e use as predefinições ou Inverter como ponto de partida. O gradiente pode colorir a densidade (escuro onde caem poucas raízes, claro onde caem muitas) ou a fonte de cor (o gradiente dá uma volta completa, então um gradiente cuja última parada é igual à primeira não tem emenda). O estado do gradiente viaja no link de Compartilhar.
Se o navegador oferece WebGPU, a caixa Usar a placa gráfica leva o cálculo para a GPU. Cada thread da GPU recebe um par de parâmetros e encontra todas as raízes do polinômio de uma vez com a iteração de Aberth–Ehrlich, \[z_k\leftarrow z_k-\frac{1}{\dfrac{p\,\prime(z_k)}{p(z_k)}-\displaystyle\sum_{j\ne k}\frac{1}{z_k-z_j}},\qquad k=1,\dots,n,\]e milhares de threads rodam lado a lado, cada uma para um par \((t_1,t_2)\) diferente. Para as matrizes a GPU usa uma fórmula fechada (o anel) ou uma iteração de Hessenberg–QR (as outras famílias). Com a GPU ligada, os limites sobem para \(2\times10^{8}\) amostras e resolução de \(2160\) pixels. A GPU trabalha em 32 bits, o bastante para uma imagem, não para uma resposta certificada; a família de matrizes com blocos de Toeplitz não normais é tão sensível a erros de arredondamento que sempre roda na CPU, em 64 bits. Desmarque a caixa para comparar os dois caminhos.
Experimente você mesmo em Python
Um script autônomo que desenha uma imagem como esta no seu próprio computador. Precisa de numpy e matplotlib (pip install numpy matplotlib), roda de alguns segundos a um minuto e grava um PNG; mude N, as cores, o fundo ou os parâmetros e rode de novo.
# Root art: the roots of P(x) = 16 x^10 + 500i (t2-1) x^7 + 500i (1 + i t1 + t1^2 - t1^3) x^6 + (25/16) x^2
# for many random pairs (t1, t2) on the unit circle, drawn as translucent pastel ink on paper.
# After the mathematical art of Simone Conradi (profconradi.github.io). Needs: pip install numpy matplotlib
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import hsv_to_rgb
N = 200_000 # number of pairs (t1, t2); try 20_000 first
SIZE = 1000 # pixels per side
C_CONST = 25 / 16 # the constant term of P; try 1.5626 or 18.345 (the picture's central detail grows with it)
HALF = 4.45 # the picture shows the square [-HALF, HALF]^2
PAPER = (0.957, 0.941, 0.902) # background colour; try (0, 0, 0) for black
# Colour scheme: "paper" (translucent pastel ink on a light background), "script" (hue = angle of the first
# parameter, saturation 0.8, brightness 0.2 ... 1 from the second angle, on black) or "gradient" (your own colours below)
SCHEME = "paper"
GRADIENT = [(0.0, "#05030f"), (0.25, "#3a0f6b"), (0.5, "#c2185b"), (0.75, "#ff8a3d"), (1.0, "#fff3c4")] # (position 0..1, colour)
GRADIENT_FOR = "density" # "density" (dark = few roots) or "source" (the gradient is looped over the colour source; make the last colour equal the first)
rng = np.random.default_rng(1)
a1, a2 = rng.random(N) * 2 * np.pi, rng.random(N) * 2 * np.pi
t1, t2 = np.exp(1j * a1), np.exp(1j * a2)
# P = x^2 * Q, with Q of degree 8; make Q monic and take the eigenvalues of its companion matrix
c5 = 500j * (t2 - 1) / 16 # coefficient of x^5
c4 = 500j * (1 + 1j * t1 + t1**2 - t1**3) / 16 # coefficient of x^4
c0 = np.full(N, C_CONST / 16, dtype=complex) # constant term
C = np.zeros((N, 8, 8), dtype=complex)
C[:, 1:, :-1] = np.eye(7) # ones below the diagonal
C[:, 0, 2] = -c5 # first row: minus the coefficients of x^7 ... x^0
C[:, 0, 3] = -c4
C[:, 0, 7] = -c0
roots = np.linalg.eigvals(C) # shape (N, 8); the other two roots of P are 0
# colour of each root: its hue is the angle of t1 (use a2 or the root index for other looks)
hue = np.repeat(a1 / (2 * np.pi), 8)
x, y = roots.real.ravel(), roots.imag.ravel()
# histograms: how many roots per pixel, and the average hue direction (cos and sin) per pixel
rng_ = [[-HALF, HALF], [-HALF, HALF]]
kw = dict(bins=SIZE, range=rng_)
n, _, _ = np.histogram2d(y, x, **kw)
cs, _, _ = np.histogram2d(y, x, weights=np.cos(2 * np.pi * hue), **kw)
sn, _, _ = np.histogram2d(y, x, weights=np.sin(2 * np.pi * hue), **kw)
un, _, _ = np.histogram2d(y, x, weights=np.repeat(a2 / (2 * np.pi), 8), **kw) # mean of the second angle, for the script colours
# tone map: logarithm of the density, scaled by a high percentile, then alpha-composite ink over the paper
dens = np.log1p(n / max(np.percentile(n[n > 0], 6), 1e-9))
v = np.clip(dens / np.percentile(dens[n > 0], 99.7), 0, 1)
alpha = np.clip(0.9 * v**0.55, 0, 1)[..., None]
h = (np.arctan2(sn, cs) / (2 * np.pi)) % 1
conc = np.clip(np.hypot(cs, sn) / np.maximum(n, 1) * 1.5 + 0.3, 0, 1)
ink = hsv_to_rgb(np.dstack([h, 0.78 * conc, np.full_like(h, 0.93)]))
if SCHEME == "paper":
img = np.array(PAPER) * (1 - alpha) + ink * alpha
elif SCHEME == "script":
m = np.maximum(n, 1)
bright = 0.2 + 0.8 * np.clip(un / m, 0, 1)
col = hsv_to_rgb(np.dstack([h, np.full_like(h, 0.8), bright]))
a2_ = np.clip(v**0.6, 0, 1)[..., None]
img = col * a2_ # on black
else:
from matplotlib.colors import to_rgb
pos = np.array([p for p, _ in GRADIENT]); cols = np.array([to_rgb(c) for _, c in GRADIENT])
lut = lambda t: np.stack([np.interp(t, pos, cols[:, k]) for k in range(3)], axis=-1)
if GRADIENT_FOR == "density":
img = lut(v)
else:
img = lut(h) * alpha + np.array(PAPER) * (1 - alpha)
plt.figure(figsize=(8, 8))
plt.imshow(img[::-1], extent=[-HALF, HALF, -HALF, HALF]) # [::-1]: imaginary axis pointing up
plt.axis("off")
plt.savefig("root_art.png", dpi=150, bbox_inches="tight", pad_inches=0)
print("saved root_art.png")
Arte com autovalores de matrizes Dois ângulos aleatórios definem uma matriz complexa; calcule seus autovalores, marque-os e repita milhões de vezes. Quatro famílias de matrizes, de um anel com ganho e perda a toros aleatórios, e um botão para surpreender você.
Arte com autovalores de matrizes
Dois ângulos aleatórios definem uma matriz complexa; calcule seus autovalores, marque-os e repita milhões de vezes. Quatro famílias de matrizes, de um anel com ganho e perda a toros aleatórios, e um botão para surpreender você.
O que é desenhado
Esta página usa a mesma receita da imagem de raízes, com matrizes no lugar de um polinômio. Dois ângulos \(\alpha,\beta\) são sorteados; eles definem uma matriz complexa \(N\times N\) \(M(\alpha,\beta)\) (com \(N\) de \(4\) a \(48\) conforme a família e o controle); calculam-se seus \(N\) autovalores e cada um é somado como um ponto tênue a uma imagem do plano complexo. Milhões de matrizes depois, os pontos desenharam a região que o espectro varre quando os dois ângulos percorrem o toro.
Raízes de polinômios e autovalores de matrizes são a mesma coisa vista de dois lados: os autovalores de \(M\) são as raízes do polinômio característico \(\det(\lambda I-M)\), e as raízes de um polinômio mônico são os autovalores de sua matriz companheira. Assim, a página anterior é um caso particular. O novo aqui é que as matrizes têm estrutura (um anel, uma banda, um toro aleatório, uma matriz companheira) e que seus polinômios característicos têm grau grande, com coeficientes que dependem de \(\alpha,\beta\) de um modo muito especial.
Para preencher regiões do plano as matrizes precisam ser não normais. Matrizes hermitianas têm autovalores reais e as unitárias têm autovalores no círculo unitário, então suas imagens são um segmento ou um círculo; uma matriz complexa genérica tem autovalores que passeiam pelo plano.
As quatro famílias
1. Anel SSH não hermitiano com ganho e perda. Um anel de \(2c\) sítios (\(c\) células de dois sítios). Dentro de uma célula o salto vale \(v\); entre células vale \(w\,e^{i\beta}\), um número complexo; os sítios carregam alternadamente \(+i\gamma\) (ganho) e \(-i\gamma\) (perda); e a ligação que fecha o anel carrega uma fase extra \(e^{\mp i\alpha}\), um fluxo magnético através do anel. É a cadeia de Su–Schrieffer–Heeger, um modelo clássico de física topológica unidimensional, com ganho e perda equilibrados, como se estuda em física não hermitiana. Tem solução exata: os \(2c\) autovalores são \[E=\pm\sqrt{\,v^{2}-\gamma^{2}+w^{2}e^{2i\beta}+2vw\,e^{i\beta}\cos k\,},\qquad k=\frac{2\pi m+\alpha}{c},\quad m=0,\dots,c-1\] (conferi isso com os autovalores numéricos até \(10^{-14}\)). Assim, a imagem é, a menos do número finito de valores de \(k\), a imagem do toro \((k,\beta)\) por uma aplicação explícita simples: por isso ela é nítida, com dobras agudas e dois buracos em forma de cúspide.
2. Matriz de Toeplitz em banda. Uma matriz de diagonais constantes: \(1\) acima da diagonal principal, \(\sigma e^{i\beta}\) logo abaixo e \(\rho e^{i\alpha}\) duas posições abaixo. Seu símbolo é \(a(z)=z+\sigma e^{i\beta}z^{-1}+\rho e^{i\alpha}z^{-2}\). A curva \(a(e^{i\theta})\) é o espectro da matriz periódica (circulante) correspondente, mas os autovalores das matrizes finitas não a seguem: quando \(N\) cresce eles se acumulam num conjunto de arcos (Schmidt–Spitzer, 1960), onde duas das três raízes de \(z^3-\lambda z^2+\sigma e^{i\beta}z+\rho e^{i\alpha}=0\) têm o mesmo módulo. Variar os dois ângulos move os arcos e pinta a região entre eles.
3. Toro aleatório. \(M=A_0+e^{i\alpha}A_1+e^{i\beta}A_2\), em que \(A_0,A_1,A_2\) são matrizes complexas aleatórias fixas (entradas gaussianas, uma fração escolhida não nula, escaladas por \(1/\sqrt{N\,\text{densidade}}\)). Para \(N=4\) é um primo de quatro raízes da imagem de polinômio. Cada valor da semente dá matrizes diferentes e portanto uma imagem diferente; o botão “Surpreenda-me” escolhe ao acaso uma família, parâmetros, semente e paleta.
4. Matriz companheira de um polinômio com fases em chirp. O polinômio \(x^N+\sum_{k\lt N}e^{i(\alpha k+\beta k^{p})}x^k\) tem coeficientes de módulo \(1\) cujas fases formam um “chirp” (linear mais uma potência de \(k\), com \(p=2\) por padrão). Suas raízes são os autovalores da matriz companheira, com uns abaixo da diagonal e os coeficientes com sinal trocado na última coluna. Para \(N\) grande, as raízes de polinômios com coeficientes limitados se aglomeram perto do círculo unitário (resultados do tipo Erdős–Turán); aqui os dois parâmetros de fase decidem como elas se espalham ao redor dele.
Como é calculado
Sorteie \(\alpha,\beta\) uniformemente e monte a matriz complexa \(N\times N\).
Calcule todos os autovalores com meu próprio algoritmo QR complexo: balanceie a matriz (escalas diagonais por potências de dois, que domam matrizes muito não normais), reduza-a à forma de Hessenberg com refletores de Householder e rode iterações QR com deslocamento (deslocamento de Wilkinson, rotações de Givens em aritmética complexa) com deflação. O custo cresce como \(N^3\). Comparei com o numpy em matrizes aleatórias, de Toeplitz e de anel até \(48\times48\): os autovalores coincidem com erro menor que \(10^{-12}\).
Reparta cada autovalor na imagem de densidade com pesos bilineares, some as imagens parciais das threads, mapeie os tons e colora (mesmo motor e mesmas paletas da página de raízes).
A fonte de cor pode ser \(\alpha\), \(\beta\) ou o índice do autovalor na lista calculada (nas famílias do anel e do polinômio o índice segue a ordem da lista calculada, então isso colore por “qual autovalor”).
HDR. Se a sua tela e o navegador mostram alto alcance dinâmico, aparece uma caixa de seleção: a imagem passa a ser desenhada num canvas WebGPU em faixa estendida e as cristas mais brilhantes são multiplicadas, em luz linear, por até o fator escolhido, de modo que brilham mais que o branco da página. A caixa fica oculta quando o navegador não informa tela HDR e mapeamento de tons estendido; se você acha que seu aparelho suporta, acrescente ?hdr=1 ao endereço para forçar. O PNG salvo é sempre a versão padrão (SDR).
Tem importância, ou é só bonito?
Essas imagens não provam nada, e as quatro famílias são escolha minha; não vi o código por trás das imagens de autovalores de Conradi (os notebooks “eigenfish” no GitHub dele), então não afirmo nada sobre como as dele são feitas. Mas a matemática por baixo é real e ativa. Espectros de matrizes não normais e não hermitianas são centrais na análise numérica (pseudoespectros: Trefethen e Embree, Spectra and Pseudospectra), na física de sistemas abertos e com perdas (estruturas ópticas e eletrônicas com ganho e perda, onde a mecânica quântica hermitiana deixa de valer e o espectro é complexo) e na teoria de matrizes aleatórias (uma matriz gaussiana com entradas de variância \(1/N\) tem autovalores uniformemente espalhados no disco unitário quando \(N\to\infty\), a lei circular). A família de Toeplitz mostra um fato clássico que surpreende iniciantes: os autovalores das seções finitas não se aproximam da curva do símbolo.
A varredura de dois parâmetros acrescenta mais uma ideia: um autovalor é função contínua dos parâmetros, então o toro de ângulos é levado a regiões do plano, cujas bordas são dobras onde os autovalores se amontoam (o mesmo mecanismo de cáustica da página de raízes, com densidade crescendo como \(1/\sqrt{d}\) numa dobra genérica).
Para experimentar: na família 1 aumente o ganho e a perda \(\gamma\) a partir de \(0\) e veja os dois buracos se abrirem e se fecharem; na família 2 ponha \(\rho=0\) e depois aumente-o; na família 3 aperte “Recomeçar” com sementes diferentes, ou aumente \(N\) para ver a imagem se aproximar de uma mancha em forma de disco; use a ampliação nas bordas internas nítidas; experimente a caixa HDR numa tela HDR.
Cores, a ferramenta de gradiente e a placa gráfica
O esquema papel pinta tinta pastel translúcida sobre fundo claro. O esquema script é o do script Python abaixo: o matiz é o ângulo do primeiro parâmetro (\(t_1\) ou \(\alpha\)), a saturação é \(0{,}8\) e o brilho cresce de \(0{,}2\) a \(1\) com o ângulo do segundo parâmetro (\(t_2\) ou \(\beta\)), sobre preto. Com meu gradiente você desenha as cores: clique na barra para criar uma parada de cor, arraste uma parada para movê-la, mude sua cor na caixa de cor e use as predefinições ou Inverter como ponto de partida. O gradiente pode colorir a densidade (escuro onde caem poucas raízes, claro onde caem muitas) ou a fonte de cor (o gradiente dá uma volta completa, então um gradiente cuja última parada é igual à primeira não tem emenda). O estado do gradiente viaja no link de Compartilhar.
Se o navegador oferece WebGPU, a caixa Usar a placa gráfica leva o cálculo para a GPU. Cada thread da GPU recebe um par de parâmetros e encontra todas as raízes do polinômio de uma vez com a iteração de Aberth–Ehrlich, \[z_k\leftarrow z_k-\frac{1}{\dfrac{p\,\prime(z_k)}{p(z_k)}-\displaystyle\sum_{j\ne k}\frac{1}{z_k-z_j}},\qquad k=1,\dots,n,\]e milhares de threads rodam lado a lado, cada uma para um par \((t_1,t_2)\) diferente. Para as matrizes a GPU usa uma fórmula fechada (o anel) ou uma iteração de Hessenberg–QR (as outras famílias). Com a GPU ligada, os limites sobem para \(2\times10^{8}\) amostras e resolução de \(2160\) pixels. A GPU trabalha em 32 bits, o bastante para uma imagem, não para uma resposta certificada; a família de matrizes com blocos de Toeplitz não normais é tão sensível a erros de arredondamento que sempre roda na CPU, em 64 bits. Desmarque a caixa para comparar os dois caminhos.
Experimente você mesmo em Python
Um script autônomo que desenha uma imagem como esta no seu próprio computador. Precisa de numpy e matplotlib (pip install numpy matplotlib), roda de alguns segundos a um minuto e grava um PNG; mude N, as cores, o fundo ou os parâmetros e rode de novo.
# Eigenvalue art: the eigenvalues of a complex matrix that depends on two angles (alpha, beta),
# drawn for many random angle pairs. Two families: "rand" (random sparse matrices) and "ssh" (a ring with gain and loss).
# Needs: pip install numpy matplotlib
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import hsv_to_rgb
FAMILY = "rand" # "rand" or "ssh"
N = 100_000 # number of angle pairs; try 10_000 first
SIZE = 1000
PAPER = (0.957, 0.941, 0.902)
# Colour scheme: "paper" (translucent pastel ink on a light background), "script" (hue = angle of the first
# parameter, saturation 0.8, brightness 0.2 ... 1 from the second angle, on black) or "gradient" (your own colours below)
SCHEME = "paper"
GRADIENT = [(0.0, "#05030f"), (0.25, "#3a0f6b"), (0.5, "#c2185b"), (0.75, "#ff8a3d"), (1.0, "#fff3c4")] # (position 0..1, colour)
GRADIENT_FOR = "density" # "density" (dark = few roots) or "source" (the gradient is looped over the colour source; make the last colour equal the first)
rng = np.random.default_rng(7)
al, be = rng.random(N) * 2 * np.pi, rng.random(N) * 2 * np.pi
if FAMILY == "rand":
# M(alpha, beta) = A0 + e^{i alpha} A1 + e^{i beta} A2 with three fixed random sparse 6 x 6 matrices
n = 6
A = [(rng.standard_normal((n, n)) + 1j * rng.standard_normal((n, n))) * (rng.random((n, n)) < 0.6) for _ in range(3)]
M = A[0] + np.exp(1j * al)[:, None, None] * A[1] + np.exp(1j * be)[:, None, None] * A[2]
HALF = 3.4
else:
# non-Hermitian SSH ring: hopping v inside a cell, w e^{i beta} between cells, gain/loss +-i*gamma, twist alpha
cells, v, w, gam = 12, 1.0, 1.6, 0.8
n = 2 * cells
M = np.zeros((N, n, n), dtype=complex)
for j in range(n - 1):
h = v if j % 2 == 0 else w * np.exp(1j * be)
M[:, j, j + 1] = h
M[:, j + 1, j] = h
M[:, 0, n - 1] += w * np.exp(1j * (be - al))
M[:, n - 1, 0] += w * np.exp(1j * (be + al))
M[:, np.arange(n), np.arange(n)] += np.where(np.arange(n) % 2 == 0, 1j * gam, -1j * gam)
HALF = v + w + gam + 0.2
ev = np.linalg.eigvals(M) # shape (N, n)
hue = np.repeat(al / (2 * np.pi), n) # hue = the angle alpha
x, y = ev.real.ravel(), ev.imag.ravel()
kw = dict(bins=SIZE, range=[[-HALF, HALF], [-HALF, HALF]])
cnt, _, _ = np.histogram2d(y, x, **kw)
cs, _, _ = np.histogram2d(y, x, weights=np.cos(2 * np.pi * hue), **kw)
sn, _, _ = np.histogram2d(y, x, weights=np.sin(2 * np.pi * hue), **kw)
un, _, _ = np.histogram2d(y, x, weights=np.repeat(be / (2 * np.pi), n), **kw) # mean of the second angle, for the script colours
dens = np.log1p(cnt / max(np.percentile(cnt[cnt > 0], 6), 1e-9))
v_ = np.clip(dens / np.percentile(dens[cnt > 0], 99.7), 0, 1)
alpha = np.clip(0.9 * v_**0.55, 0, 1)[..., None]
h = (np.arctan2(sn, cs) / (2 * np.pi)) % 1
conc = np.clip(np.hypot(cs, sn) / np.maximum(cnt, 1) * 1.5 + 0.3, 0, 1)
ink = hsv_to_rgb(np.dstack([h, 0.78 * conc, np.full_like(h, 0.93)]))
if SCHEME == "paper":
img = np.array(PAPER) * (1 - alpha) + ink * alpha
elif SCHEME == "script":
m = np.maximum(cnt, 1)
bright = 0.2 + 0.8 * np.clip(un / m, 0, 1)
col = hsv_to_rgb(np.dstack([h, np.full_like(h, 0.8), bright]))
a2_ = np.clip(v_**0.6, 0, 1)[..., None]
img = col * a2_ # on black
else:
from matplotlib.colors import to_rgb
pos = np.array([p for p, _ in GRADIENT]); cols = np.array([to_rgb(c) for _, c in GRADIENT])
lut = lambda t: np.stack([np.interp(t, pos, cols[:, k]) for k in range(3)], axis=-1)
if GRADIENT_FOR == "density":
img = lut(v_)
else:
img = lut(h) * alpha + np.array(PAPER) * (1 - alpha)
plt.figure(figsize=(8, 8))
plt.imshow(img[::-1], extent=[-HALF, HALF, -HALF, HALF])
plt.axis("off")
plt.savefig("eigen_art.png", dpi=150, bbox_inches="tight", pad_inches=0)
print("saved eigen_art.png")
Raízes de uma família de grau 11 Segundo a obra de 2025 de Simone Conradi: dois ângulos, onze raízes por par, milhões de pares, em tinta pastel translúcida sobre papel.
Raízes de uma família de grau 11
Segundo a obra de 2025 de Simone Conradi: dois ângulos, onze raízes por par, milhões de pares, em tinta pastel translúcida sobre papel.
O artista
O polinômio e o estilo desta imagem vêm de uma obra de 2025 de Simone Conradi (profconradi.github.io), cuja imagem traz o polinômio impresso no alto e desenha suas raízes para muitos pares de parâmetros na circunferência unitária, em cores pastel translúcidas sobre fundo creme. Escrevi o código por conta própria a partir do polinômio impresso na imagem dele; é uma recriação no mesmo espírito, não o programa dele, e as cores não são idênticas: cada fita dele tem uma cor própria, enquanto aqui a cor de uma raiz vem de um rótulo que acompanha a raiz quando \(t_1\) dá a volta, de modo que uma fita pode mudar de cor onde as raízes trocam de rótulo. Todo o crédito pelo desenho e pela família de polinômios é dele. Escolha “papel” no menu de cores para este visual e troque o fundo se quiser.
O polinômio
Para dois parâmetros unimodulares \(t_1=e^{i\alpha}\) e \(t_2=e^{i\beta}\), o esboço resolve \(P(x)=0\) com
Apenas dois coeficientes se movem: o de \(x^9\) percorre uma circunferência de raio \(|d_9|\approx 0{,}55\) quando \(t_2\) dá uma volta, e o de \(x^7\) descreve a curva fechada \(q(e^{i\alpha})\), um polinômio trigonométrico de grau \(5\) de tamanho da ordem de \(20\). Os outros nove coeficientes são fixos e todos raízes quartas da unidade (\(\pm1,\pm i\)). Assim, ao contrário do primeiro esboço, há um grande fundo constante e uma perturbação forte e sinuosa no meio do polinômio.
Como é calculado
Cada worker sorteia \((\alpha,\beta)\), calcula os dois coeficientes móveis, divide o polinômio pelo coeficiente líder \(-i\) (tornando-o mônico) e acha as onze raízes com a iteração de Aberth–Ehrlich, um método de Newton em que as aproximações se repelem e, por isso, convergem para todas as raízes ao mesmo tempo. Para dar um rótulo a cada raiz, cada varredura parte das raízes em \(t_1=t_2=1\) (rotuladas por módulo decrescente), leva \(t_2\) a um ponto sorteado da circunferência e então faz \(t_1\) dar uma volta, reiniciando a iteração com as raízes anteriores a cada pequeno passo. Cada raiz é depositada, com pesos bilineares, em três histogramas (peso, e soma de \(\cos\) e \(\sin\) de um ângulo de matiz); a página faz o mapeamento de tons como no primeiro esboço, e paletas, resolução, zoom, HDR e o menu “cor por” funcionam do mesmo modo. Colorir pelo índice da raiz mostra como se organizam os onze ramos da função algébrica \(x(t_1,t_2)\); colorir por \(t_1\) ou \(t_2\) mostra qual parâmetro responde por cada parte da imagem.
O que observar
A imagem é a projeção no plano de uma superfície bidimensional em \(\mathbb C\): a união dos onze ramos de raízes sobre o toro \((t_1,t_2)\). Como \(|d_9|\) é pequeno, mudar \(t_2\) só desloca cada raiz um pouco, de modo que a superfície é uma fita fina: cada tubo que você vê é a curva traçada por uma raiz quando \(t_1\) dá uma volta na circunferência, engrossada pelo movimento em \(t_2\). O pequeno anel com cinco laços perto do centro é a assinatura de \(q\) dar cinco voltas; os laços grandes são outros ramos, que \(q\) lança longe da origem. Onde a fita se dobra sobre si mesma a densidade se acumula e a imagem escurece ou clareia. Experimente colorir por \(t_2\) para ver a largura da fita, pelo índice da raiz para separar os onze ramos, ampliar os laços e aumentar os pares para alguns milhões para uma imagem suave. Não afirmo nada sobre o significado desta família em particular além do que a imagem mostra; é simplesmente uma família linda de olhar.
Cores, a ferramenta de gradiente e a placa gráfica
O esquema papel pinta tinta pastel translúcida sobre fundo claro. O esquema script é o do script Python abaixo: o matiz é o ângulo do primeiro parâmetro (\(t_1\) ou \(\alpha\)), a saturação é \(0{,}8\) e o brilho cresce de \(0{,}2\) a \(1\) com o ângulo do segundo parâmetro (\(t_2\) ou \(\beta\)), sobre preto. Com meu gradiente você desenha as cores: clique na barra para criar uma parada de cor, arraste uma parada para movê-la, mude sua cor na caixa de cor e use as predefinições ou Inverter como ponto de partida. O gradiente pode colorir a densidade (escuro onde caem poucas raízes, claro onde caem muitas) ou a fonte de cor (o gradiente dá uma volta completa, então um gradiente cuja última parada é igual à primeira não tem emenda). O estado do gradiente viaja no link de Compartilhar.
Se o navegador oferece WebGPU, a caixa Usar a placa gráfica leva o cálculo para a GPU. Cada thread da GPU recebe um par de parâmetros e encontra todas as raízes do polinômio de uma vez com a iteração de Aberth–Ehrlich, \[z_k\leftarrow z_k-\frac{1}{\dfrac{p\,\prime(z_k)}{p(z_k)}-\displaystyle\sum_{j\ne k}\frac{1}{z_k-z_j}},\qquad k=1,\dots,n,\]e milhares de threads rodam lado a lado, cada uma para um par \((t_1,t_2)\) diferente. Para as matrizes a GPU usa uma fórmula fechada (o anel) ou uma iteração de Hessenberg–QR (as outras famílias). Com a GPU ligada, os limites sobem para \(2\times10^{8}\) amostras e resolução de \(2160\) pixels. A GPU trabalha em 32 bits, o bastante para uma imagem, não para uma resposta certificada; a família de matrizes com blocos de Toeplitz não normais é tão sensível a erros de arredondamento que sempre roda na CPU, em 64 bits. Desmarque a caixa para comparar os dois caminhos.
Experimente você mesmo em Python
Um script autônomo que desenha uma imagem como esta no seu próprio computador. Precisa de numpy e matplotlib (pip install numpy matplotlib), roda de alguns segundos a um minuto e grava um PNG; mude N, as cores, o fundo ou os parâmetros e rode de novo.
# Degree-11 root art, after the 2025 image by Simone Conradi (profconradi.github.io):
# -i x^11 + x^10 + (t2 (-0.537-0.114i) - 0.571+0.414i) x^9 + x^8 + q(t1) x^7 + i x^6 - i x^5 + x^4 + i x^3 - x^2 + i x - i,
# q(t) = t^5 (-18.8-3.25i) + t^4 (-4.85+14i) + t^3 (5.81+12.6i) + t^2 (-8.74+4.29i) + t (5.81+0.687i) - 2.44+3.23i, |t1| = |t2| = 1.
# Needs: pip install numpy matplotlib
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import hsv_to_rgb
N = 100_000 # number of pairs (t1, t2); try 10_000 first
SIZE = 1000
HALF = 3.0
PAPER = (0.957, 0.941, 0.902)
# Colour scheme: "paper" (translucent pastel ink on a light background), "script" (hue = angle of the first
# parameter, saturation 0.8, brightness 0.2 ... 1 from the second angle, on black) or "gradient" (your own colours below)
SCHEME = "paper"
GRADIENT = [(0.0, "#05030f"), (0.25, "#3a0f6b"), (0.5, "#c2185b"), (0.75, "#ff8a3d"), (1.0, "#fff3c4")] # (position 0..1, colour)
GRADIENT_FOR = "density" # "density" (dark = few roots) or "source" (the gradient is looped over the colour source; make the last colour equal the first)
COLOR_BY = "index" # "index" (position of the root in the eigenvalue list), "t1" or "t2"
rng = np.random.default_rng(2)
a1, a2 = rng.random(N) * 2 * np.pi, rng.random(N) * 2 * np.pi
t1, t2 = np.exp(1j * a1), np.exp(1j * a2)
q = (t1**5 * (-18.8 - 3.25j) + t1**4 * (-4.85 + 14j) + t1**3 * (5.81 + 12.6j)
+ t1**2 * (-8.74 + 4.29j) + t1 * (5.81 + 0.687j) - 2.44 + 3.23j)
c9 = t2 * (-0.537 - 0.114j) - 0.571 + 0.414j
fixed = {11: -1j, 10: 1, 8: 1, 6: 1j, 5: -1j, 4: 1, 3: 1j, 2: -1, 1: 1j, 0: -1j} # coefficients that do not move
coef = np.zeros((N, 12), dtype=complex) # column k holds the coefficient of x^(11-k)
for deg, c in fixed.items():
coef[:, 11 - deg] = c
coef[:, 11 - 9] = c9
coef[:, 11 - 7] = q
coef = coef / coef[:, :1] # divide by the leading coefficient -i: the polynomial becomes monic
C = np.zeros((N, 11, 11), dtype=complex) # companion matrices
C[:, 1:, :-1] = np.eye(10)
C[:, 0, :] = -coef[:, 1:]
roots = np.linalg.eigvals(C) # shape (N, 11)
if COLOR_BY == "t1":
hue = np.repeat(a1 / (2 * np.pi), 11)
elif COLOR_BY == "t2":
hue = np.repeat(a2 / (2 * np.pi), 11)
else:
hue = np.tile(np.arange(11) / 11, N)
x, y = roots.real.ravel(), roots.imag.ravel()
kw = dict(bins=SIZE, range=[[-HALF, HALF], [-HALF, HALF]])
cnt, _, _ = np.histogram2d(y, x, **kw)
cs, _, _ = np.histogram2d(y, x, weights=np.cos(2 * np.pi * hue), **kw)
sn, _, _ = np.histogram2d(y, x, weights=np.sin(2 * np.pi * hue), **kw)
un, _, _ = np.histogram2d(y, x, weights=np.repeat(a2 / (2 * np.pi), 11), **kw) # mean of the second angle, for the script colours
dens = np.log1p(cnt / max(np.percentile(cnt[cnt > 0], 6), 1e-9))
v = np.clip(dens / np.percentile(dens[cnt > 0], 99.7), 0, 1)
alpha = np.clip(0.9 * v**0.55, 0, 1)[..., None]
h = (np.arctan2(sn, cs) / (2 * np.pi)) % 1
conc = np.clip(np.hypot(cs, sn) / np.maximum(cnt, 1) * 1.5 + 0.3, 0, 1)
ink = hsv_to_rgb(np.dstack([h, 0.78 * conc, np.full_like(h, 0.93)]))
if SCHEME == "paper":
img = np.array(PAPER) * (1 - alpha) + ink * alpha
elif SCHEME == "script":
m = np.maximum(cnt, 1)
bright = 0.2 + 0.8 * np.clip(un / m, 0, 1)
col = hsv_to_rgb(np.dstack([h, np.full_like(h, 0.8), bright]))
a2_ = np.clip(v**0.6, 0, 1)[..., None]
img = col * a2_ # on black
else:
from matplotlib.colors import to_rgb
pos = np.array([p for p, _ in GRADIENT]); cols = np.array([to_rgb(c) for _, c in GRADIENT])
lut = lambda t: np.stack([np.interp(t, pos, cols[:, k]) for k in range(3)], axis=-1)
if GRADIENT_FOR == "density":
img = lut(v)
else:
img = lut(h) * alpha + np.array(PAPER) * (1 - alpha)
plt.figure(figsize=(8, 8))
plt.imshow(img[::-1], extent=[-HALF, HALF, -HALF, HALF])
plt.axis("off")
plt.savefig("poly11_art.png", dpi=150, bbox_inches="tight", pad_inches=0)
print("saved poly11_art.png")
Dinâmica
Ilustrações de sistemas mecânicos no estilo de livro-texto, integradas ao vivo no seu navegador: equações de movimento, o integrador usado, as grandezas que variam e seus gráficos.
Pêndulo em um aro giratório
Um pêndulo é preso ao centro de um aro de raio \(R\) e sua massa desliza pela borda. O aro gira em torno do eixo vertical com velocidade constante \(\omega\) e o movimento fica no plano do aro. Abaixo da taxa crítica \(\omega_c=\sqrt{g/R}\) o ponto mais baixo é o repouso estável; acima dela a massa se acomoda fora do centro em \(\cos\theta=(\omega_c/\omega)^{2}\). A equação é integrada ao vivo por Runge–Kutta 4 ou um de cinco integradores simpléticos (o cartão diz qual); os gráficos mostram \(\dot\theta(t)\) e o retrato de fase.
Imagine uma conta num aro que você gira como uma roda de bicicleta em pé sobre uma plataforma giratória. Girando devagar, a conta fica pendurada na parte de baixo. Acima de uma velocidade crítica, a parte de baixo deixa de ser um lugar seguro: a conta é lançada para cima pela lateral e encontra uma nova altura de repouso, e, partindo de perto do topo, ela percorre arcos enormes. O esboço a acompanha com um método numérico e mostra como a sua velocidade sobe e desce.
\(\ddot\theta=\sin\theta\,\bigl(\omega^{2}\cos\theta-\omega_c^{2}\bigr),\qquad \omega_c^{2}=\frac{g}{R}\)Pêndulo em um aro giratório Um pêndulo é preso ao centro de um aro de raio \(R\) e sua massa desliza pela borda. O aro gira em torno do eixo vertical com velocidade constante \(\omega\) e o movimento fica no plano do aro. Abaixo da taxa crítica \(\omega_c=\sqrt{g/R}\) o ponto mais baixo é o repouso estável; acima dela a massa se acomoda fora do centro em \(\cos\theta=(\omega_c/\omega)^{2}\). A equação é integrada ao vivo por Runge–Kutta 4 ou um de cinco integradores simpléticos (o cartão diz qual); os gráficos mostram \(\dot\theta(t)\) e o retrato de fase.
Pêndulo invertido de Kapitza
Um pêndulo rígido cujo pivô é sacudido para cima e para baixo em alta frequência. Quando a sacudida é rápida o bastante, \(A\Omega>\sqrt{2g\ell}\), a posição de cabeça para baixo, instável sem ela, torna-se estável: a massa oscila devagar em torno da vertical enquanto o pivô vibra. Diminua \(\Omega\) ou \(A\) e ela cai. Integrado ao vivo por RK4 ou um integrador simplético (Verlet, Euler simplético, Ruth, Forest–Ruth, PEFRL); os gráficos mostram o ângulo a partir da vertical para cima e o retrato de fase.
Equilibre uma vassoura na palma da mão e você precisa mexer a mão o tempo todo para ela não cair. O pêndulo de Kapitza faz isso sem habilidade nenhuma: sacuda o pivô para cima e para baixo depressa o bastante e o pêndulo fica de cabeça para baixo sozinho, tremendo um pouco, mas firme. Sacuda devagar demais e ele tomba como de costume. O truque é que uma sacudida muito rápida acrescenta uma força média que age como uma gravidade apontando para o outro lado.
\(\ddot\theta=-\frac{1}{\ell}\bigl(g-A\Omega^{2}\cos\Omega t\bigr)\sin\theta\)Pêndulo invertido de Kapitza Um pêndulo rígido cujo pivô é sacudido para cima e para baixo em alta frequência. Quando a sacudida é rápida o bastante, \(A\Omega>\sqrt{2g\ell}\), a posição de cabeça para baixo, instável sem ela, torna-se estável: a massa oscila devagar em torno da vertical enquanto o pivô vibra. Diminua \(\Omega\) ou \(A\) e ela cai. Integrado ao vivo por RK4 ou um integrador simplético (Verlet, Euler simplético, Ruth, Forest–Ruth, PEFRL); os gráficos mostram o ângulo a partir da vertical para cima e o retrato de fase.
Órbita kepleriana e a lei das áreas
Um planeta sob uma atração inversamente proporcional ao quadrado da distância. Os setores sombreados são varridos em tempos iguais e têm áreas iguais (segunda lei de Kepler). Com passo fixo o integrador faz diferença: o RK4 perde energia aos poucos e a órbita espirala para dentro, enquanto no Verlet de velocidades, simplético, o erro de energia oscila mas não deriva (a órbita precessiona). Escolha o número de passos por órbita e compare; os gráficos mostram a distância \(r(t)\) e o erro relativo de energia.
Um planeta cai em direção ao Sol, mas sempre erra o alvo, e por isso gira. A linha do Sol ao planeta varre áreas iguais em tempos iguais, e é por isso que o planeta passa veloz perto do Sol e se arrasta longe dele. Os computadores seguem essas órbitas passo a passo, e a escolha do método aparece: um método descuidado faz o planeta ganhar ou perder energia aos poucos e se afastar da órbita, enquanto um método simplético mantém a conta em dia pelo tempo que você quiser.
\(\ddot{\mathbf r}=-\frac{GM}{r^{3}}\,\mathbf r,\qquad \frac{dA}{dt}=\frac{L}{2m}\)Órbita kepleriana e a lei das áreas Um planeta sob uma atração inversamente proporcional ao quadrado da distância. Os setores sombreados são varridos em tempos iguais e têm áreas iguais (segunda lei de Kepler). Com passo fixo o integrador faz diferença: o RK4 perde energia aos poucos e a órbita espirala para dentro, enquanto no Verlet de velocidades, simplético, o erro de energia oscila mas não deriva (a órbita precessiona). Escolha o número de passos por órbita e compare; os gráficos mostram a distância \(r(t)\) e o erro relativo de energia.
Osciladores acoplados e batimentos
Duas massas iguais ligadas por três molas. Puxe só a primeira e solte: a energia passa para a segunda e volta, com período de batimento \(2\pi/(\omega_2-\omega_1)\). Os dois modos normais são senóides puras e os batimentos são a interferência entre eles. Os gráficos mostram os dois deslocamentos e a energia de cada massa.
Pendure dois balanços idênticos lado a lado e ligue-os com uma mola macia. Empurre um deles e, depois de um tempo, ele para enquanto o outro balança forte, e então devolve o movimento, de novo e de novo. Nada se perde: a energia apenas viaja entre eles. O ritmo lento dessa troca é o batimento, o mesmo que você ouve quando duas cordas de violão estão quase afinadas.
\(m\ddot x_1=-kx_1+k_c(x_2-x_1),\quad m\ddot x_2=-kx_2-k_c(x_2-x_1)\)Osciladores acoplados e batimentos Duas massas iguais ligadas por três molas. Puxe só a primeira e solte: a energia passa para a segunda e volta, com período de batimento \(2\pi/(\omega_2-\omega_1)\). Os dois modos normais são senóides puras e os batimentos são a interferência entre eles. Os gráficos mostram os dois deslocamentos e a energia de cada massa.
Máquina de Atwood oscilante
Uma massa \(m\) balança numa ponta de um fio sobre duas polias enquanto uma massa mais pesada \(M\) pende da outra ponta. O balanço e o comprimento do fio se alimentam, dando órbitas com laços: regulares para algumas razões \(\mu=M/m\) (\(\mu=3\) é integrável), caóticas para outras. O RK4 trata os termos que dependem da velocidade; os gráficos mostram \(r(t)\) e o retrato de fase de \((r,\dot r)\).
Um peso pende de um lado de um fio que passa por uma polia e, do outro lado, um segundo peso balança como um pêndulo. Ao balançar, ele puxa o fio, que sobe e desce o peso pendurado, o que por sua vez muda o balanço. Essa retroalimentação desenha trajetórias trançadas e cheias de laços, organizadas para algumas escolhas de pesos e totalmente imprevisíveis para outras.
\((M+m)\ddot r=mr\dot\theta^{2}+mg\cos\theta-Mg,\quad r\ddot\theta=-2\dot r\dot\theta-g\sin\theta\)Máquina de Atwood oscilante Uma massa \(m\) balança numa ponta de um fio sobre duas polias enquanto uma massa mais pesada \(M\) pende da outra ponta. O balanço e o comprimento do fio se alimentam, dando órbitas com laços: regulares para algumas razões \(\mu=M/m\) (\(\mu=3\) é integrável), caóticas para outras. O RK4 trata os termos que dependem da velocidade; os gráficos mostram \(r(t)\) e o retrato de fase de \((r,\dot r)\).
Pêndulo de Foucault
O plano de oscilação de um pêndulo longo gira devagar sobre uma Terra em rotação, à taxa \(\Omega\sin\lambda\): uma volta por dia nos polos e nenhuma no equador. Aqui a rotação da Terra é acelerada para que você a veja. O piso é visto de cima no referencial da Terra, onde a força de Coriolis faz o giro. Mude a latitude (negativa é sul) e o mostrador inverte.
Em 1851, Léon Foucault pendurou uma esfera pesada na cúpula do Panthéon, em Paris, e viu o plano do balanço girar devagar, prova de que a própria Terra gira por baixo dele. Nos polos o balanço daria uma volta por dia, no equador nenhuma, e entre os dois depende da latitude. Aqui a Terra gira centenas de vezes mais depressa que a real, e o giro aparece em segundos.
\(\ddot x=-\omega_0^{2}x+2\Omega\sin\lambda\,\dot y\)Pêndulo de Foucault O plano de oscilação de um pêndulo longo gira devagar sobre uma Terra em rotação, à taxa \(\Omega\sin\lambda\): uma volta por dia nos polos e nenhuma no equador. Aqui a rotação da Terra é acelerada para que você a veja. O piso é visto de cima no referencial da Terra, onde a força de Coriolis faz o giro. Mude a latitude (negativa é sul) e o mostrador inverte.
Mais dinâmica
Mais seis sistemas mecânicos no mesmo estilo de livro-texto: referenciais girantes, forças, uma cadeia caótica de aros, uma máquina térmica, ressonância e um poço duplo sacudido.
Bola e mola em um tubo giratório
Um tubo gira em um plano vertical em torno do seu centro, com uma bola dentro presa ao centro por uma mola; a gravidade puxa para baixo. A bola pode passar pelo pivô: o comprimento da mola é \(|r|\), então o potencial tem dois poços com uma barreira de altura \(\tfrac12kL_0^{2}\) entre eles, e os poços balançam para cima e para baixo conforme o tubo gira. No referencial do tubo a bola sente a mola, o empurrão centrífugo \(m\omega^{2}r\), a gravidade e uma força lateral de Coriolis, exercida pela parede do tubo (a força normal). Com a gravidade desligada, abaixo da velocidade crítica \(\omega_c=\sqrt{k/m}\) a bola oscila em torno de \(r_{\mathrm{eq}}=kL_0/(k-m\omega^{2})\); acima dela o empurrão centrífugo vence e a bola é lançada até uma ponta. Troque o tubo de forçado para livre e ele gira sob a bola e a gravidade, trocando energia e momento angular com ela. O gráfico à direita é o potencial efetivo a cada instante, com a energia da bola como linha horizontal. O tubo é uma barra uniforme de massa \(M\) e comprimento \(2\) m, com momento de inércia \(I=\tfrac{1}{12}M\ell^{2}\) em torno do pivô.
Gire um tubo como uma hélice, com uma bola presa a uma mola dentro dele. Quanto mais depressa ele gira, mais a bola é lançada para fora e mais a mola se estica. Passando de certa velocidade, a mola já não consegue segurar a bola: ela dispara até a ponta do tubo. Se o tubo estiver livre para girar, em vez de ser acionado, a própria bola muda o giro: ao ir para dentro, faz o tubo girar mais depressa, como uma patinadora que gira mais rápido ao recolher os braços. A gravidade também puxa a bola para baixo, e a bola pode passar direto pelo pivô de um lado do tubo para o outro.
\(m\ddot r=m\omega^{2}r-k(|r|-L_0)\operatorname{sgn}r-mg\sin\theta\)Bola e mola em um tubo giratório Um tubo gira em um plano vertical em torno do seu centro, com uma bola dentro presa ao centro por uma mola; a gravidade puxa para baixo. A bola pode passar pelo pivô: o comprimento da mola é \(|r|\), então o potencial tem dois poços com uma barreira de altura \(\tfrac12kL_0^{2}\) entre eles, e os poços balançam para cima e para baixo conforme o tubo gira. No referencial do tubo a bola sente a mola, o empurrão centrífugo \(m\omega^{2}r\), a gravidade e uma força lateral de Coriolis, exercida pela parede do tubo (a força normal). Com a gravidade desligada, abaixo da velocidade crítica \(\omega_c=\sqrt{k/m}\) a bola oscila em torno de \(r_{\mathrm{eq}}=kL_0/(k-m\omega^{2})\); acima dela o empurrão centrífugo vence e a bola é lançada até uma ponta. Troque o tubo de forçado para livre e ele gira sob a bola e a gravidade, trocando energia e momento angular com ela. O gráfico à direita é o potencial efetivo a cada instante, com a energia da bola como linha horizontal. O tubo é uma barra uniforme de massa \(M\) e comprimento \(2\) m, com momento de inércia \(I=\tfrac{1}{12}M\ell^{2}\) em torno do pivô.
Máquina de Atwood em um plano inclinável
Outra máquina de Atwood. Uma massa \(m\) desliza em um plano, presa a uma mola à esquerda e, à direita, a um fio que passa por uma polia até uma segunda massa \(M\), que pende e balança como um pêndulo. O controle inclina o plano em torno da polia, de plano a íngreme. As forças nas duas massas estão desenhadas: pesos, força normal, força da mola e tensão. Os gráficos mostram a velocidade angular do balanço e a tensão. O fio não se alonga, mas também não empurra: se a tensão ficasse negativa, ele afrouxa, \(M\) voa livre e o fio estica de novo com um tranco que perde energia. Quando a frequência da mola é quase o dobro da do balanço, os dois movimentos trocam energia. Uma execução gêmea pálida começa a um milionésimo de radiano, e a separação \(d\) mostra a rapidez com que os dois movimentos se afastam. Com o fio esticado o movimento é só fracamente caótico; episódios de fio frouxo, balanços grandes e uma mola mole o levam ao caos.
\(m\ddot s=k\xi-T-mg\sin\alpha\)
A matemática, em palavras simples
Um peso repousa em uma rampa, segurado por uma mola; um fio passa por uma polia até um segundo peso, que pende e balança. Incline a rampa e o primeiro peso é puxado com mais força para a polia. As setas mostram cada empurrão e puxão nos dois pesos a cada instante, e os gráficos mostram como o balanço e o esticar da mola se alimentam. Um fio puxa, mas nunca empurra; por isso, quando o balanço e a mola exigiriam que ele empurrasse, ele afrouxa: o peso pendurado cai sozinho até o fio esticar de novo com um tranco.
\(m\ddot s=k\xi-T-mg\sin\alpha\)Máquina de Atwood em um plano inclinável Outra máquina de Atwood. Uma massa \(m\) desliza em um plano, presa a uma mola à esquerda e, à direita, a um fio que passa por uma polia até uma segunda massa \(M\), que pende e balança como um pêndulo. O controle inclina o plano em torno da polia, de plano a íngreme. As forças nas duas massas estão desenhadas: pesos, força normal, força da mola e tensão. Os gráficos mostram a velocidade angular do balanço e a tensão. O fio não se alonga, mas também não empurra: se a tensão ficasse negativa, ele afrouxa, \(M\) voa livre e o fio estica de novo com um tranco que perde energia. Quando a frequência da mola é quase o dobro da do balanço, os dois movimentos trocam energia. Uma execução gêmea pálida começa a um milionésimo de radiano, e a separação \(d\) mostra a rapidez com que os dois movimentos se afastam. Com o fio esticado o movimento é só fracamente caótico; episódios de fio frouxo, balanços grandes e uma mola mole o levam ao caos.
Pêndulo múltiplo de aros
Um pêndulo múltiplo feito de \(n\) aros idênticos, com \(n\) de 2 a 6 escolhido na caixa de seleção: o primeiro pende de um pino na sua borda, e cada seguinte do pino no ponto oposto ao do anterior. Toda a massa de um aro está na borda, de modo que cada um tem momento de inércia \(mR^{2}\) em torno do centro. As equações vêm da lagrangiana, com um ângulo \(\theta_i\) por aro e as matrizes \(A_{ij}\) e \(H_{ij}\) mostradas acima (para \(n=2\) elas se reduzem ao pêndulo duplo clássico de dois aros); a cada passo o programa resolve o sistema linear das acelerações angulares e avança o movimento ao vivo por RK4. Um gêmeo começa a um milésimo de radiano de distância no primeiro ângulo: sua separação do movimento principal cresce exponencialmente, a assinatura do caos (o segundo gráfico é o logaritmo na base 10 dessa separação). O primeiro gráfico mostra as velocidades angulares, uma cor para cada aro. Os ângulos iniciais variam em passos iguais de \(\theta_1\) a \(\theta_n\).
Pendure um aro de metal em um prego, depois um segundo aro na parte de baixo do primeiro e um terceiro na parte de baixo do segundo. Parece inocente, mas o movimento é caótico: comece duas cópias com uma diferença mínima e, em poucas oscilações, elas estarão fazendo coisas completamente diferentes. Escolha quantos aros pendem na cadeia: cada aro acrescenta mais uma maneira de se mover. O gráfico à direita mede a velocidade com que dois começos quase idênticos se afastam.
\(\tfrac{d}{dt}\tfrac{\partial\mathcal L}{\partial\dot\theta_i}=\tfrac{\partial\mathcal L}{\partial\theta_i}\)Pêndulo múltiplo de aros Um pêndulo múltiplo feito de \(n\) aros idênticos, com \(n\) de 2 a 6 escolhido na caixa de seleção: o primeiro pende de um pino na sua borda, e cada seguinte do pino no ponto oposto ao do anterior. Toda a massa de um aro está na borda, de modo que cada um tem momento de inércia \(mR^{2}\) em torno do centro. As equações vêm da lagrangiana, com um ângulo \(\theta_i\) por aro e as matrizes \(A_{ij}\) e \(H_{ij}\) mostradas acima (para \(n=2\) elas se reduzem ao pêndulo duplo clássico de dois aros); a cada passo o programa resolve o sistema linear das acelerações angulares e avança o movimento ao vivo por RK4. Um gêmeo começa a um milésimo de radiano de distância no primeiro ângulo: sua separação do movimento principal cresce exponencialmente, a assinatura do caos (o segundo gráfico é o logaritmo na base 10 dessa separação). O primeiro gráfico mostra as velocidades angulares, uma cor para cada aro. Os ângulos iniciais variam em passos iguais de \(\theta_1\) a \(\theta_n\).
Motor Stirling
Um motor Stirling em V: um cilindro quente e um frio ligados por um regenerador, com os pistões num mesmo pino de manivela a \(90^{\circ}\), de modo que o gás se expande quando quente e é comprimido quando frio. A pressão segue o modelo isotérmico de Schmidt; o volante obedece a \(I\dot\omega=\tau-b\omega\) (torque do gás menos carga e atrito), e dá para ver o motor partir (precisa de um empurrão), estabilizar numa velocidade constante ou parar quando a diferença de temperatura é pequena demais. O laço \(p\)–\(V\) é desenhado ao vivo e sua área é o trabalho por volta.
Um motor Stirling não tem explosões nem válvulas: ele apenas leva o mesmo ar preso de um lado quente para um lado frio e de volta. O ar quente empurra mais forte que o frio, então os pistões recebem mais empurrão na ida do que pagam na volta, e a diferença gira o volante. O laço do gráfico é a pressão e o volume do ar em uma volta, e a área dentro dele é o trabalho realizado.
\(p\Bigl(\tfrac{V_h}{T_h}+\tfrac{V_r}{T_r}+\tfrac{V_c}{T_c}\Bigr)=mR\)Motor Stirling Um motor Stirling em V: um cilindro quente e um frio ligados por um regenerador, com os pistões num mesmo pino de manivela a \(90^{\circ}\), de modo que o gás se expande quando quente e é comprimido quando frio. A pressão segue o modelo isotérmico de Schmidt; o volante obedece a \(I\dot\omega=\tau-b\omega\) (torque do gás menos carga e atrito), e dá para ver o motor partir (precisa de um empurrão), estabilizar numa velocidade constante ou parar quando a diferença de temperatura é pequena demais. O laço \(p\)–\(V\) é desenhado ao vivo e sua área é o trabalho por volta.
Pêndulo elástico e ressonância 2:1
Um pêndulo cuja haste é uma mola. Quando a frequência da mola é o dobro da do balanço (o padrão), os dois movimentos estão em ressonância 2:1 e a energia flui entre eles: uma massa que quica vira aos poucos uma massa que balança, e volta. A integração é feita em coordenadas cartesianas, onde a aceleração depende só da posição, e dá para comparar o RK4 com os integradores simpléticos.
Troque o fio de um pêndulo por uma mola e ele passa a quicar além de balançar. Quando o quique é exatamente duas vezes mais rápido que o balanço, os dois movimentos se acoplam e passam energia de um para o outro: uma massa que só quica começa a balançar, depois volta a quicar, de novo e de novo.
\(\ddot r=r\dot\theta^{2}-\frac{k}{m}(r-L_0)+g\cos\theta\)Pêndulo elástico e ressonância 2:1 Um pêndulo cuja haste é uma mola. Quando a frequência da mola é o dobro da do balanço (o padrão), os dois movimentos estão em ressonância 2:1 e a energia flui entre eles: uma massa que quica vira aos poucos uma massa que balança, e volta. A integração é feita em coordenadas cartesianas, onde a aceleração depende só da posição, e dá para comparar o RK4 com os integradores simpléticos.
Poço duplo sacudido e caos
Uma bola em uma pista de poço duplo que é sacudida lateralmente: \(\ddot x+\delta\dot x-x+x^{3}=\gamma\cos\omega t\). Com uma sacudida fraca a bola fica em um poço; com uma forte ela salta entre os poços de modo imprevisível. O gráfico à direita é uma seção de Poincaré, um ponto por período da sacudida: um movimento periódico deixa poucos pontos, o caos desenha as camadas dobradas de um atrator estranho.
Imagine uma bolinha de gude em uma pista com dois buracos, sobre uma mesa que você sacode de lado a lado. Uma sacudida suave deixa a bolinha balançar em um buraco. Uma sacudida forte o bastante a joga por cima da lombada, e então ela vagueia entre os dois buracos sem nenhum padrão previsível. A figura à direita marca a posição e a velocidade da bolinha uma vez por sacudida, e os pontos se acumulam em uma forma delicada e dobrada.
\(\ddot x+\delta\dot x-x+x^{3}=\gamma\cos\omega t\)Poço duplo sacudido e caos Uma bola em uma pista de poço duplo que é sacudida lateralmente: \(\ddot x+\delta\dot x-x+x^{3}=\gamma\cos\omega t\). Com uma sacudida fraca a bola fica em um poço; com uma forte ela salta entre os poços de modo imprevisível. O gráfico à direita é uma seção de Poincaré, um ponto por período da sacudida: um movimento periódico deixa poucos pontos, o caos desenha as camadas dobradas de um atrator estranho.
Ondas e luz
Luz, ondas, campos e escoamentos no estilo de livro-texto: um prisma, interferência, radiação, ondas de choque, uma casa cheia de wifi e o ar passando por uma asa.
Luz através de um prisma
Um feixe branco e fino atinge um prisma de vidro de ângulo de vértice \(A\). Em cada face a lei de Snell \(n_1\sin\theta_1=n_2\sin\theta_2\) desvia cada cor de modo diferente, porque o índice \(n(\lambda)\) depende do comprimento de onda (ajustes de Sellmeier para BK7, SF11, sílica fundida e água); 41 comprimentos de onda são traçados exatamente, face a face, e somados sobre o preto. O azul desvia mais que o vermelho, e o feixe se abre num espectro. O desvio total é \(\delta=\theta_1+\theta_4-A\) e tem um mínimo \(\delta_{\min}\) quando o raio dentro do prisma corre paralelo à base, o que dá o modo de medir o índice: \(n=\sin\tfrac{A+\delta_{\min}}2/\sin\tfrac A2\). O gráfico à esquerda mostra \(\delta\) em função do ângulo de incidência para o vermelho e o violeta; os pontos são os mínimos. Além de um ângulo crítico o raio não sai mais pela segunda face (reflexão total interna). Um segundo prisma, invertido, recombina as cores em branco, como Newton mostrou.
A luz branca é uma mistura de cores, e o vidro freia cada cor de modo ligeiramente diferente, então cada uma desvia um ângulo diferente ao entrar e ao sair. O vermelho desvia menos, o violeta mais, e o feixe se abre num arco-íris. Gire o prisma e a abertura muda; num ângulo especial o desvio é o menor possível, e esse desvio mínimo revela o índice do vidro. Coloque um segundo prisma de cabeça para baixo atrás do primeiro e as cores voltam a se juntar em branco.
\(n=\frac{\sin\frac{A+\delta_{\min}}{2}}{\sin\frac{A}{2}}\)Luz através de um prisma Um feixe branco e fino atinge um prisma de vidro de ângulo de vértice \(A\). Em cada face a lei de Snell \(n_1\sin\theta_1=n_2\sin\theta_2\) desvia cada cor de modo diferente, porque o índice \(n(\lambda)\) depende do comprimento de onda (ajustes de Sellmeier para BK7, SF11, sílica fundida e água); 41 comprimentos de onda são traçados exatamente, face a face, e somados sobre o preto. O azul desvia mais que o vermelho, e o feixe se abre num espectro. O desvio total é \(\delta=\theta_1+\theta_4-A\) e tem um mínimo \(\delta_{\min}\) quando o raio dentro do prisma corre paralelo à base, o que dá o modo de medir o índice: \(n=\sin\tfrac{A+\delta_{\min}}2/\sin\tfrac A2\). O gráfico à esquerda mostra \(\delta\) em função do ângulo de incidência para o vermelho e o violeta; os pontos são os mínimos. Além de um ângulo crítico o raio não sai mais pela segunda face (reflexão total interna). Um segundo prisma, invertido, recombina as cores em branco, como Newton mostrou.
Duas fendas: ondas e elétrons um de cada vez
Visto de cima: uma fonte à esquerda, uma barreira com duas fendas de largura \(a\) separadas por uma distância \(d\), e uma tela (a coluna tracejada) a uma distância \(L\) atrás dela. Atrás da tela, um gráfico lateral se alinha com a tela: a posição \(y\) corre na vertical e a intensidade acumulada, ou o número de pontos, corre para a direita; a curva é o padrão previsto, escalado aos dados, e as marcas à esquerda dela são as franjas claras \(d\sin\theta_m=m\lambda\), \(y_m=L\tan\theta_m\). Com ondas o programa resolve \(u_{tt}=c^2\nabla^2u\) numa grade (leapfrog, com bordas absorventes) e tira a média de \(u^2\) na tela. Com elétrons ele resolve a equação de Schrödinger \(i\psi_t=-\tfrac12\nabla^2\psi\) para um pacote gaussiano pelo esquema de Visscher; a densidade que o pacote deixa na tela é somada no tempo (uma vez para cada configuração, junto com os casos da fenda 1 sozinha e da fenda 2 sozinha), e cada ponto é um sorteio dessa distribuição, de modo que as franjas surgem do ruído como nos experimentos de Tonomura e outros. O detector de caminho sorteia cada ponto da soma dos dois padrões de fenda única: as franjas desaparecem. A visibilidade \(V\) das franjas é medida correlacionando as contagens com um cosseno do período esperado das franjas (cerca de \(1\) para um \(\cos^2\) limpo, perto de \(0\) para um envelope suave). O espaçamento medido é a distância do máximo central ao primeiro, para comparar com \(\lambda L/d\), que só é exato para ângulos pequenos. Os comprimentos estão em células da grade; mantenha \(a\) pelo menos em cerca de um comprimento de onda.
\(d\sin\theta_m=m\lambda\)
A matemática, em palavras simples
Mande uma onda contra uma parede com dois buraquinhos e duas ondas novas se espalham atrás dela. Onde as ondas se encontram crista com crista ficam fortes; onde crista encontra vale elas se anulam. Isso faz listras numa tela. O estranho é que elétrons fazem o mesmo mesmo quando são enviados um de cada vez: cada um faz um único ponto, e só depois de milhares de pontos as listras aparecem. Se você espiar por qual buraco cada elétron passou, as listras somem. Experimente com a chave.
\(d\sin\theta_m=m\lambda\)Duas fendas: ondas e elétrons um de cada vez Visto de cima: uma fonte à esquerda, uma barreira com duas fendas de largura \(a\) separadas por uma distância \(d\), e uma tela (a coluna tracejada) a uma distância \(L\) atrás dela. Atrás da tela, um gráfico lateral se alinha com a tela: a posição \(y\) corre na vertical e a intensidade acumulada, ou o número de pontos, corre para a direita; a curva é o padrão previsto, escalado aos dados, e as marcas à esquerda dela são as franjas claras \(d\sin\theta_m=m\lambda\), \(y_m=L\tan\theta_m\). Com ondas o programa resolve \(u_{tt}=c^2\nabla^2u\) numa grade (leapfrog, com bordas absorventes) e tira a média de \(u^2\) na tela. Com elétrons ele resolve a equação de Schrödinger \(i\psi_t=-\tfrac12\nabla^2\psi\) para um pacote gaussiano pelo esquema de Visscher; a densidade que o pacote deixa na tela é somada no tempo (uma vez para cada configuração, junto com os casos da fenda 1 sozinha e da fenda 2 sozinha), e cada ponto é um sorteio dessa distribuição, de modo que as franjas surgem do ruído como nos experimentos de Tonomura e outros. O detector de caminho sorteia cada ponto da soma dos dois padrões de fenda única: as franjas desaparecem. A visibilidade \(V\) das franjas é medida correlacionando as contagens com um cosseno do período esperado das franjas (cerca de \(1\) para um \(\cos^2\) limpo, perto de \(0\) para um envelope suave). O espaçamento medido é a distância do máximo central ao primeiro, para comparar com \(\lambda L/d\), que só é exato para ângulos pequenos. Os comprimentos estão em células da grade; mantenha \(a\) pelo menos em cerca de um comprimento de onda.
Sacuda uma carga e a luz escapa
Uma única carga pontual, desenhada com linhas de campo exatas no plano da figura (unidades com \(c=1\)). Cada linha é calculada a partir do campo de Liénard–Wiechert no tempo retardado, achado pelo método de Newton sobre a trajetória guardada. Enquanto a carga se move uniformemente as linhas apontam para longe de onde ela está agora; quando ela acelera, uma dobra em cada linha viaja para fora com a velocidade da luz, e através da dobra o campo aponta de lado. Essa parte lateral é o campo de radiação, que cai como \(1/R\) e não como \(1/R^2\) e é mais forte perpendicularmente à aceleração, com padrão angular \(dP/d\Omega\propto\sin^2\theta/(1-\beta\cos\theta)^5\) para uma carga freada ou acelerada ao longo da sua linha de movimento. A potência total é a de Larmor, \(P=\tfrac23\gamma^6a^2\) (com \(q=1\)). A sonda à direita lê o campo ali: o gráfico mostra a aceleração da carga e o campo \(E_y\) na sonda um pouco depois, com o atraso \(R/c\). Experimente um chute, uma sacudida, arrastar com o mouse, ou uma deriva perto da velocidade da luz, onde o padrão é comprimido para a frente. Os círculos de luz marcam onde a aceleração foi maior.
\(P=\tfrac{2}{3}\gamma^{6}a^{2}\)
A matemática, em palavras simples
Segure parada uma carguinha elétrica e o campo elétrico dela só aponta para longe, como os espinhos de um ouriço-do-mar. Agora dê um peteleco nela. A notícia de que ela se mexeu não viaja mais depressa que a luz, então longe dali as linhas de campo ainda apontam para onde a carga estava, e entre a parte perto e a parte longe cada linha tem uma dobra. A dobra corre para fora e, através dela, o campo aponta de lado. Esse balanço lateral é luz, e sacudir a carga para lá e para cá manda um trem contínuo dela. Experimente arrastar a carga você mesmo.
\(P=\tfrac{2}{3}\gamma^{6}a^{2}\)Sacuda uma carga e a luz escapa Uma única carga pontual, desenhada com linhas de campo exatas no plano da figura (unidades com \(c=1\)). Cada linha é calculada a partir do campo de Liénard–Wiechert no tempo retardado, achado pelo método de Newton sobre a trajetória guardada. Enquanto a carga se move uniformemente as linhas apontam para longe de onde ela está agora; quando ela acelera, uma dobra em cada linha viaja para fora com a velocidade da luz, e através da dobra o campo aponta de lado. Essa parte lateral é o campo de radiação, que cai como \(1/R\) e não como \(1/R^2\) e é mais forte perpendicularmente à aceleração, com padrão angular \(dP/d\Omega\propto\sin^2\theta/(1-\beta\cos\theta)^5\) para uma carga freada ou acelerada ao longo da sua linha de movimento. A potência total é a de Larmor, \(P=\tfrac23\gamma^6a^2\) (com \(q=1\)). A sonda à direita lê o campo ali: o gráfico mostra a aceleração da carga e o campo \(E_y\) na sonda um pouco depois, com o atraso \(R/c\). Experimente um chute, uma sacudida, arrastar com o mouse, ou uma deriva perto da velocidade da luz, onde o padrão é comprimido para a frente. Os círculos de luz marcam onde a aceleração foi maior.
Movimento supersônico: as ondas se acumulam num estrondo sônico
Uma fonte em movimento emite um pulso a cada sexto de segundo; cada pulso se espalha como um círculo de raio \(c\,(t-t_i)\) em torno do lugar onde foi emitido (velocidade do som \(c=343\) m/s, uma unidade vale 100 m, em câmera lenta). À frente da fonte os círculos se aglomeram, então um ouvinte ali ouve um som mais agudo, \(f_{\mathrm{obs}}=f_0/(1-M\cos\theta)\), onde \(M=v/c\) é o número de Mach. Em \(M=1\) os círculos se acumulam na fonte; para \(M>1\) eles têm um envelope comum, o cone de Mach, de semiângulo \(\sin\alpha=1/M\): um ouvinte sobre o cone recebe muitos pulsos no mesmo instante, o estrondo sônico (o gráfico da direita conta os pulsos ouvidos por segundo e dispara aí). Arraste o ouvinte, mude \(M\) e ligue o som para ouvir o sopro e o estrondo.
\(\sin\alpha=\frac{1}{M}\)
A matemática, em palavras simples
O som viaja com velocidade fixa, e cada pulso que um objeto em movimento faz se espalha como um círculo crescente. Se o objeto é mais lento que o som, os círculos ficam à frente dele. Se é mais rápido, ele ultrapassa o próprio som e os círculos se alinham numa frente em forma de V. Quem estiver onde essa frente passa ouve todos os pulsos de uma vez: um estrondo sônico. Quanto mais rápido o objeto, mais estreito o V.
\(\sin\alpha=\frac{1}{M}\)Movimento supersônico: as ondas se acumulam num estrondo sônico Uma fonte em movimento emite um pulso a cada sexto de segundo; cada pulso se espalha como um círculo de raio \(c\,(t-t_i)\) em torno do lugar onde foi emitido (velocidade do som \(c=343\) m/s, uma unidade vale 100 m, em câmera lenta). À frente da fonte os círculos se aglomeram, então um ouvinte ali ouve um som mais agudo, \(f_{\mathrm{obs}}=f_0/(1-M\cos\theta)\), onde \(M=v/c\) é o número de Mach. Em \(M=1\) os círculos se acumulam na fonte; para \(M>1\) eles têm um envelope comum, o cone de Mach, de semiângulo \(\sin\alpha=1/M\): um ouvinte sobre o cone recebe muitos pulsos no mesmo instante, o estrondo sônico (o gráfico da direita conta os pulsos ouvidos por segundo e dispara aí). Arraste o ouvinte, mude \(M\) e ligue o som para ouvir o sopro e o estrondo.
Wifi em casa: onde pôr o roteador
Uma planta de casa, vista de cima, com paredes de gesso, vidro, tijolo, concreto e metal. O ponto de acesso (AP) irradia uma onda de frequência angular \(\omega\); o programa resolve \(\nabla^2u+k^2u=-\delta(\mathbf x-\mathbf x_{\mathrm{AP}})\) avançando a equação de ondas amortecida \(u_{tt}+\sigma u_t=c^2\nabla^2u\) até ela ficar periódica e depois correlacionando \(u\) com \(\cos\omega t\) e \(\sin\omega t\) em períodos inteiros (um lock-in), o que dá a amplitude da solução estacionária. Cada parede é uma faixa de células com amortecimento extra \(\sigma\), calibrado por um teste unidimensional para que a parede custe o número de decibéis indicado. As cores dão a potência recebida em dBm, \(P=-40+20\log_{10}(|u|/|u|_{1\,\mathrm{m}})\), onde \(-40\) dBm é o nível usual a um metro de um roteador; as manchas escuras e claras são interferência entre a onda direta e as reflexões. Em duas dimensões a amplitude cai como \(1/\sqrt r\) e não como \(1/r\), e uma caixa corrige isso. O comprimento de onda é \(0{,}60\) m em vez de \(0{,}125\) m, para que a casa tenha 18 comprimentos de onda de largura em vez de 88. “Achar o melhor lugar” resolve o problema para 12 por 9 posições do AP numa grade mais grossa e refina as três melhores; a nota é a fração do piso onde o sinal, tirada a média numa janela de dois comprimentos de onda, é pelo menos o nível escolhido, para não perseguir as franjas de interferência. O gráfico à direita mostra o sinal ao longo da reta tracejada do AP até o ponto P, com uma marca em cada parede atravessada.
O wifi é uma onda, como as ondulações num lago. Ele se espalha a partir do roteador, bate nas paredes e fica mais fraco cada vez que atravessa uma. Onde as ondas de caminhos diferentes se encontram crista com crista o sinal é forte; crista com vale, ele quase some, e por isso mexer o celular a uma palma de distância pode mudar as barrinhas. Arraste o roteador pela casa e veja o mapa, ou deixe o computador tentar todos os lugares e dizer qual é o melhor.
\(\nabla^{2}u+k^{2}u=-\delta(\mathbf x-\mathbf x_{\mathrm{AP}})\)Wifi em casa: onde pôr o roteador Uma planta de casa, vista de cima, com paredes de gesso, vidro, tijolo, concreto e metal. O ponto de acesso (AP) irradia uma onda de frequência angular \(\omega\); o programa resolve \(\nabla^2u+k^2u=-\delta(\mathbf x-\mathbf x_{\mathrm{AP}})\) avançando a equação de ondas amortecida \(u_{tt}+\sigma u_t=c^2\nabla^2u\) até ela ficar periódica e depois correlacionando \(u\) com \(\cos\omega t\) e \(\sin\omega t\) em períodos inteiros (um lock-in), o que dá a amplitude da solução estacionária. Cada parede é uma faixa de células com amortecimento extra \(\sigma\), calibrado por um teste unidimensional para que a parede custe o número de decibéis indicado. As cores dão a potência recebida em dBm, \(P=-40+20\log_{10}(|u|/|u|_{1\,\mathrm{m}})\), onde \(-40\) dBm é o nível usual a um metro de um roteador; as manchas escuras e claras são interferência entre a onda direta e as reflexões. Em duas dimensões a amplitude cai como \(1/\sqrt r\) e não como \(1/r\), e uma caixa corrige isso. O comprimento de onda é \(0{,}60\) m em vez de \(0{,}125\) m, para que a casa tenha 18 comprimentos de onda de largura em vez de 88. “Achar o melhor lugar” resolve o problema para 12 por 9 posições do AP numa grade mais grossa e refina as três melhores; a nota é a fração do piso onde o sinal, tirada a média numa janela de dois comprimentos de onda, é pelo menos o nível escolhido, para não perseguir as franjas de interferência. O gráfico à direita mostra o sinal ao longo da reta tracejada do AP até o ponto P, com uma marca em cada parede atravessada.
Escoamento de ar ao redor de um perfil: subsônico, transônico, supersônico
Ar escoando da esquerda ao redor de um perfil, segundo as equações de Euler compressíveis \(\partial_t\mathbf U+\partial_x\mathbf F+\partial_y\mathbf G=0\) com \(\mathbf U=(\rho,\rho u,\rho v,E)\) e \(p=(\gamma-1)(E-\tfrac12\rho|\mathbf u|^2)\), \(\gamma=1{,}4\): sem viscosidade, em duas dimensões. O esquema é de volumes finitos: reconstrução linear por partes com limitador minmod, fluxos HLLC nas faces das células e um passo de Runge–Kutta de segunda ordem. O perfil é uma máscara de células; as células logo dentro dele recebem a imagem espelhada do escoamento de fora, refletida pela superfície verdadeira (método de células fantasma), de modo que o ar não atravessa. A visão padrão é uma fotografia schlieren numérica, \(|\nabla\rho|/\rho\), em que ondas de choque são linhas brilhantes e leques de expansão são faixas tênues. Para um perfil pontudo em velocidade supersônica o choque preso ao nariz é reto, e seu ângulo \(\beta\) vem de \(\tan\theta=\dfrac{2\cot\beta\,(M^2\sin^2\beta-1)}{M^2(\gamma+\cos2\beta)+2}\), onde \(\theta\) é o ângulo que a face desvia o escoamento; a pressão atrás dele é \(p_2/p_1=1+\tfrac{2\gamma}{\gamma+1}(M^2\sin^2\beta-1)\). Os tracejados amarelos e a leitura de \(C_p\) usam essas fórmulas exatas, e a simulação concorda com elas a menos de 1% para a cunha de \(10^\circ\) em \(M=2\) (ângulo \(39{,}4^\circ\) contra \(39{,}3^\circ\), \(C_p=0{,}253\) contra \(0{,}252\)) e a cerca de 10% para os perfis mais finos, cujas faces têm só duas ou três células de espessura. Os pontinhos brancos são as linhas de Mach, \(\sin\mu=1/M\), as menores perturbações possíveis. A força sobre o corpo é a soma da pressão nas faces da máscara; \(C_L\) e \(C_D\) são medidos em relação a \(\tfrac12\rho U^2c\) e suavizados por algumas unidades de tempo. Limites: não há camada limite, então não há estol e quase não há arrasto em regime subsônico (paradoxo de d'Alembert), a sustentação em Mach baixo fica bem abaixo do valor de aerofólio fino \(2\pi\alpha/\sqrt{1-M^2}\) nesta grade grosseira, e os choques se espalham por duas ou três células.
O ar é uma multidão de moléculas, e quando uma asa passa devagar por ele a multidão tem tempo de se abrir e contornar. Mais rápido que o som, a notícia de que a asa está chegando não consegue ir à frente, então o ar se amontoa numa folha fina, uma onda de choque, e se curva de uma vez só. Passe a velocidade por Mach 1 e veja o desenho suave virar linhas nítidas. Os formatos pontudos dão choques retos cujo ângulo pode ser calculado exatamente, e as linhas amarelas tracejadas mostram que o computador concorda. Incline a asa e o choque na parte de baixo fica mais forte.
\(\partial_t\mathbf U+\partial_x\mathbf F(\mathbf U)+\partial_y\mathbf G(\mathbf U)=0\)Escoamento de ar ao redor de um perfil: subsônico, transônico, supersônico Ar escoando da esquerda ao redor de um perfil, segundo as equações de Euler compressíveis \(\partial_t\mathbf U+\partial_x\mathbf F+\partial_y\mathbf G=0\) com \(\mathbf U=(\rho,\rho u,\rho v,E)\) e \(p=(\gamma-1)(E-\tfrac12\rho|\mathbf u|^2)\), \(\gamma=1{,}4\): sem viscosidade, em duas dimensões. O esquema é de volumes finitos: reconstrução linear por partes com limitador minmod, fluxos HLLC nas faces das células e um passo de Runge–Kutta de segunda ordem. O perfil é uma máscara de células; as células logo dentro dele recebem a imagem espelhada do escoamento de fora, refletida pela superfície verdadeira (método de células fantasma), de modo que o ar não atravessa. A visão padrão é uma fotografia schlieren numérica, \(|\nabla\rho|/\rho\), em que ondas de choque são linhas brilhantes e leques de expansão são faixas tênues. Para um perfil pontudo em velocidade supersônica o choque preso ao nariz é reto, e seu ângulo \(\beta\) vem de \(\tan\theta=\dfrac{2\cot\beta\,(M^2\sin^2\beta-1)}{M^2(\gamma+\cos2\beta)+2}\), onde \(\theta\) é o ângulo que a face desvia o escoamento; a pressão atrás dele é \(p_2/p_1=1+\tfrac{2\gamma}{\gamma+1}(M^2\sin^2\beta-1)\). Os tracejados amarelos e a leitura de \(C_p\) usam essas fórmulas exatas, e a simulação concorda com elas a menos de 1% para a cunha de \(10^\circ\) em \(M=2\) (ângulo \(39{,}4^\circ\) contra \(39{,}3^\circ\), \(C_p=0{,}253\) contra \(0{,}252\)) e a cerca de 10% para os perfis mais finos, cujas faces têm só duas ou três células de espessura. Os pontinhos brancos são as linhas de Mach, \(\sin\mu=1/M\), as menores perturbações possíveis. A força sobre o corpo é a soma da pressão nas faces da máscara; \(C_L\) e \(C_D\) são medidos em relação a \(\tfrac12\rho U^2c\) e suavizados por algumas unidades de tempo. Limites: não há camada limite, então não há estol e quase não há arrasto em regime subsônico (paradoxo de d'Alembert), a sustentação em Mach baixo fica bem abaixo do valor de aerofólio fino \(2\pi\alpha/\sqrt{1-M^2}\) nesta grade grosseira, e os choques se espalham por duas ou três células.
Calor, escoamento e céu
Máquinas térmicas, escoamento ao redor de um poste, duas maneiras de achar planetas em torno de outras estrelas, o arco-íris e rolos de convecção.
Máquinas térmicas e o limite de Carnot
Um gás num cilindro recebe calor \(Q_h\) de um reservatório quente, converte parte dele em trabalho \(W\) empurrando o pistão, e precisa despejar o resto \(Q_c\) num reservatório frio. Cada ciclo é desenhado como uma curva fechada no plano \(T\)–\(S\), onde o calor é a área sob \(T\,dS\) e o trabalho é a área envolvida pelo laço, de modo que \(\eta=W/Q_h\) é calculado exatamente (energias por mol de gás). O ciclo de Carnot (duas isotermas e duas adiabáticas) é um retângulo e atinge \(\eta_C=1-T_c/T_h\); os ciclos de Stirling (com regenerador ideal), Otto, Diesel e Brayton ficam abaixo. O gráfico da direita mostra o mesmo laço no plano \(P\)–\(V\) com eixos logarítmicos (adiabáticas e isotermas viram retas), usando \(V=\exp((S-C_V\ln T)/R)\) para um gás ideal. A marca tracejada \(\eta_{CA}=1-\sqrt{T_c/T_h}\) é o rendimento de Curzon–Ahlborn na potência máxima. Marque “Desenhar meu ciclo” e arraste qualquer curva fechada no gráfico \(T\)–\(S\) (na vista ampliada): seu rendimento nunca passa de \(\eta_C\).
\(\eta\le1-\frac{T_c}{T_h}\)
A matemática, em palavras simples
Uma máquina queima combustível ou absorve calor, mas nunca consegue transformar tudo em movimento: um pouco de calor sempre precisa escoar para um lugar mais frio. Em 1824 Sadi Carnot mostrou que o melhor que qualquer máquina pode fazer depende só de quão quente e quão frio é o ambiente. Desenhe um laço de temperatura contra entropia e a área dentro dele é o trabalho útil. Um retângulo é o ideal, e qualquer outra forma, até uma que você rabiscar, desperdiça mais.
\(\eta\le1-\frac{T_c}{T_h}\)Máquinas térmicas e o limite de Carnot Um gás num cilindro recebe calor \(Q_h\) de um reservatório quente, converte parte dele em trabalho \(W\) empurrando o pistão, e precisa despejar o resto \(Q_c\) num reservatório frio. Cada ciclo é desenhado como uma curva fechada no plano \(T\)–\(S\), onde o calor é a área sob \(T\,dS\) e o trabalho é a área envolvida pelo laço, de modo que \(\eta=W/Q_h\) é calculado exatamente (energias por mol de gás). O ciclo de Carnot (duas isotermas e duas adiabáticas) é um retângulo e atinge \(\eta_C=1-T_c/T_h\); os ciclos de Stirling (com regenerador ideal), Otto, Diesel e Brayton ficam abaixo. O gráfico da direita mostra o mesmo laço no plano \(P\)–\(V\) com eixos logarítmicos (adiabáticas e isotermas viram retas), usando \(V=\exp((S-C_V\ln T)/R)\) para um gás ideal. A marca tracejada \(\eta_{CA}=1-\sqrt{T_c/T_h}\) é o rendimento de Curzon–Ahlborn na potência máxima. Marque “Desenhar meu ciclo” e arraste qualquer curva fechada no gráfico \(T\)–\(S\) (na vista ampliada): seu rendimento nunca passa de \(\eta_C\).
Vento em torno de um poste: ruas de vórtices
O fluido vem da esquerda e passa por um poste. O programa resolve o escoamento pelo método de Boltzmann em rede: o fluido é um enxame de partículas que saltam entre células vizinhas de uma grade em nove direções e colidem (aqui pela regra “BGK regularizada”), o que reproduz as equações de Navier–Stokes quando a velocidade é pequena comparada à do som. O poste é uma máscara de células onde as partículas quicam; a força sobre ele é o momento que elas entregam, dando os coeficientes de arrasto e de sustentação \(C_D=2F_x/\rho U^2D\) e \(C_L=2F_y/\rho U^2D\). Com número de Reynolds baixo \(\mathrm{Re}=UD/\nu\) a esteira é estacionária; acima de cerca de \(47\) ela fica instável e vórtices alternados se desprendem (uma rua de von Kármán), de modo que \(C_L\) oscila com número de Strouhal \(\mathrm{St}=fD/U\approx0{,}198\,(1-19{,}7/\mathrm{Re})\) (curva tracejada: ajuste de Roshko a medidas; nossa caixa tem só oito diâmetros de altura, o que eleva St alguns por cento). Experimente o aerofólio: inclinado para cima ele gera sustentação (\(C_L>0\)) e estola em ângulos grandes. Numa placa gráfica a grade é \(512\times192\); sem ela o programa recorre a uma grade mais grossa \(192\times80\) no processador. A vorticidade é \(\omega=\partial_xv-\partial_yu\), em unidades de \(U/D\). O corante não é desenhado (o solver guarda o campo de velocidades, não trajetórias de partículas).
\(\mathrm{St}=\frac{fD}{U}\approx0.2\)
A matemática, em palavras simples
Quando o vento passa por um poste ou um fio, o ar não consegue mais deslizar suavemente em volta dele se o vento for forte o bastante. Pequenos redemoinhos se soltam atrás, primeiro de um lado, depois do outro, como uma fileira de tornadinhos. É por isso que os fios de luz zumbem com o vento. Você pode arrastar o poste, mudar a velocidade do vento e até trocar o poste pela asa de um avião e inclinar para ver a força que o levanta. O computador faz de conta que o ar são muitas bolinhas quicando numa grade.
\(\mathrm{St}=\frac{fD}{U}\approx0.2\)Vento em torno de um poste: ruas de vórtices O fluido vem da esquerda e passa por um poste. O programa resolve o escoamento pelo método de Boltzmann em rede: o fluido é um enxame de partículas que saltam entre células vizinhas de uma grade em nove direções e colidem (aqui pela regra “BGK regularizada”), o que reproduz as equações de Navier–Stokes quando a velocidade é pequena comparada à do som. O poste é uma máscara de células onde as partículas quicam; a força sobre ele é o momento que elas entregam, dando os coeficientes de arrasto e de sustentação \(C_D=2F_x/\rho U^2D\) e \(C_L=2F_y/\rho U^2D\). Com número de Reynolds baixo \(\mathrm{Re}=UD/\nu\) a esteira é estacionária; acima de cerca de \(47\) ela fica instável e vórtices alternados se desprendem (uma rua de von Kármán), de modo que \(C_L\) oscila com número de Strouhal \(\mathrm{St}=fD/U\approx0{,}198\,(1-19{,}7/\mathrm{Re})\) (curva tracejada: ajuste de Roshko a medidas; nossa caixa tem só oito diâmetros de altura, o que eleva St alguns por cento). Experimente o aerofólio: inclinado para cima ele gera sustentação (\(C_L>0\)) e estola em ângulos grandes. Numa placa gráfica a grade é \(512\times192\); sem ela o programa recorre a uma grade mais grossa \(192\times80\) no processador. A vorticidade é \(\omega=\partial_xv-\partial_yu\), em unidades de \(U/D\). O corante não é desenhado (o solver guarda o campo de velocidades, não trajetórias de partículas).
Uma queda de brilho: achando um planeta pelo trânsito
Quando um planeta cruza o disco de sua estrela, a luz diminui cerca de \(\delta\approx(R_p/R_s)^2\), a fração do disco coberta pelo planeta. A estrela é mais escura na borda (escurecimento do limbo, \(I(\mu)=1-u_1(1-\mu)-u_2(1-\mu)^2\)), então a queda é arredondada e um pouco mais funda no centro; o programa soma a luz bloqueada pelo planeta em 400 anéis da estrela. A duração \(T_{14}\) depende da órbita por \(a/R_s\) e do parâmetro de impacto \(b=(a/R_s)\cos i\); para \(b>1+p\) o planeta passa ao largo. A órbita é uma órbita de Kepler exata e o tempo é desacelerado enquanto o planeta cruza. Toque em Observar para simular um levantamento com amostragem tipo Kepler de 29,4 minutos e o seu nível de ruído: os pontos se acumulam em torno do modelo e um planeta pequeno emerge do ruído. As predefinições são valores arredondados da literatura e aproximados.
\(\delta\approx\Bigl(\frac{R_p}{R_s}\Bigr)^{2}\)
A matemática, em palavras simples
Se um planeta passa na frente de sua estrela, visto daqui, a estrela fica um pouquinho mais escura por algumas horas. Um planeta grande bloqueia mais luz que um pequeno, então a profundidade da queda revela o tamanho dele, e a duração revela algo sobre a órbita. Telescópios como o Kepler observaram milhares de estrelas assim e encontraram milhares de planetas. A estrela é mais escura na borda do que no meio, o que dá à queda o fundo arredondado.
\(\delta\approx\Bigl(\frac{R_p}{R_s}\Bigr)^{2}\)Uma queda de brilho: achando um planeta pelo trânsito Quando um planeta cruza o disco de sua estrela, a luz diminui cerca de \(\delta\approx(R_p/R_s)^2\), a fração do disco coberta pelo planeta. A estrela é mais escura na borda (escurecimento do limbo, \(I(\mu)=1-u_1(1-\mu)-u_2(1-\mu)^2\)), então a queda é arredondada e um pouco mais funda no centro; o programa soma a luz bloqueada pelo planeta em 400 anéis da estrela. A duração \(T_{14}\) depende da órbita por \(a/R_s\) e do parâmetro de impacto \(b=(a/R_s)\cos i\); para \(b>1+p\) o planeta passa ao largo. A órbita é uma órbita de Kepler exata e o tempo é desacelerado enquanto o planeta cruza. Toque em Observar para simular um levantamento com amostragem tipo Kepler de 29,4 minutos e o seu nível de ruído: os pontos se acumulam em torno do modelo e um planeta pequeno emerge do ruído. As predefinições são valores arredondados da literatura e aproximados.
Oscilação Doppler: pesando um planeta pelo movimento da estrela
Um planeta e sua estrela giram em torno do centro de massa comum. Vista de longe, a velocidade da estrela na linha de visada muda como \(v_r=K[\cos(\nu+\omega)+e\cos\omega]\), onde \(\nu\) vem da equação de Kepler \(M=E-e\sin E\) (resolvida pelo método de Newton) e a amplitude \(K\) cresce com a massa do planeta \(m\sin i\) e diminui com o período. O efeito Doppler transforma essa velocidade num minúsculo deslocamento das linhas espectrais (a figura o exagera enormemente): para o vermelho quando a estrela se afasta, para o azul quando se aproxima. Um Júpiter em torno do Sol dá \(K=12{,}5\) m/s, uma Terra apenas \(0{,}09\) m/s. Toque em Observar para tomar medidas aleatórias de velocidade com o seu nível de ruído: o período é achado por um periodograma de Lomb–Scargle e um ajuste por mínimos quadrados, e os dados dobrados caem sobre a curva ajustada. O sistema planetário é compartilhado com o cartão do trânsito; juntando os dois temos a massa pela oscilação e o raio pelo trânsito, logo a densidade. As predefinições são valores arredondados da literatura e aproximados.
Um planeta puxa sua estrela, então a estrela balança um pouquinho enquanto o planeta gira. Quando a estrela se move na nossa direção a luz dela é comprimida um tiquinho para o azul, e quando se afasta a luz é esticada para o vermelho. Astrônomos medem essa mudança de cor com enorme precisão e descobrem que há um planeta, quão pesado ele é e quanto dura o ano dele. Planetas grandes perto das estrelas puxam mais forte, e por isso foram achados primeiro.
\(K=\Bigl(\frac{2\pi G}{P}\Bigr)^{1/3}\frac{m\sin i}{(M+m)^{2/3}\sqrt{1-e^{2}}}\)Oscilação Doppler: pesando um planeta pelo movimento da estrela Um planeta e sua estrela giram em torno do centro de massa comum. Vista de longe, a velocidade da estrela na linha de visada muda como \(v_r=K[\cos(\nu+\omega)+e\cos\omega]\), onde \(\nu\) vem da equação de Kepler \(M=E-e\sin E\) (resolvida pelo método de Newton) e a amplitude \(K\) cresce com a massa do planeta \(m\sin i\) e diminui com o período. O efeito Doppler transforma essa velocidade num minúsculo deslocamento das linhas espectrais (a figura o exagera enormemente): para o vermelho quando a estrela se afasta, para o azul quando se aproxima. Um Júpiter em torno do Sol dá \(K=12{,}5\) m/s, uma Terra apenas \(0{,}09\) m/s. Toque em Observar para tomar medidas aleatórias de velocidade com o seu nível de ruído: o período é achado por um periodograma de Lomb–Scargle e um ajuste por mínimos quadrados, e os dados dobrados caem sobre a curva ajustada. O sistema planetário é compartilhado com o cartão do trânsito; juntando os dois temos a massa pela oscilação e o raio pelo trânsito, logo a densidade. As predefinições são valores arredondados da literatura e aproximados.
O arco-íris: uma gota, um ângulo
Uma gota de chuva esférica de raio \(R\), seguida raio a raio. Um raio com parâmetro de impacto \(b=\sin i\) (a gota tem raio 1) refrata na superfície, \(\sin i=n\sin r\), reflete \(k\) vezes por dentro e sai; o ângulo entre a linha de visada e o ponto oposto ao sol é \(\alpha_1=4r-2i\) no arco primário (\(k=1\)) e \(\alpha_2=\pi+2i-6r\) no secundário (\(k=2\)). \(\alpha(b)\) tem um extremo, \(\mathrm d\alpha/\mathrm db=0\), em \(\cos^2 i=(n^2-1)/(k^2+2k)\), onde muitos raios saem na mesma direção: é o arco-íris. Com o índice de refração da água pela fórmula de Sellmeier, \(n=1{,}3317\) a 650 nm e \(1{,}3431\) a 405 nm, isso dá \(42{,}3^\circ\) e \(40{,}6^\circ\) no arco primário (vermelho por fora) e \(50{,}5^\circ\) e \(53{,}5^\circ\) no secundário (vermelho por dentro). A ótica geométrica dá intensidade infinita no extremo, então o programa soma as ondas: perto de \(\alpha_k\) a intensidade é \(I\propto\mathrm{Ai}^2\big((\alpha-\alpha_k)/h\big)\) com \(h=(2\pi R/\lambda)^{-2/3}(|\alpha''|/2)^{1/3}\), onde \(\mathrm{Ai}\) é a função de Airy, ponderada pelas refletâncias de Fresnel e suavizada pela largura de \(0{,}53^\circ\) do sol. Cada um de 16 comprimentos de onda de 400 a 700 nm vira cor pelo ajuste CIE. A figura do céu é uma projeção estereográfica (círculos continuam círculos) com o sol atrás de você na altura escolhida, então o arco é um círculo centrado no ponto antissolar, e o topo do arco primário fica a \(42^\circ\) menos a altura do sol. Gotas menores dão um arco mais largo e de cor mais fraca e, abaixo de cerca de 0,05 mm, o arco branco de neblina; gotas maiores dão um arco mais nítido, com faixas supranumerárias extras do lado de dentro. O brilho pálido dentro do arco primário e a faixa escura entre os arcos vêm dos raios longe do extremo, na ótica geométrica. O círculo tracejado varre o ângulo de visada, e os três tons são o conteúdo de vermelho, verde e azul nesse ângulo.
\(\cos^{2}i=\frac{n^{2}-1}{k^{2}+2k}\)
A matemática, em palavras simples
Cada gota de chuva é uma bolinha de água que curva a luz do sol, a faz bater uma vez na parede de trás e a manda de volta na direção do sol. Raios que entram em alturas diferentes saem em direções diferentes, exceto perto de uma altura especial em que a direção de saída para de mudar, então muita luz se acumula no mesmo ângulo, cerca de 42 graus do ponto oposto ao sol. Esse é o arco-íris. A água curva o azul um pouco mais que o vermelho, então cada cor se acumula no seu ângulo e o vermelho fica por fora. Mexa no tamanho da gota e na altura do sol e veja o arco mudar, e procure a faixa escura entre os dois arcos.
\(\cos^{2}i=\frac{n^{2}-1}{k^{2}+2k}\)O arco-íris: uma gota, um ângulo Uma gota de chuva esférica de raio \(R\), seguida raio a raio. Um raio com parâmetro de impacto \(b=\sin i\) (a gota tem raio 1) refrata na superfície, \(\sin i=n\sin r\), reflete \(k\) vezes por dentro e sai; o ângulo entre a linha de visada e o ponto oposto ao sol é \(\alpha_1=4r-2i\) no arco primário (\(k=1\)) e \(\alpha_2=\pi+2i-6r\) no secundário (\(k=2\)). \(\alpha(b)\) tem um extremo, \(\mathrm d\alpha/\mathrm db=0\), em \(\cos^2 i=(n^2-1)/(k^2+2k)\), onde muitos raios saem na mesma direção: é o arco-íris. Com o índice de refração da água pela fórmula de Sellmeier, \(n=1{,}3317\) a 650 nm e \(1{,}3431\) a 405 nm, isso dá \(42{,}3^\circ\) e \(40{,}6^\circ\) no arco primário (vermelho por fora) e \(50{,}5^\circ\) e \(53{,}5^\circ\) no secundário (vermelho por dentro). A ótica geométrica dá intensidade infinita no extremo, então o programa soma as ondas: perto de \(\alpha_k\) a intensidade é \(I\propto\mathrm{Ai}^2\big((\alpha-\alpha_k)/h\big)\) com \(h=(2\pi R/\lambda)^{-2/3}(|\alpha''|/2)^{1/3}\), onde \(\mathrm{Ai}\) é a função de Airy, ponderada pelas refletâncias de Fresnel e suavizada pela largura de \(0{,}53^\circ\) do sol. Cada um de 16 comprimentos de onda de 400 a 700 nm vira cor pelo ajuste CIE. A figura do céu é uma projeção estereográfica (círculos continuam círculos) com o sol atrás de você na altura escolhida, então o arco é um círculo centrado no ponto antissolar, e o topo do arco primário fica a \(42^\circ\) menos a altura do sol. Gotas menores dão um arco mais largo e de cor mais fraca e, abaixo de cerca de 0,05 mm, o arco branco de neblina; gotas maiores dão um arco mais nítido, com faixas supranumerárias extras do lado de dentro. O brilho pálido dentro do arco primário e a faixa escura entre os arcos vêm dos raios longe do extremo, na ótica geométrica. O círculo tracejado varre o ângulo de visada, e os três tons são o conteúdo de vermelho, verde e azul nesse ângulo.
Rolos de convecção: quando um fluido parado cede
Convecção de Rayleigh–Bénard: uma camada de fluido de profundidade \(d\) entre duas placas rígidas, quente embaixo (\(T=1\)) e fria em cima (\(T=0\)), periódica na horizontal sobre dois comprimentos de onda (quatro rolos). Na aproximação de Boussinesq a variação da densidade só importa pela força de empuxo: \(\partial_t\mathbf u+\mathbf u\cdot\nabla\mathbf u=-\nabla p+\mathrm{Pr}\,\nabla^{2}\mathbf u+\mathrm{Pr}\,\mathrm{Ra}\,\theta\,\hat{\mathbf z}\) e \(\partial_t T+\mathbf u\cdot\nabla T=\nabla^{2}T\), onde \(\theta\) é o desvio de \(T\) em relação ao perfil de condução, \(\mathrm{Ra}=g\alpha\,\Delta T\,d^{3}/(\nu\kappa)\) e \(\mathrm{Pr}=\nu/\kappa\); os comprimentos estão em unidades de \(d\) e os tempos em unidades de \(d^{2}/\kappa\). Em repouso a temperatura cai linearmente, \(T=1-z\), e para \(\mathrm{Ra}\) pequeno qualquer perturbação se extingue. Para placas rígidas o estado parado fica instável pela primeira vez em \(\mathrm{Ra}_c=1707{,}76\), com rolos de número de onda \(k_c=3{,}116\): cada rolo tem largura \(\pi/k_c=1{,}008\,d\), quase igual à profundidade da camada. O programa escreve o escoamento com uma função de corrente \(\psi\) (\(u=\psi_z\), \(w=-\psi_x\)) e a vorticidade \(\omega=\nabla^{2}\psi\), usa diferenças de segunda ordem em 128 por 32 pontos, o jacobiano de Arakawa para a advecção, a equação de Poisson resolvida exatamente por uma transformada de Fourier em \(x\) e um sistema tridiagonal em \(z\), a fórmula de Thom para a vorticidade nas paredes e um passo de Adams–Bashforth cujo tamanho segue o número CFL. Acima do limiar a amplitude satura e o fluxo de calor, o número de Nusselt \(\mathrm{Nu}=1+\langle w\theta\rangle\), segue \(\mathrm{Nu}-1\approx1{,}43\,(1-\mathrm{Ra}_c/\mathrm{Ra})\) perto do limiar e depois cresce mais devagar; para \(\mathrm{Ra}\) grande toda a queda de temperatura fica em camadas limite finas de espessura \(\delta\approx d/(2\,\mathrm{Nu})\). O botão Medir Ra_c roda uma cópia oculta do programa, numa grade mais grossa de 64 por 24 para continuar rápida, em três números de Rayleigh, a partir de uma perturbação de tamanho \(10^{-7}\), ajusta a taxa de crescimento \(\sigma\) da velocidade vertical e acha o zero de \(\sigma(\mathrm{Ra})\) pelo método da secante; o resultado aparece na leitura \(\widehat{\mathrm{Ra}}_c\). Clique na figura para aquecer ou resfriar um ponto: abaixo de \(\mathrm{Ra}_c\) os rolos desaparecem, acima dele eles se formam de novo.
\(\mathrm{Ra}_c=1707.76\)
A matemática, em palavras simples
Aqueça uma panela de água por baixo e, no começo, nada acontece: o calor apenas conduz para cima. Aumente o fogo e, num limiar preciso, a água cede. A água quente sobe em alguns lugares, a fria desce em outros, e o escoamento se organiza em rolos bem-arrumados. Passe o número de Rayleigh por 1708 e veja os rolos surgirem do nada; clique para cutucar o fluido e ver como ele se recompõe.
\(\mathrm{Ra}_c=1707.76\)Rolos de convecção: quando um fluido parado cede Convecção de Rayleigh–Bénard: uma camada de fluido de profundidade \(d\) entre duas placas rígidas, quente embaixo (\(T=1\)) e fria em cima (\(T=0\)), periódica na horizontal sobre dois comprimentos de onda (quatro rolos). Na aproximação de Boussinesq a variação da densidade só importa pela força de empuxo: \(\partial_t\mathbf u+\mathbf u\cdot\nabla\mathbf u=-\nabla p+\mathrm{Pr}\,\nabla^{2}\mathbf u+\mathrm{Pr}\,\mathrm{Ra}\,\theta\,\hat{\mathbf z}\) e \(\partial_t T+\mathbf u\cdot\nabla T=\nabla^{2}T\), onde \(\theta\) é o desvio de \(T\) em relação ao perfil de condução, \(\mathrm{Ra}=g\alpha\,\Delta T\,d^{3}/(\nu\kappa)\) e \(\mathrm{Pr}=\nu/\kappa\); os comprimentos estão em unidades de \(d\) e os tempos em unidades de \(d^{2}/\kappa\). Em repouso a temperatura cai linearmente, \(T=1-z\), e para \(\mathrm{Ra}\) pequeno qualquer perturbação se extingue. Para placas rígidas o estado parado fica instável pela primeira vez em \(\mathrm{Ra}_c=1707{,}76\), com rolos de número de onda \(k_c=3{,}116\): cada rolo tem largura \(\pi/k_c=1{,}008\,d\), quase igual à profundidade da camada. O programa escreve o escoamento com uma função de corrente \(\psi\) (\(u=\psi_z\), \(w=-\psi_x\)) e a vorticidade \(\omega=\nabla^{2}\psi\), usa diferenças de segunda ordem em 128 por 32 pontos, o jacobiano de Arakawa para a advecção, a equação de Poisson resolvida exatamente por uma transformada de Fourier em \(x\) e um sistema tridiagonal em \(z\), a fórmula de Thom para a vorticidade nas paredes e um passo de Adams–Bashforth cujo tamanho segue o número CFL. Acima do limiar a amplitude satura e o fluxo de calor, o número de Nusselt \(\mathrm{Nu}=1+\langle w\theta\rangle\), segue \(\mathrm{Nu}-1\approx1{,}43\,(1-\mathrm{Ra}_c/\mathrm{Ra})\) perto do limiar e depois cresce mais devagar; para \(\mathrm{Ra}\) grande toda a queda de temperatura fica em camadas limite finas de espessura \(\delta\approx d/(2\,\mathrm{Nu})\). O botão Medir Ra_c roda uma cópia oculta do programa, numa grade mais grossa de 64 por 24 para continuar rápida, em três números de Rayleigh, a partir de uma perturbação de tamanho \(10^{-7}\), ajusta a taxa de crescimento \(\sigma\) da velocidade vertical e acha o zero de \(\sigma(\mathrm{Ra})\) pelo método da secante; o resultado aparece na leitura \(\widehat{\mathrm{Ra}}_c\). Clique na figura para aquecer ou resfriar um ponto: abaixo de \(\mathrm{Ra}_c\) os rolos desaparecem, acima dele eles se formam de novo.
Atratores estranhos
Dezessete fluxos caóticos, um só cartão: duas bolas soltas quase do mesmo lugar, as equações que as movem e um som que acompanha o caminho delas.
Atratores estranhos
Duas bolas são soltas quase no mesmo lugar e seguem as mesmas três equações. Escolha um dos dezessete atratores estranhos da lista: as equações, a descrição, os expoentes de Lyapunov ao vivo e o som mudam com a sua escolha. A altura de cada bola segue a sua coordenada \(x\).
\(\frac{d\mathbf{x}}{dt}=\mathbf{F}(\mathbf{x})\)
A matemática, em palavras simples
Pegue qualquer regra que diga para onde um ponto se move em seguida e solte duas bolas quase do mesmo lugar. Num sistema comum elas ficam juntas; num caótico a distância cresce de modo exponencial, e mesmo assim as duas bolas continuam numa superfície fina e dobrada no espaço: o atrator estranho. A altura de cada bola segue a sua coordenada \(x\), então você ouve duas vozes que começam como uma e se afastam. Os números sob a figura são os expoentes de Lyapunov: o primeiro, quando positivo, é a taxa com que a distância cresce (a linha tracejada no gráfico da direita), e o mais negativo comprime tudo de volta para a superfície. A dimensão fractal dessa superfície, entre 2 e 3, é calculada a partir dos expoentes (Kaplan–Yorke).
\(\frac{d\mathbf{x}}{dt}=\mathbf{F}(\mathbf{x})\)Atratores estranhos Duas bolas são soltas quase no mesmo lugar e seguem as mesmas três equações. Escolha um dos dezessete atratores estranhos da lista: as equações, a descrição, os expoentes de Lyapunov ao vivo e o som mudam com a sua escolha. A altura de cada bola segue a sua coordenada \(x\).
Renderizado ao vivo na sua GPU
Fragment shaders escritos em GLSL e executados em tempo real via WebGL. Precisam de um dispositivo razoavelmente recente e adaptam a qualidade à sua velocidade.
\(d(p)=\sqrt{\sum_i r_i^{2}-\max r_i^{2}}-\varepsilon\)Treliça de cubos em arame Uma treliça infinita de cubos em arame, renderizada na sua GPU por ray marching enquanto a câmera percorre um caminho suave e aleatório. Cada raio avança pela distância \(d\) até a aresta de cubo mais próxima, onde \(r_i=|p_i|-a\), \(a\) é metade do comprimento da aresta e o máximo percorre os eixos com \(|p_i|\lt a\). Distorção de lente e aberração cromática são aplicadas a cada raio. Clique para ampliar e arraste para olhar ao redor.
A matemática, em palavras simples
Para desenhar isto, o computador lança um raio de cada pixel e faz uma única pergunta: qual a distância até a superfície mais próxima? Em seguida avança exatamente essa distância, o que é garantidamente seguro, e repete. A fórmula da distância é apenas Pitágoras mais um truque de dobrar o espaço para que um único cubo se repita para sempre.
\(\{p,q\},\qquad \tfrac1p+\tfrac1q<\tfrac12\)Ladrilhamento hiperbólico O ladrilhamento regular \(\{p,q\}\) do plano hiperbólico (disco de Poincaré): \(p\)-ágonos, \(q\) em cada vértice. Cada pixel é dobrado em um triângulo fundamental por reflexões, e o observador desliza pelo disco por transformações de Möbius. Todos os ladrilhos são congruentes na métrica hiperbólica.
A matemática, em palavras simples
Na geometria plana os ângulos de um triângulo somam \(180^\circ\) e poucas formas regulares ladrilham o plano. Em uma superfície que curva para o outro lado (o plano hiperbólico) há mais espaço, e existem infinitos ladrilhamentos sempre que \(1/p+1/q<1/2\). O disco é um mapa que espreme o infinito em um círculo, por isso os ladrilhos parecem menores perto da borda.
\(\mathrm{Cay}\big(F_2,\{a,b\}\big)\subset\mathbb H^2\)Grafo de Cayley de um grupo livre O grafo de Cayley do grupo livre \(F_2=\langle a,b\rangle\), uma árvore 4-regular, desenhado no plano hiperbólico onde \(a\) e \(b\) agem como translações ao longo de eixos perpendiculares. Os vértices são os elementos do grupo e as arestas ligam \(g\) a \(gs\). Cada pixel é dobrado no domínio de Dirichlet do grupo; as cores mostram a primeira letra da palavra.
A matemática, em palavras simples
Um grupo é um conjunto de movimentos. No grupo livre em \(a\) e \(b\), você só pode se mover por \(a, a^{-1}, b, b^{-1}\) e nada se cancela exceto desfazer o passo anterior. Desenhar cada posição como um ponto dá uma árvore que se ramifica em quatro direções para sempre. Essa árvore cresce rápido demais para caber no plano comum, mas cabe perfeitamente no plano hiperbólico.
\(\mathbb P(\lambda)=\frac{(f^{\lambda})^{2}}{n!}\)Paisagem de Plancherel Cada torre é a massa de Plancherel de todas as partições \(\lambda\vdash n\) com dada linha mais longa (um eixo) e coluna mais longa (o outro); \(f^{\lambda}=\dim S^{\lambda}\) é a dimensão do módulo de Specht. A massa se concentra perto de \(2\sqrt n\) nas duas direções, a forma limite de Logan-Shepp-Vershik-Kerov. As alturas usam uma escala do tipo raiz quadrada.
A matemática, em palavras simples
Há \(f^\lambda\) maneiras de construir uma forma escada \(\lambda\) caixa por caixa. Dê a cada forma uma probabilidade proporcional ao quadrado desse número e você obtém uma forma aleatória com \(n\) caixas. As torres mostram onde o acaso se concentra: a maioria das formas tem a maior linha e a maior coluna de comprimentos parecidos, perto de \(2\sqrt n\). Contar, mais uma vez, produz uma lei dos grandes números.
\(q\mapsto q^{2}+c,\qquad q,c\in\mathbb H\)Conjunto de Julia quaterniônico Uma fatia tridimensional do conjunto de Julia de \(q\mapsto q^2+c\) sobre os quatérnios \(\mathbb H\), renderizada por ray marching com estimativa de distância, enquanto \(c\) varia lentamente. Use o plano de corte para olhar por dentro.
A matemática, em palavras simples
Os números complexos estendem a reta para um plano; os quatérnios dão mais um passo, para quatro dimensões. Elevar ao quadrado e somar uma constante, \(q\mapsto q^2+c\), faz sentido ali também. Um ponto pertence ao conjunto de Julia se nunca escapa para o infinito. Só vemos uma fatia 3-D de um objeto 4-D, e conforme \(c\) se move a fatia derrete e se refaz.
\(z\mapsto z-\frac{P(z)}{P'(z)}\)Fractal de Newton O método de Newton para um polinômio \(P\) cujas raízes (pontos brancos) se movem no plano. Cada pixel é um ponto inicial, colorido pela raiz para a qual converge e escurecido conforme o número de passos necessários. A fronteira fractal separa as bacias de atração.
A matemática, em palavras simples
O método de Newton encontra uma raiz deslizando repetidamente pela reta tangente. Comece perto de uma raiz e ele converge rápido. Comece entre duas raízes e é uma moeda no ar, e a fronteira entre as regiões tem detalhes infinitos: por mais que se aproxime, todas as cores se encontram em cada ponto da fronteira. Uma receita simples, com um mapa de resultados inesperadamente selvagem.
Sistemas de partículas na GPU
Centenas de milhares de partículas simuladas na GPU com WebGL 2 (transform feedback) e desenhadas como pontos luminosos que deixam rastros. Elas precisam de WebGL 2 e reduzem sozinhas o número de partículas num dispositivo lento. Passe o mouse ou toque para empurrá-las, e amplie para ver tudo, com controles deslizantes.
\(\mathbf{u}=\nabla\times\boldsymbol{\psi},\qquad \nabla\cdot\mathbf{u}=0\)Fluxo de rotacional Algumas centenas de milhares de partículas levadas por um campo de velocidades \(\mathbf u=\nabla\times\boldsymbol\psi\), o rotacional de um potencial vetorial formado por seis ondas planas. Seu divergente é exatamente nulo, então as partículas giram e se entrelaçam, mas nunca se acumulam nem rareiam. Cada uma é movida por um vertex shader na sua GPU (transform feedback do WebGL 2) e colorida pela velocidade. Mova o ponteiro para criar um vórtice no fluxo.
A matemática, em palavras simples
Imagine um rio que nunca acumula água num ponto nem deixa um vazio atrás de si: tudo o que entra numa região também sai dela. Os matemáticos chamam isso de fluxo de divergência nula, e é exatamente o que o rotacional de qualquer campo suave produz. Aqui, algumas centenas de milhares de grãos de luz descem esse rio, e a placa de vídeo move cada um deles sessenta vezes por segundo. Mexa o mouse para agitar um redemoinho.
\(\small \dot x=\sin y-bx,\ \dot y=\sin z-by,\ \dot z=\sin x-bz\)Nuvem do atrator de Thomas Cada ponto obedece ao sistema ciclicamente simétrico de Thomas, \(\dot x=\sin y-bx\), \(\dot y=\sin z-by\), \(\dot z=\sin x-bz\). O movimento se torna caótico para \(b\) um pouco abaixo de \(0{,}208\), e a nuvem se acomoda num atrator estranho labiríntico (tente \(b=0{,}19\) e depois diminua). Cada partícula dá um passo de ponto médio (RK2) por quadro na GPU. O ponteiro empurra a nuvem.
A matemática, em palavras simples
Uma única regra, um ponto que se move segundo três senos, pode traçar uma curva de complexidade ilimitada. Este é o atrator de Thomas. Os pontos começam espalhados, mas todos são atraídos para a mesma fita emaranhada, e vizinhos são lançados para longe uns dos outros ao longo dela. Leve o amortecimento um pouco abaixo de 0,208 e a ordem cede lugar ao caos. O que você vê é a forma que o próprio caos assume, amostrada por algumas centenas de milhares de pontos.
\(\ddot{\mathbf r}=-\frac{GM\,\mathbf r}{(|\mathbf r|^{2}+\varepsilon)^{3/2}}\)Enxame em órbita Um disco de estrelas começa em órbitas quase circulares em torno de uma massa central, e uma companheira passa e arrasta braços de maré. Cada estrela sente a atração do inverso do quadrado, suavizada, \(\ddot{\mathbf r}=-GM\,\mathbf r/(|\mathbf r|^{2}+\varepsilon)^{3/2}\), do centro, da companheira e do seu ponteiro, e avança pelo método de Euler simplético, que impede a energia orbital de derivar. Estrelas que caem ou escapam renascem no disco.
A matemática, em palavras simples
A gravidade é uma atração que diminui com o quadrado da distância, e isso é tudo de que um enxame de estrelas precisa para dançar. Cada ponto aqui segue essa única regra em torno de um centro pesado, então o disco gira como uma pequena galáxia, com as estrelas internas mais rápidas que as externas. Quando uma segunda massa passa, ela puxa as estrelas em longos braços, como galáxias reais que se esticam umas às outras. Seu ponteiro é uma terceira massa: arraste-o pelo disco.
\(\ddot{\mathbf x}=k\,\bigl(\mathbf s(u,v)-\mathbf x\bigr)-c\,\dot{\mathbf x}\)Superfícies em metamorfose Cada partícula tem um par fixo de parâmetros \((u,v)\) e é puxada por uma mola até o ponto \(\mathbf s(u,v)\) da superfície atual: uma esfera, um toro, um nó de trevo, uma faixa de Möbius ou uma garrafa de Klein (sua imersão em forma de oito, que passa por si mesma). Quando o alvo muda, a nuvem escorre de uma superfície para a seguinte, agitada por uma rajada de turbulência de ruído rotacional. O ponteiro a dispersa.
A matemática, em palavras simples
Uma esfera, uma rosquinha, um tubo com nó, uma faixa de um só lado e uma garrafa sem interior: os topólogos tratam esses objetos como mundos diferentes. Aqui, cada grão de luz lembra um endereço fixo na superfície, dois números, e uma mola o puxa para onde esse endereço estiver na forma atual. Quando a forma muda, a nuvem inteira escorre de um mundo para o seguinte. Uma garrafa de Klein só pode ser desenhada no espaço comum se passar por si mesma, como acontece aqui.
\(Q(z)=16z^{8}+Az^{5}+Bz^{4}+\tfrac{25}{16},\qquad z\mapsto z-\frac{Q(z)}{Q'(z)}\)Raízes de polinômios em movimento A figura do esboço “Arte das raízes de polinômios” (página 4), agora viva e plana. Cada partícula é uma raiz de \(Q(z)=16z^8+Az^5+Bz^4+\tfrac{25}{16}\) para o seu próprio par de ângulos \((\alpha,\beta)\) no toro, com \(A=500i(t_2-1)\), \(B=500i(1+it_1+t_1^2-t_1^3)\), \(t_1=e^{i\alpha}\), \(t_2=e^{i\beta}\). Ela acompanha essa raiz por passos de Newton \(z\mapsto z-Q(z)/Q'(z)\) enquanto os ângulos derivam, e assim cada partícula desliza por uma fita da figura. Com a abertura em \(\pi\) os ângulos cobrem o toro inteiro e a figura completa aparece; mais estreita, você vê as oito raízes de quase um só polinômio dançando. O ponteiro agita as partículas.
A matemática, em palavras simples
Pegue as oito raízes de um polinômio e imagine que são ralos no plano. O método de Newton diz como caminhar até a mais próxima: de qualquer ponto, dê um passo igual a menos o valor dividido pela inclinação. Fazendo isso em passos minúsculos e contínuos, obtém-se um fluxo, e cada grão de luz o segue para dentro de um ralo, em espiral se você aumentar a torção. O polinômio é o do esboço da arte das raízes, e seus dois botões percorrem devagar o toro de parâmetros, então os próprios ralos vagam e os grãos continuam a persegui-los. A paisagem é o logaritmo do tamanho do polinômio, com um funil em cada raiz, e as cores são a fase do polinômio.
\(r=\bigl|Y_{\ell}^{m}(\theta,\varphi)\bigr|,\qquad \ddot{\mathbf x}=k\,(\mathbf s-\mathbf x)-c\,\dot{\mathbf x}\)Nuvens de orbitais O mesmo truque da mola das superfícies em metamorfose, com novos alvos: os lobos dos harmônicos esféricos reais \(Y_\ell^m\), a parte angular dos orbitais do hidrogênio. Cada partícula tem uma direção \((\theta,\varphi)\) e é puxada até a distância \(r=|Y_\ell^m(\theta,\varphi)|\) ao longo dela, e a nuvem toma a forma de um haltere \(\ell=1\), de um trevo \(\ell=2\) e assim por diante até \(\ell=4\). A cor mostra o sinal de \(Y_\ell^m\): lobos positivos e negativos ficam em extremos opostos da paleta. Entre as formas, a nuvem escorre de um orbital para o seguinte. O ponteiro a dispersa.
A matemática, em palavras simples
O elétron de um átomo de hidrogênio não tem trajetória, apenas uma nuvem de probabilidade, e a forma angular dessa nuvem é um harmônico esférico: um haltere, um trevo, um anel com duas calotas e outros mais ricos. Cada grão de luz aqui lembra uma direção no espaço, e uma mola o puxa até a distância que o harmônico atual dá nessa direção. Onde o harmônico é positivo, o grão toma uma ponta da paleta, e onde é negativo, a outra, então os lobos mostram seus sinais. Quando o orbital muda, a nuvem escorre de uma forma para a seguinte.