comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Conjunto de mandelbrot (FRACTAL)

  • 1 Respuestas
  • 2722 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado rush

  • *
  • Underc0der
  • Mensajes: 378
  • Actividad:
    0%
  • Reputación 7
    • Ver Perfil
  • Skype: iruxh1773
« en: Julio 03, 2015, 05:52:03 pm »
Bueno, pues esta ves les traigo un codigo en java de el conjunto de mandelbrot, El código no es mio propiamente y no se de quien sea, ya que el profesor nos lo  proporciono.

Un poco de historia según la wiki

El conjunto de Mandelbrot es el más conocido de los conjuntos fractales y el más estudiado. Se conoce así en honor al matemático Benoît Mandelbrot.

¿Como se calcula o cual es la ecacuacion para poder ver el fractal?

Este conjunto se define así, en el plano complejo:
Sea c un número complejo cualquiera. A partir de c, se construye una sucesión por recursión:


Si esta sucesión queda acotada, entonces se dice que c pertenece al conjunto de Mandelbrot, y si no, queda excluido del mismo.

Por ejemplo, si c = 1 obtenemos la sucesión 0, 1, 2, 5, 26… que diverge. Como no está acotada, 1 no es un elemento del conjunto de Mandelbrot.

En cambio, si c = -1 obtenemos la sucesión 0, -1, 0, -1,… que sí es acotada, y por tanto, -1 sí pertenece al conjunto de Mandelbrot.

You are not allowed to view links. Register or Login

Bueno hasta ahora les e puesto lo que según la wiki, pero en si, que es el Conjunto de mandelbrot visualmente, se los muestro a continuación.


Codigo de Mandelbrot

Código: Java
  1. /*@rush*/
  2. package prmandelbrot;
  3.  
  4. import java.awt.Color;
  5. import java.awt.Graphics;
  6. import javax.swing.JFrame;
  7. import javax.swing.JPanel;
  8.  
  9. public class PrMandelbrot extends You are not allowed to view links. Register or Login {
  10.  
  11.     public static void main(You are not allowed to view links. Register or Login[] args) {
  12.         You are not allowed to view links. Register or Login ventana = new You are not allowed to view links. Register or Login("Conjunto de mandelbrot");
  13.         ventana.setDefaultCloseOperation(You are not allowed to view links. Register or Login.EXIT_ON_CLOSE);
  14.         ventana.getContentPane().add(new PrMandelbrot());
  15.         ventana.setSize(640, 640);
  16.         ventana.setLocation(200, 50);
  17.         ventana.setVisible(true);
  18.     }
  19.  
  20.     public void paint(You are not allowed to view links. Register or Login g) {
  21.         int i, j, n, h, w;
  22.         double x, y, cx, cy, xt, yt;
  23.         super.paintComponent(g);
  24.         setBackground(You are not allowed to view links. Register or Login.black);
  25.         h = getHeight() / 2;
  26.         w = getWidth() / 2;
  27.         for (i = 0; i < getHeight(); i++) {
  28.             for (j = 0; j < getWidth(); j++) {
  29.                 cx = (j - w) / 240.0 - 0.4;
  30.                 cy = (i - h) / 240.0;
  31.                 x = 0;
  32.                 y = 0;
  33.                 n = 0;
  34.                 while (n < 64 && x * x + y * y < 4) {
  35.                     xt = x * x - y * y + cx;
  36.                     yt = 2 * x * y + cy;
  37.                     x = xt;
  38.                     y = yt;
  39.                     ++n;
  40.                 }
  41.                 if (n < 64) {
  42.                     g.setColor(new You are not allowed to view links. Register or Login(255 - (n * 16) % 256, 0, n * 2));
  43.                     g.fillRect(j, i, 1, 1);
  44.                 }
  45.             }
  46.         }
  47.     }    
  48. }
  49.  

Para poder entender un poco como funciona necesitas saber un poco de números complejos, pero aquí les dejo una pagina que encontré de como dibujar el conjunto de mandelbrot a mano y como es que funciona la formula para calcularlo.

You are not allowed to view links. Register or Login

Espero les haya gustado y les parezca interesante.

Saludos :)!
« Última modificación: Julio 03, 2015, 07:56:51 pm por Expermicid »
You are not allowed to view links. Register or Login


Desconectado rand0m

  • *
  • Underc0der
  • Mensajes: 214
  • Actividad:
    0%
  • Reputación 0
  • Paso de cosas personales, déjame
    • Ver Perfil
« Respuesta #1 en: Julio 04, 2015, 09:49:55 am »
Estoy un poco confundido. ¿Estos cálculos tienen alguna aplicación o son una curiosidad matemática?
Ayer mismo empecé a leer un libro de Java8, así que guardaré el código para estudiarlo cuando entienda mejor el lenguaje.

Estuve viendo las diferentes posibilidades y el ejemplo que nos muestras se corresponde con Z=Z2+C.
¿Alguien se anima a reconfigurarlo a Z=Exp[(Z2- 1.00001*Z)/C3]?
El resultado debería ser algo así:
Podría vivir perfectamente con una mancha de pis en la alfombra, pero qué va, tío: Más complicaciones.

 

¿Te gustó el post? COMPARTILO!