Padrões em círculos

É possível criar padrões extremamente intrincados, a partir de construções simples.

(Versão interativa: https://asgunzi.github.io/Padr-es-em-C-rculos/PadroesCirculos.html)

Seja uma malha formada de pontos.

Se o raio de cada ponto for aumentado, e com o raio vermelho levemente maior que o azul.

Começa a ficar interessante quando os raios aumentam a ponto de se tangenciar.

Aumentando mais ainda.

E assim sucessivamente:

Padrões diversos formados por diferentes raios:

Brinque com os padrões em:

https://asgunzi.github.io/Padr-es-em-C-rculos/PadroesCirculos.html

Código fonte, para criar suas próprias variações.

https://github.com/asgunzi/Padr-es-em-C-rculos

Veja também:

Como mentir com gráficos

Gráficos são uma forma importante de representar informação. Só que os dados nunca são só dados, sempre há uma narrativa que pode ou não ser reforçada.

Cinco dicas de “como mentir com gráficos” – ou melhor, como evitar ser enganado por números.

Os dados são os mesmos, só muda a forma de apresentar.

Para qualquer dos casos, o analista deve ter domínio do que está fazendo.

Outro fator importante é a transparência: disponibilizar as bases e critérios, a fim de que os mesmos possam ser auditados por parceiros.

Recomendações de livros interessantes:

Preparados para o risco – Gerd Gigerenzer. É um  nos ensina a questionar os números, e com isso, tomarmos boas decisões.

https://amzn.to/3LrVrsU

Storytelling com dados: Como transmitir sua mensagem com dados.

https://amzn.to/3lu3jiZ

Árvores Fractais

Escrevi uma rotinazinha para desenhar fractais em formato de árvore.

Vide em: https://asgunzi.github.io/ArvoreFractal/arvores.html

A cada vez que rodar, uma árvore com parâmetros diferentes será gerada.

Um fractal é uma estrutura matemática com padrões repetidos em escala menor no desenho todo.

Como é uma estrutura autossimilar, é só fazer um código recursivo, relativamente simples. Portanto, é possível criar uma forma de enorme complexidade a partir de regras simples.

No caso da árvore, o padrão é: inicie com um aresta qualquer. Ao final dela, acrescente três arestas com metade do raio, separadas entre elas em 30 graus.

Ao final de cada uma dessas três arestas (ou galhos) novos, acrescente mais três galhos.

E assim sucessivamente:

Há uma quantidade infindável de fractais possíveis de serem feitos dessa forma – só me falta criatividade para fazer algo mais bonito.

Há inúmeros padrões fractais na natureza. Como uma planta “sabe” a programação para virar uma forma de enorme complexidade, como um brócolis? A resposta é que ela não sabe, apenas vai seguindo padrões simples e autossimilares, até chegar ao formato final.

Veja também:

https://ideiasesquecidas.com/2018/09/11/cardioides-circulares

Use a IA só na máquina de lavar

Há 15 anos, num dia como hoje, eu estava tendo aulas de redes neurais no mestrado em Eletrônica, na Coppe UFRJ.

Naquela época, a melhor redes neural que conseguíamos fazer tinha 3 camadas e uma dúzia de neurônios por camada. Entretanto, já era um campo promissor, para visionários.

Perguntei ao meu professor: “Você confiaria numa rede neural para dirigir um carro ou fazer uma operação médica?”

A resposta foi algo como: “Colocar IA numa máquina de lavar, sem problemas. Agora, para situações importantes, não”.

A IA teve uma evolução exponencial desde então. Saiu do inverno para o verão, com avanços em pacotes computacionais (PyTorch, TensorFlow), novas técnicas (convolucional, transformer), e até em hardware (como GPU e TPU).

Entretanto, a resposta continua valendo.

A IA atual é uma caixa-preta: entra um monte de dados e sai uma decisão. Talvez seja uma caixa mais poderosa, mas a essência é a mesma.

O problema de uma caixa-preta é que ela vai funcionar extremamente bem, uns 98% dos casos, até o dia em que vai dar problema. E, se o dispositivo controlado for numa grande indústria, ou um carro autônomo, será um problema catastrófico, daqueles que põe em risco a confiança no trabalho todo.

Tanto é que uma das linhas de pesquisa mais importantes dos dias de hoje é o Explainable AI: abrir um pouco da caixa, entender de alguma forma o que está acontecendo, mesclar o poder da rede neural com regras explícitas.

E outra linha quente de pesquisas é a Ética em IA: de quem será a culpa, no caso de um atropelamento? Do fabricante? Do usuário que confiou no veículo? Da caixa-preta que ninguém sabe interpretar? Do engenheiro que treinou o algoritmo? Haverá auditoria de algoritmos, por parte do governo? São perguntas difíceis de responder.

De qualquer forma, é melhor seguir o conselho do meu professor: utilize AI em processos não críticos, no seu equivalente da máquina de lavar.

https://ideiasesquecidas.com/

A Espiral de Ulam

A Espiral de Ulam é uma outra de representação dos números primos, estudada pelo brilhante matemático Stanislaw Ulam.

Eu não conhecia essa espiral, foi o amigo Sinésio Barberini que me indicou, após o artigo anterior, a “Colmeia dos Primos”.

A espiral começa com o número 1, e depois vai preenchendo os demais números, seguindo um padrão espiral.

Da mesma forma que a colmeia, pintamos de cinza os números compostos, e de dourado os números primos, imaginando uma peneira passando a luz do sol.

Vide implementação interativa em:

https://asgunzi.github.io/Espiral-de-Ulam/EspiralUlam.html

Alguns prints:

Espiral de Ulam com 5,7 mil números.

Espiral de Ulam com 10 mil números.

É possível notar algumas diagonais no desenho – mas não explicar. Este é um dos mistérios levantados por Ulam, na época, e popularizados pelo grande colunista de puzzles Martin Gardner.


Nota aleatória: Stanislaw Ulam foi um dos criadores do método conhecido como Simulação de Monte Carlo, juntamente com John Von Neumann, na época da Segunda Grande Guerra.







Veja artigos semelhantes e me siga no LinkedIn:
https://www.linkedin.com/in/arnaldogunzi/

https://clube.spm.pt/news/vida-obra-de-stanislaw-ulam

https://en.wikipedia.org/wiki/Ulam_spiral

https://ideiasesquecidas.com/2022/04/22/a-colmeia-dos-numeros-primos

A Colmeia dos Números Primos

Que tal representar números primos numa grid hexagonal, como se fosse uma colmeia?

A ideia é começar de um ponto central, seguindo uma numeração a partir de camadas. Para números compostos, deixar a célula cinza; para números primos, deixar dourado (como se fosse a luz do sol passando por uma peneira, e só há buraco onde o número da casa é primo.

Para 2 camadas, fica assim:

Para 3 camadas:

Fiz uma rotina em Javascript D3, para ficar interativo. Você pode conferir aqui.

https://asgunzi.github.io/Colmeia-Primos/ColmeiaPrimos.html

Para 4 camadas:

Para 7 camadas:

Conforme comentado em post anterior, não parece haver um padrão muito claro – e essa falta de padrão dos primos vem atormentando os matemáticos há milênios!

Para 25 camadas:

Para 50 camadas:

Veja artigos semelhantes e me siga no LinkedIn:

https://www.linkedin.com/in/arnaldogunzi/

Os efeitos gênesis e apocalipse dos modelos de otimização

 
Quando falamos que encontramos a “solução ótima”, esta é com aspas mesmo: todo modelo é necessariamente uma simplificação do mundo real, extremamente complexo e cheio de efeitos de segunda e terceira ordem.
 
O “efeito gênese” ocorre no início, quando as variáveis ainda não estão “a todo vapor”. É a fase de aquecimento, transitória, e o modelo ainda é jovem demais para aproveitar.
 
Já o “efeito apocalipse” ocorre no final. Como o mundo do modelo acaba com o fim da simulação, ele tende a otimizar tudo: para de produzir, consome todo o estoque, curte a vida adoidado.
 
Nem todos trabalhos sofrem com esses efeitos, obviamente depende do caso. São mais frequentes principalmente nos que envolvem o tempo.


 
Para contrabalancear. No caso da gênese, começar com variáveis iniciais próximas ao estável – ou deixar rodar por alguns períodos e desprezar esse começo. No caso do apocalipse, a mesma coisa: ter restrições contrabalanceando o mínimo de variáveis, e/ou deixar ele rodando por um tempo e desprezar os períodos finais.
 
Quando a gente constrói um modelo e manda otimizar, ele otimiza mesmo, e encontra furos que não fazem sentido na vida real. Boa parte do trabalho é ficar fechando esses furos lógicos.
 
Fica a dica.

Veja artigos semelhantes e me siga no LinkedIn:

https://ideiasesquecidas.com/2021/12/19/o-bilionario-que-fazia-graficos-com-lapis-coloridos/

https://www.linkedin.com/in/arnaldogunzi/

Visualização do Crivo de Erastótenes

O crivo de Erastótenes continua sendo uma forma bastante eficiente de encontrar números primos, embora atualmente existam métodos melhores. Foi criado pelo matemático grego Erastótenes, que viveu cerca de 200 a.C.

A ideia é bastante simples.

Digamos, tenho uma lista de números de 1 a 20:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

Pulo o 1, porque este divide todo mundo e até hoje há controvérsias se este deve ou não ser primo.

O próximo é o 2: e aí, risco todo mundo que é divisível por 2, daí para frente:
[1, 2, 3, 4, 5, 6, 7,8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

O próximo não riscado é o 3: repito o procedimento e elimino todos os múltiplos de 3:

[1, 2, 3, 4, 5, 6, 7,8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

Repito o processo até o fim, (ou melhor, até raiz(n)), e fico com a lista de números primos até n:

[2, 3, 5, 7, 11, 13, 17, 19]

O termo “crivo” é um sinônimo de “peneira”, e daí vem a ideia desta visualização. Eu queria ver o crivo como se fosse uma peneira mesmo: passa luz nos números primos, e não passa nos compostos.

Para tal, fiz uma rotinazinha em Javascript – D3, que pode ser acessada aqui:

https://asgunzi.github.io/CrivoErastotenesVisual/Index.html

Por exemplo, para n = 100 (um quadrado 10 x 10):

Destacando os primos:

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

Para n= 400 (20 x 20):

Para n= 900 (30 x 30):

Não sei bem se isso se parece um QR code dos números primos…

Algo a notar é que há várias colunas vazias (ex. as que são múltiplas de 2), enquanto as que terminam com 1, 3, 7 e 9 são mais cheias. Mas não tem um padrão muito claro – e essa falta de padrão dos primos vem atormentando os matemáticos há milênios!

Veja também:

https://asgunzi.github.io/CrivoErastotenesVisual/Index.html

Máximo Divisor Comum – Visual (2)

Continuando a série de Teoria dos Números Visual, MDC parte 2.

Teorema. Para a, b e x inteiros, temos (a,b) = (a, b+ ax)

O máximo divisor de comum de dois números a e b é igual ao MDC entre a e b +a*x.

Exemplo: (3, 15) = (3, 15 + 4*3)

A prova visual também é fácil quando conseguirmos enxergar o que acontece, via a álgebra de pedrinhas.

Vendo como o MDC como o número de colunas, e os números a ou b como blocos, posso multiplicar à vontade esses blocos e somar, que o MDC vai continuar igual.

(Continua)

Para uma prova mais formal, vide referência abaixo.

Referência: Introdução à Teoria dos Números, José Plínio de Oliveira Santos, Instituto Nacional de Matemática Pura e Aplicada.

Veja também:

Meetup Computação Quântica

Tive a honra de ser convidado para um Meetup do Centro de #Analytics Raízen, para comentar do meu tema favorito: computadores quânticos.

Discutimos conceitos básicos Bit x Qubit, sobreposição, entanglement. Algumas aplicações possíveis: quebrar criptografia atual, criar uma nova criptografia à prova de espiões, avanços em algoritmos de otimização e de simulação de moléculas químicas.

Como o pessoal ali é fera, também pediram algumas demonstrações na linguagem #Qiskit, da #IBM.

Por fim, experimentos que venho conduzindo na #Klabin e algumas das (enormes) dificuldades encontradas para fazer esta tecnologia virar realidade na prática.

Em resumo, #quantumcomputing é uma tecnologia que pode ser disruptiva (ou não) nos anos vindouros: se vingar, alguns setores da indústria e do governo podem sofrer enorme impacto, se não vingar, pelo menos parte da teoria será útil para atacar problemas do mundo atual, por uma perspectiva completamente nova.

Como resolver o cubo spinner

O “cubo spinner” é a mais nova aquisição para minha coleção de cubos mágicos (vide https://ideiasesquecidas.com/cubos-magicos/).

É um hand spinner, daqueles que ficam girando e foram moda anos atrás, e um cubo 3 x 3 com uma camada só.

Não sei quem teve essa ideia, mas eu gostei.

A resolução do cubo spinner é muito simples.

Tem apenas 4 movimentos possíveis: R (right), L (left), U (upper) e D (down).

Vou ilustrar apenas o R, porque os outros são semelhantes.

É importante notar que as peças do lado apenas ficam viradas para cima ou para baixo, não trocam de posição com outras peças.
Neste tipo de puzzle, é sempre bom identificar quais as peças mais invariantes possíveis, e começar por elas.

Já as peças de canto trocam de posição entre si, a cada movimento.

O movimento (RU)^2 (direita e depois a posição superior, repetido duas vezes), tem o efeito de: não alterar as peças de lado, e trocas as peças de canto segundo a configuração abaixo.

Portanto, a partir de um arranjo qualquer do cubo:
– Vire as peças de lado para a posição correta (todas de branco ou amarelo)

– Use movimentos (RU)^2 (ou similar, LU, RD), para acertar um dos cantos

– Coloque a peça acertada no canto inferior esquerdo, que não é afetado pelo movimento RU

– Aplique o movimento (RU)^2 até resolver o cubo.

O cubo spinner é divertido, porque junta dois brinquedos lúdicos e simples de resolver.

Link da Amazon:
https://amzn.to/3JMIjyy

Vide também:

O Canguru da Matemática

No último sábado, a minha filha mais velha fez a prova Canguru de Matemática. Eu não conhecia e achei a iniciativa excelente.

É basicamente uma provinha, tipo uma Olímpiadas de Matemática para jovens do ensino fundamental e médio, feita anualmente.

O site do programa, abaixo, é muito bom, e contém inclusive as provas passadas, para os diversos níveis em que ela é aplicada. Faço questão de divulgar:

https://www.cangurudematematicabrasil.com.br/index.html

Segundo o site, o Canguru de Matemática é o maior concurso internacional do tipo, e no Brasil, começou em 2009.

Segue um exemplo de questão, de uma das provinhas do ano passado, só para ilustrar.

Parabéns aos organizadores pela iniciativa! Que surjam inúmeros cangurus matemáticos no Brasil e no mundo!

Veja também: