08.02.2015 Views

Programação Funcional e Concorrente com Scheme

Programação Funcional e Concorrente com Scheme

Programação Funcional e Concorrente com Scheme

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

notas de aula - Jerônimo C. Pellegrini<br />

diverge (tomamos esta decisão porque este desenho parecerá mais interessante do que<br />

somente a borda do conjunto de Julia).<br />

Precisaremos de um procedimento para calcular a norma de números <strong>com</strong>plexos:<br />

( define <strong>com</strong>plex-norm<br />

( lambda (x)<br />

( let ((a ( real-part x))<br />

(b ( imag-part x )))<br />

( sqrt (+ (* a a)<br />

(* b b ))))))<br />

Nosso procedimento in-julia fará no máximo 150 iterações:<br />

( define in-julia <br />

( lambda (f x max )<br />

( let ((v ( function-iterate f x 150<br />

(< ( <strong>com</strong>plex-norm v) max ))))<br />

( lambda (z)<br />

(> ( <strong>com</strong>plex-norm z)<br />

max )))))<br />

A primeira função para a qual plotaremos o conjunto de Julia é f(z) = z 2 − 0.2 + 0.5ϕi.<br />

( define phi (/ (+ 1 ( sqrt 5)) 2))<br />

( define <strong>com</strong>plex-quad<br />

( lambda (x)<br />

(+ (* phi 0+0.5 i)<br />

(- 0.2)<br />

(* x x ))))<br />

O procedimento quadratic-in-julia aceita as duas coordenadas de um ponto, as<br />

dimensões da janela onde queremos plotar e determina se o ponto deve ser plotado ou<br />

não.<br />

• Para plotarmos o conjunto nos quatro quadrantes, são feitas translações nos dois<br />

Versão Preliminar<br />

eixos, de maneira que o centro da janela seja passado para a função <strong>com</strong>o (0, 0);<br />

• Multiplicamos os valores de x e y por um terço da largura da imagem, de forma<br />

que possamos visualizar a parte “interessante” da imagem;<br />

124<br />

[ 27 de outubro de 2010 at 15:47 ]

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!