Implementação do Fractal de Mandelbrot utilizando planilha eletrônica Excel

Autor: Sergio Luiz Marques Filho

 

Um fractal é uma forma geométrica, e é tão antigo quanto nossa própria existência, pois, como exemplo de fractais, podemos citar um litoral, uma nuvem, um floco de neve ou uma folha de uma samambaia. Uma característica marcante de um fractal é a de que, tomando-se uma parte do fractal esta parece-se com o todo da figura original, isto é, navegando-se na escala do fractal, encontraremos uma imagem que é semelhante à parte anteriormente vista.

O termo Fractal foi sugerido nos anos 70, pelo matemático polonês Benoit B. Mandelbrot quando descobriu a Geometria Fractal.

 

Números Complexos

 

Números complexos têm uma parte real e uma imaginária e podem ser dispostos ao longo de um plano que contém dois eixos, este plano denomina-se "plano de Argand-Gauss".

 

São exemplos de números complexos 2+3i, 1-4i e 6+2i.

 

O Conjunto de MANDELBROT

 

O Conjunto de MANDELBROT é dado pela análise de todos os pontos de um conjunto que está no plano de Argand-Gauss, e é o conjunto de todos os números complexos C tais que, após um certo número de iterações Z=Z2+C, Z não tende para o infinito, onde o valor inicial de Z é 0 (zero).

 

Para cada ponto, far-se-á um número determinado de iterações, e se, ao final desta seqüência, o resultado final estiver fora do círculo de raio = 2, o ponto está fora do conjunto de MANDELBROT.

 

Então temos:  

Zn+1=Zn2 + C

Onde Z0=0+0i e C é o ponto que se está testando.

 

Figura 1: O fractal de MANDELBROT

Preparando a planilha no excel

Na planilha, as colunas A e B são reservadas para conter os valores dos pontos que são parte do conjunto de MANDELBROT, e, posteriormente, farão parte do gráfico que mostrará visualmente os valores do conjunto.

 

Definição da Malha

 

Para efetuar o cálculo do fractal, é necessário, primeiramente, definir a malha em que se está trabalhando. No caso, trabalhamos com uma malha dos pontos -2+1i como canto superior esquerdo, e 3-3i como canto inferior direito.

 

Para representarmos um ponto utilizamos duas células da planilha, isto é, o ponto superior direito -2+1i foi definido na célula D11 para o eixo x e a célula E10 para o eixo y. Já para representar o ponto 3-3i, dispôs-se nas células F11 para o valor do eixo x e E12 para o valor do eixo y do ponto inferior direito.

 

Definição do incremento

 

O incremento é o passo em que estaremos caminhando dentro da malha definida, ou seja, com um incremento de 0.01, após analisarmos o ponto origem (0,0), o próximo ponto a ser analisado será o ponto (0.01,0), seguido do ponto (0.02,0) e assim sucessivamente até que cheguemos aos limites da malha definidos pelo ponto inferior direito da malha.

 

Na planilha em que se trabalhou, o valor do incremento foi definido na célula D15.

 

Definição das variáveis

Para conter a definição dos pontos a serem calculados, utilizamos as células C2 para conter a parte real do ponto e a célula D2 para conter a parte imaginária.

 

Para auxiliar no cálculo, também definimos as células E2 com o quadrado do valor da célula C2, adicionando, para isto, a fórmula =TRUNCAR($C$2^2;8), bem como a célula F2 continha o quadrado do valor da célula D2, que conseguimos adicionando a fórmula =TRUNCAR($D$2^2;8).

 

Contamos, ainda, com a célula G2 que continha a soma das células E2 e F2, onde dava-se pela fórmula =TRUNCAR($E$2+$F$2;8).

 

A célula H2 foi utilizada como variável auxiliar no cálculo das iterações dos pontos analisados.

 

Apresentando o gráfico com o Fractal

 

Para visualizar graficamente os valores do conjunto de MANDELBROT e assim obter o fractal de MANDELBROT, deve-se escolher no Excel o gráfico de dispersão, o qual nos mostrará cada ponto componente do conjunto no plano. A figura 1 mostra o fractal de MANDELBROT gerado como gráfico no Excel.

 

As figuras 2 e 3 mostram o tipo de gráfico que deve-se escolher no Excel para podermos gerar o fractal. Este é o ponto principal para podermos observar fractais no Excel.

 

No Excel, o gráfico de dispersão mostra, no plano, um ponto dadas as coordenadas x e y do mesmo em duas células, logo, a coluna A da planilha contém os valores do eixo x dos pontos e a coluna B contém os valores do eixo y dos pontos que fazem parte do Conjunto de MANDELBROT. Por isso, geramos o gráfico com informações das colunas A e B da planilha, que são alimentadas pelo algoritmo, com os pontos que pertencem ao Conjunto de MANDELBROT.

 

Figura 2: Escolhendo o gráfico de dispersão.

 

Figura 3: Segunda etapa na construção do gráfico.

 

O Algoritmo

 

Para fazer as iterações necessárias à análise dos pontos, utilizou-se a linguagem denominada VBA (Visual Basic for Applications) fornecida juntamente com o Excel.

 

Em nosso programa, adicionamos uma macro ao Excel, a qual era disparada através de um botão que foi adicionado à planilha.

 

O Programa Fonte

 

Dim MaxIters

Dim x, y, count

Dim eixo_x, eixo_y

MaxIters = 200

eixo_x = 1

eixo_y = 1

 

For y = Range("E12").Value To Range("E10").Value Step Range("D15").Value

   For x = Range("D11").Value To Range("F11").Value Step Range("D15").Value

 

      Range("C5").Value = y

      Range("D5").Value = x

 

      Range("C2").Value = 0

      Range("D2").Value = 0

 

      For cont = 0 To MaxIters

 

         Range("H2").Value = Range("E2").Value - Range("F2").Value + x

         Range("D2").Value = 2 * Range("C2").Value * Range("D2").Value + y

         Range("C2").Value = Range("H2").Value

                            

         If (Sqr(Range("G2").Value) > 2) Then

         'Forca a saida caso o ponto nao atenda ao conjunto

            cont = MaxIters + 1

         End If

      Next

                      

      If (Sqr(Range("G2").Value) <= 2) Then

         Range("A" & eixo_x).Value = x

         Range("B" & eixo_y).Value = y

         eixo_x = eixo_x + 1

         eixo_y = eixo_y + 1

      End If

 

      Next

Next

Aproximação da imagem

 

Para aproximar a imagem, caso estejamos trabalhando com uma malha inicial de -2+1i no canto superior esquerdo e 1-1i no canto inferior direito, com um incremento de 0.01, para aproximarmos a imagem, devemos definir novos pontos superior e inferior que estejam dentro da área definida anteriormente e definir, ainda, um novo incremento.

 

Como exemplo, se quisermos aproximar a imagem 10 vezes, podemos trabalhar com os pontos -0.2-0.1i como canto superior esquerdo e 0.1-0.1i como canto inferior direito e com um incremento de 0.001.

Em nossa planilha, caso queira-se analisar mais profundamente uma parte do gráfico, deve-se alterar a malha, informando a parte onde quer-se visualizar, e diminuir-se o valor do incremento em que se está trabalhando.

 

Figura 4: Aproximando a imagem original.

 

Figura 5: Somente uma fração da imagem anterior.

 

Referências

 

[1] DEWEY, D. Fracts. Disponível em: <http://www.olympus.net/personal/dewey/mandelbrot.html>.

[2] KANTEK G. N., P. L. Fractais. Bate Byte, n.73, mar./1998. Disponível em: <http://www.pr.gov.br/celepar/celepar/ batebyte/edicoes/1998/bb73/frac.htm>.