25. Fractais

Um dos aspectos mais importantes de qualquer sistema gráfico é como os objetos são modelados. Grande parte dos objetos que fabricamos (objetos manufaturados) são bastante simples de descrever, em parte porque são formados por superfícies simples como planos, cubos, esferas, cilindros etc. No entanto, objetos na natureza (por exemplo, terrenos montanhosos, plantas e nuvens) costumam ser muito mais complexos. Esses objetos são caracterizados por um comportamento caótico e não suave. A área da matemática que estuda fractais foi criada em grande parte para entender melhor essas estruturas complexas.

Um dos primeiros estudos sobre fractais foi um artigo sobre o comprimento da costa da Escócia. A alegação era que o seu litoral é tão irregular que seu comprimento parece aumentar constantemente à medida que o comprimento de seu dispositivo de medição (régua em Km, régua em metros, etc.) diminuía. Eventualmente, esse fenômeno foi identificado matematicamente pelo conceito de dimensão fractal. O outro fenômeno que caracteriza os fractais é a autossimilaridade, o que significa que as características do objeto parecem reaparecer em vários lugares, mas com tamanho cada vez menor.

Na natureza, a autossimilaridade não ocorre exatamente, mas muitas vezes existe um tipo de autossimilaridade estatística, onde características observadas em níveis diferentes exibem propriedades estatísticas semelhantes, mas em escalas diferentes.

25.1. Sistemas de funções iteradas e atratores

Um dos exemplos de fractais que surgem na matemática envolve conjuntos chamados de atratores. A ideia é considerar alguma função do espaço e ver onde os pontos são mapeados sob essa função. Existem muitas maneiras de definir funções do plano ou espaço tridimensional. Uma maneira popular entre os matemáticos é considerar o plano complexo.

Cada coordenada \((a, b)\) neste espaço está associada ao número complexo \(a + bi\), onde \(i = \sqrt{-1}\). Adicionar e multiplicar números complexos segue as regras familiares:

\((a+bi)+(c+di) = (a+c)+(b+d)i\)

e

\((a+bi)(c+di) = (ac-bd)+(ad+bc)i\).

O módulo de um número complexo \(a + bi\) é definido como o comprimento do vetor correspondente no plano complexo, \(\sqrt{a^2 + b^2}\). Esta é uma generalização da noção de valor absoluto com reais. Observe que os números complexos que compartilham um mesmo módulo formam um círculo centrado na origem no plano complexo.

Agora, considere qualquer número complexo \(z\). Se elevarmos repetidamente este número ao quadrado, \(z = z^2\) a cada iteração, então o número tenderá a cair para zero se seu módulo for menor que 1 e tenderá a crescer ao infinito se seu módulo for maior que 1. E os números com módulo 1 permanecerão com módulo 1. Nesse caso, o conjunto de pontos com módulo 1 é dito ser um atrator deste sistema de função iterada (STF).

Em geral, dado qualquer sistema de função iterada no plano complexo, o conjunto atrator é um subconjunto de pontos diferentes de zero que permanecem fixos sob o mapeamento. Isso também pode ser chamado de conjunto de pontos fixos do sistema. Observe que é o conjunto como um todo que é fixo, mesmo que pontos individuais tendam a se mover (veja a Fig. 25.1).

Conjunto atrator de um sistema de função iterada.

Fig. 25.1 Conjunto atrator de um sistema de função iterada. Fonte: Notas do Prof. Mount.

25.2. Conjunto de Julia-Fatou

Suponha que modifiquemos a função complexa para que, em vez de simplesmente elevar ao quadrado o ponto, apliquemos a função iterada

\(z = z^2 + c\)

onde \(c\) é qualquer constante complexa. Agora, como antes, sob esta função, alguns pontos tenderão para infinito e outros para números finitos. No entanto, haverá um conjunto de pontos que tenderão a nenhum dos dois. Esses dois últimos conjuntos de pontos formam o atrator do sistema de função iterada. Em particular, esses pontos formam o conjunto de Julia para o ponto \(c\). Um exemplo para \(c = -0,62 - 0,44i\) é mostrado na Fig. 25.2.

Conjunto de Julia-Fatou para :math:`c = -0,62 - 0,44i`.

Fig. 25.2 Conjunto de Julia-Fatou para \(c = -0,62 - 0,44i\).

Um método comum para renderizar aproximadamente conjuntos de Julia é iterar a função até que o módulo do número exceda algum limite pré-especificado. Se o número divergir, então exibimos uma cor (como branco) e, caso contrário, exibimos outra cor (como preto). Quantas iterações? Depende muito da precisão desejada. Pontos que estão longe do limite do atrator irão divergir rapidamente. Pontos muito próximos, mas fora do limite, podem levar muito mais tempo para divergir. Consequentemente, quanto mais você iterar, mais precisa será sua imagem.

25.3. Conjunto de Mandelbrot

Para alguns valores de \(c\), o conjunto de Julia-Fatou forma um conjunto conexo de pontos no plano complexo. Para outros valores não. Para cada ponto \(c\) no plano complexo, ao colorirmos de preto se Julia(c) for conexo e de branco caso contrário, teremos uma imagem como a mostrada na Fig. 25.3. Este conjunto é chamado de conjunto de Mandelbrot.

Conjunto de Mandelbrot.

Fig. 25.3 Conjunto de Mandelbrot.

Uma maneira de aproximar se um ponto complexo \(d\) está no conjunto de Mandelbrot é começar com \(z = (0, 0)\) e iterar sucessivamente a função \(z = z^2 + d\), um grande número de vezes. Se após um grande número de iterações o módulo exceder algum limite, então o ponto é considerado fora do conjunto de Mandelbrot, caso contrário, ele está dentro do conjunto de Mandelbrot. Como antes, o número de iterações geralmente determina a precisão do desenho.

25.4. Dimensão fractal

Um dos elementos importantes que caracterizam os fractais é a noção de dimensão fractal. Os conjuntos fractais se comportam de maneira estranha no sentido de que não parecem ser conjuntos de 1, 2 ou 3 dimensões, mas parecem ter dimensionalidade não inteira (!?).

O que queremos dizer com a dimensão de um conjunto de pontos no espaço? Intuitivamente, sabemos que um ponto é zero-dimensional, uma linha é unidimensional, um plano é bidimensional e assim por diante. Se você colocar o objeto em um espaço dimensional superior (por exemplo, uma linha no espaço 5), ele não altera sua dimensionalidade. Se você deformar continuamente um objeto (por exemplo, deformar uma linha em um círculo ou um plano em uma esfera), isso não altera sua dimensionalidade.

Como você determina a dimensão de um objeto? Dentre vários métodos existentes, vamos introduzir um que é chamada de dimensão fractal. Suponha que temos um conjunto no espaço \(d\)-dimensional. Defina uma bola \(\epsilon\) de dimensão \(d\) para o interior de uma esfera de dimensão \(d\) de raio \(\epsilon\). Uma bola \(\epsilon\) é um conjunto aberto (não contém sua fronteira), mas para fins de definição de dimensão fractal isso não importa muito. Na verdade, simplificará as coisas (sem alterar as definições abaixo) se pensarmos em uma bola \(\epsilon\) como um hipercubo sólido \(d\)-dimensional cujo comprimento lateral é \(2\epsilon\) (um quadrado \(\epsilon\) ao invés de bola).

A dimensão de um objeto depende intuitivamente de como o número de bolas necessárias para cobrir o objeto varia com \(\epsilon\). Primeiro, considere o caso de um segmento de reta. Suponha que tenhamos coberto o segmento de linha com \(\epsilon\)-bolas (ou \(\epsilon\)-quadrados) e descoberto que é necessário um certo número dessas bolas para cobrir o segmento. Suponha que reduzamos o tamanho das bolas exatamente de \(1/2\). Agora, quantas bolas serão necessárias? Levará aproximadamente o dobro para cobrir a mesma área. (Observe que isso não depende da dimensão em que o segmento de linha reside, apenas do próprio segmento de linha.) De maneira mais geral, se reduzirmos o raio da bola por um fator de \(1/a\), precisaremos de aproximadamente \(a\) vezes mais bolas para cobrir o seguimento.

Por outro lado, suponha que cobrimos uma região planar com um certo número de \(\epsilon\)-bolas. Agora, suponha que cortamos o raio para 1/2. Quantas bolas serão necessárias? Precisaremos de 4 vezes mais. Ou, em geral, se reduzirmos o raio de \(1/a\), serão necessárias cerca de \(a^2\) vezes mais bolas para cobrir a mesma região planar. Da mesma forma, pode-se ver que, com um objeto tridimensional, reduzir por um fator de 1/2 exigirá 8 vezes mais, ou \(a^3\).

Isso sugere que a natureza de um objeto \(d\)-dimensional é que o número de bolas de raio \(\epsilon\) necessárias para cobrir esse objeto cresce conforme \((1/\epsilon)^d\). Para tornar isso formal, dado um objeto \(A\) no espaço \(d\)-dimensional, defina \(N(A, \epsilon)\) como o menor número de \(\epsilon\)-bolas necessárias para cobrir \(A\).

Não será necessário o número mínimo absoluto, desde que não usemos mais do que um fator constante vezes o número mínimo. Afirmamos que um objeto \(A\) tem dimensão \(d\) se \(N(A, \epsilon)\) cresce como \(C(1/\epsilon)^d\), para alguma constante \(C\). Isso se aplica no limite, pois \(\epsilon\) tende a 0. Como extraímos esse valor de \(d\)? Observe que, se calcularmos \(\ln N(A, \epsilon)\) (qualquer outra base também serve), obteremos \(\ln C + d \ln(1/\epsilon)\). Como \(\epsilon\) tende a zero, o termo constante \(C\) permanece o mesmo, e \(d \ln(1/\epsilon)\) torna-se dominante. Se dividirmos esta expressão por \(\ln(1/\epsilon)\) iremos extrair o \(d\). Assim definimos a dimensão fractal de um objeto como

\(d = \underset{\epsilon \rightarrow 0}{\lim} \cfrac{\ln N(A,\epsilon)}{\ln (1/\epsilon)}\).

Formalmente, diz-se que um objeto é um fractal se for autosemelhante (em diferentes escalas) e tiver uma dimensão fractal não inteira.

Agora vamos tentar aplicar isso ao objeto fractal conhecido como triângulo de Sierpinski, definido como o limite do processo ilustrado na Fig. 25.4.

Triângulo de Sierpinski.

Fig. 25.4 Triângulo de Sierpinski. Fonte: Notas do Prof. Mount.

Quantas \(\epsilon\)-bolas são necessárias para cobrir uma dessas figuras? Oserve na linha de baixo que leva 1 bola de raio \(\epsilon\) para cobrir o primeiro triângulo, depois 3 bolas de (1/2), depois nove bolas de (1/4) e, em geral, leva \(3^k\), \((1/2^k)\)-bolas para cobrir a figura da iteração \(k\). Fazendo \(\epsilon = 1/2^k\), descobrimos que a dimensão fractal do triângulo de Sierpinski é:

\(D = \underset{\epsilon \rightarrow 0}{\lim} \cfrac{\ln N(A, \epsilon)}{\ln (1 / \epsilon)}\)

\(\;\;\;=\underset{k \rightarrow \infty}{\lim} \cfrac{\ln N(A,(1/2^k))}{\ln (1/(1 / 2^k))}\)

\(\;\;\;=\underset{k \rightarrow \infty}{\lim} \cfrac{\ln 3^k}{\ln 2^k} = \underset{k \rightarrow \infty}{\lim} \cfrac{k \ln 3}{k \ln 2}\)

\(\;\;\;=\underset{k \rightarrow \infty}{\lim} \cfrac{\ln 3}{\ln 2} = \cfrac{\ln 3}{\ln 2} = 1.58496\ldots\)

Assim, embora o triângulo de Sierpinski resida no espaço bidimensional, ele é essencialmente um objeto de dimensão 1.58, com relação à dimensão fractal. Embora essa definição seja geral, às vezes é mais fácil aplicar a seguinte fórmula para fractais construídos por subdivisão repetida. Suponha que formamos um objeto substituindo repetidamente cada “pedaço” de comprimento \(x\) por \(b\) pedaços não sobrepostos de comprimento \(x/a\) cada. Segue-se então que a dimensão fractal será

\(D = \cfrac{\ln b}{\ln a}\).

Como outro exemplo, considere o limite do processo mostrado na Fig. 25.5. A área do objeto não se altera a cada iteração e por isso temos que a dimensão fractal do interior é a mesma de um quadrado, que é 2, já que as bolas que cobrem o quadrado poderiam ser reorganizadas para cobrir o objeto. No entanto, ao considerarmos a borda do objeto (lembra-se da costa da Escócia?) observe que, a cada iteração, substituímos um segmento de comprimento \(x\) por 4 subsegmentos, cada um com comprimento \(\sqrt{2}/4\). Segue-se que a dimensão fractal da borda é

\(\cfrac{\ln 4}{\ln(4/\sqrt{2})} = 1.3333\ldots\).

Embora a forma não seja um fractal (por nossa definição), a sua borda é.

Um objeto com uma borda fractal.

Fig. 25.5 Um objeto com uma borda fractal. Fonte: Notas do Prof. Mount.