send
Grupo de Telegram
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
  • 2587 Vistas

0 Usuarios y 2 Visitantes 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. You are not allowed to view links. Register or Login or 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. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login {
  10.  
  11.     public static void main(You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login[] args) {
  12.         You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login ventana = new You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login("Conjunto de mandelbrot");
  13.         ventana.setDefaultCloseOperation(You are not allowed to view links. You are not allowed to view links. Register or Login or 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. You are not allowed to view links. Register or Login or 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. You are not allowed to view links. Register or Login or 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. You are not allowed to view links. Register or Login or 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. You are not allowed to view links. Register or Login or 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. You are not allowed to view links. Register or Login or 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!