# Deux fonctions pour construire l'ensemble de Mandelbrot ou celui de Julia # et sauvegarder la construction dans un gif animé. mandelbrot<-function(resolution, iter, dx, dy,delai=50,couleurs=rainbow(256)) { # MANDELBROT(RESOLUTION, ESCAPE, ITER, DX, DY) # Construit l'ensemble de Mandelbrot et sauve le résultat dans un gif animé. # Le fichier résultant est sauvegardé dans le répertoire courant # Paramètres: # RESOLUTION: Résolution de l'image en pixels # ITER: Nombre d'itérations # DX: intervalle x de la grille de calcul # DY: intervalle y de la grille de calcul # Exemple: # mandelbrot(400,20,c(-1.8, 0.6),c(-1.2, 1.2)) require(caTools) yresolution = round(resolution*(dy[2]-dy[1])/(dx[2]-dx[1])) x=seq(dx[1], dx[2], length.out=resolution) y=seq(dy[1], dy[2], length.out=yresolution) Z = meshgrid(x,y) Z = Z$x + 1i*Z$y r = matrix(0,yresolution,resolution) c = Z XX = array(0, c(resolution,resolution,iter)) for (k in 1:iter) { cat('Itération n° ',k,'\n') Z = Z^2 + c XX[,,k]=exp(-abs(Z)) } write.gif(XX, "Mandelbrot.gif", col=couleurs, delay=delai) cat("C'est fini !\n") } julia<-function(re, im, resolution, iter, dx, dy, zoom,delai=50,couleurs=rainbow(256)) { # JULIA(RE, IM, RESOLUTION, ESCAPE, ITER, DX, DY, ZOOM) # trace l'ensemble de Julia de la fonction complexe h(z) = z^2 + c et sauve le résultat dans un gif animé.. # Le fichier résultant est sauvegardé dans le répertoire courant # Paramètres: # RE: Partie réelle de c # IM: Partie imaginaire de c # RESOLUTION: Résolution de l'image en pixels # ITER: Nombre d'itérations # DX: position x de la grille de calcul # DY: position y de la grille de calcul # ZOOM: Facteur d'échelle # DELAI: délai pour le gif animé # Exemples: # julia(0.39,0.24,400,100,0,0,0.8) # julia(0.4,0.2,300,64,0,0,0.8) # julia(-0.745429,0.11308,400,64,0,0,0.8) require(caTools) r = matrix(0,resolution, resolution) c = re + 1i*im x = 1 - seq(2, 0, length.out=resolution) Z = meshgrid(dx+x/zoom,dy+x/zoom) Z = Z$x + 1i*Z$y XX = array(0, c(resolution,resolution,iter)) for (k in 1:iter) { cat('Itération n° ' ,k,' \n') Z = Z^2 + c XX[,,k]=exp(-abs(Z)) } write.gif(XX, "Julia.gif", col=couleurs, delay=delai) cat("C'est fini !\n") } meshgrid <- function(a,b) {list(x=outer(b*0,a,FUN="+"),y=outer(b,a*0,FUN="+"))}