Archivo: 6furcation.gif


Este es un archivo de Wikimedia Commons
De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

6furcation.gif (500 × 500 píxeles, tamaño de archivo: 27 KB; tipo MIME: image / gif , en bucle, 25 cuadros, 25 s)

Resumen

Descripción larga

Este archivo muestra 25 órbitas críticas [1] [2] que están cambiando a lo largo del rayo interno de ángulo = 1/6 del cardioide principal. Dejar :

Ángulo interno o número de rotación:

Radio interno:

Multiplicador de punto fijo:

Parámetro de función

Porque esta es la ecuación para el cardioide principal.

Cuando varía y es constante, sigue el rayo interno .

¿Cómo se creó este archivo?

  • Cree archivos de 25 ppm para epsilon cambiando de -1.000 a 0.002. Vea la fuente del programa C a continuación
  • Convierte archivos ppm a jpg
  • Convierta 25 archivos jpg en un archivo gif animado usando Total Commander y el complemento empaquetador GIFWCX 1.1 de Sascha Hlusiak

Las órbitas críticas se ven muy bien [3] y son importantes para analizar la dinámica. Se puede usar un gran subprograma de Java de Evgeny Demidov [4]

Código fuente C

Es un programa de consola C (un archivo) Se puede compilar en:

  • Windows (gcc a través de Dev-C ++)
  • linux y mac usando gcc:
gcc main.c -lm

crea un archivo .out. Entonces ejecútalo:

./a.out

Crea un archivo ppm en el directorio del programa. Utilice el visor de archivos para verlo.


/ * c programa de consola que crea un archivo ppm * / #include  <stdio.h>#include  <stdlib.h> / * para funciones de números aleatorios ISO C * /#include  <math.h>#define PI 3.14159265 / * da signo de número * / signo doble  ( doble d ) { if ( d < 0 ) { return -1.0 ;} else { return 1.0 ;}; };         / * ----------------------------- * / int  main () {  / *  épsilon: 0.001;  radio: 1 + épsilon;  ángulo: (3-sqrt (5)) / 2;  l: radio * exp (% i * ángulo * 2 *% pi);  c: l / 2 - (l * l) / 4;  c = 0,58762398718188 *% i-0,39095328938716  -------------------------  épsilon: -0,001;  0.58595232559771 *% i-0.39012849476251  --------------------------------  épsilon: 0.0;  0.58678790734697 *% i-0.3905408702184  -------------------------  ángulo de trifurcación: 1/3;  -------------------  épsilon: 0.0;  radio: 1 + épsilon;  ángulo: 1/4; tetrafurcación  -0,4 <y <0,4   --------------------  1/5 -0,2 <Zx <0,4;  0.0 <ZyM <0.8  ----------------------- * /  ángulo doble  = 1.0 / 6.0 , épsilon = -0.0005 , radio = 1.0 + épsilon , / * L = Lx + Ly * i = lambda = radio * exp (i * ángulo * 2 * PI); * / Lx = cos ( 2 * PI * ángulo ) * radio , Ly = sin ( 2 * PI * ángulo ) * radio , / * C = Cx + Cy * i = L / 2 - L * L / 4 * / Cx = - ( cos       ( 4 * PI * ángulo ) * radio * radio ) / 4 + ( cos ( 2 * PI * ángulo ) * radio ) / 2 ,  Cy = (( sin ( 2 * PI * ángulo ) * ( épsilon + 1 )) / 2 - ( pecado ( 4 * PI *ángulo ) * radio * radio ) / 4 ); / * coordenada de pantalla = coordenada de píxeles * /  int  iX ,  iY ,  iXmin = 0 ,  iXmax = 500 ,  iYmin = 0 ,  iYmax = 500 ,  iWidth = iXmax - iXmin + 1 ,  iHeight = iYmax - iYmin + 1 ,  / * 3D datos: X, Y, color * /  / * número de bytes = número de píxeles de la imagen * número de bytes de color * /  iLength = iWidth * iHeight *3 , / * 3 bytes de color * /  punto ,  índice ;  / * de matriz * / int  iXinc ,  iYinc , iIncMax = 1 ,  / * ancho de píxel grande; para iXmax = 2000, elija 6, para 500 elija 2 * /  iIncMax2 ;  / * coordenada (doble) mundial = plano de parámetro * /  const  doble  ZxMin = -0,2 ;  const  doble  ZxMax = 0,6 ;  const  doble  ZyMin = 0.0 ;  const  doble  ZyMax = 0,8 ;  / * * /  doble  PixelWidth = ( ZxMax - ZxMin) / iWidth ;  doble  PixelHeight = ( ZyMax - ZyMin ) / iHeight ;  doble  Zx ,  Zy ,  / * Z = Zx + Zy * i * /  Z0x ,  Z0y ,  / * Z0 = Z0x + Z0y * i * /  Zx2 ,  Zy2 ,  / * Zx2 = Zx * Zx; Zy2 = Zy * Zy * /  NewZx ,  NewZy ,  DeltaX ,  DeltaY ,  SqrtDeltaX ,  SqrtDeltaY ,  AlphaX ,  AlphaY ,  BetaX ,BetaY ,  / * repelente de punto fijo Beta * /  AbsLambdaA , AbsLambdaB ,  Z_cr_x = 0.0 ,  Z_cr_y = 0.0 ;  /* punto crítico */ / * * /  int  Iteración ,  IterationMax = 100000 ,  iTemp ;  / * valor de rescate, radio del círculo; * /  const  int  EscapeRadius = 40 ;  int  ER2 = EscapeRadius * EscapeRadius ;  doble  / * AR = distancia mínima del atractor = Radio del atractor * /  AR2 = 1.0e-6 ,  / * AR2 = AR * AR * /  d , dX , dY ;  / * distancia del atractor: d = sqrt (dx * dx + dy * dy) * / / * Archivo PPM * /  ARCHIVO  *  fp ;  char  * nombre de archivo = "co_a_1_6_m00005_5.ppm" ;  char  * comment = "# esto es julia establecido para c =" ; / * el comentario debe comenzar con # * /  const  int  MaxColorComponentValue = 255 ; / * el componente de color (R o G o B) está codificado de 0 a 255 * / / * matriz dinámica 1D para valores de color de 24 bits * /  unsigned  char  * matriz ; printf ( "ángulo =% f \ n " , ángulo );  printf ( "épsilon =% f \ n " , épsilon );  printf ( "radio =% f \ n " , radio ); printf ( "Lx =% f \ n " , Lx );  printf ( "Ly =% f \ n " , Ly );  printf ( "Cx =% f \ n " , Cx );  printf ( "Cy =% f \ n " , Cy );  printf ( "ZxMax-ZxMin =% f \ n " , ZxMax - ZxMin );  printf ( "ZyMax-ZyMin =% f \ n " , ZyMax - ZyMin ); / * ----------------- * / array  =  malloc (  iLength  *  sizeof ( carácter sin firmar  ) ); if ( array == NULL ) { fprintf ( stderr , "No se pudo asignar memoria" ); getchar (); return 1 ; } else { printf ( "Estoy trabajando. Espera \ n " ); / * llena la matriz de datos con puntos negros * / for ( index = 0 ; index <                iLength -1 ; ++ índice )  matriz [ índice ] = 0 ;  / * ------------------------------------------------ --------------- * / / * ------ dibujar la órbita del punto crítico --------------------------- * /  / * Z0 = Z_critical * /  Zx = Z_cr_x ;  Zy = Z_cr_y ; Zx2 = Zx * Zx ;  Zy2 = Zy * Zy ; // dX = Zx-AlphaX; // dY = Zy-AlphaY;  d = Zx2 + Zy2 ;  // iIncMax2 = 0;  para  ( Iteración = 0 ; Iteración < IterationMax  ; Iteration ++ )  / * && (d> AR2) * /  {  Zy = 2 * Zx * Zy  +  Cy ;  Zx = Zx2 - Zy2  + Cx ; / * traducir del mundo a la coordenada de la pantalla * /  iX = ( Zx - ZxMin ) / PixelWidth ;  iY = ( Zy - ZyMin ) / PixelHeight ;  / * * /  // para (iYinc = -iIncMax; iYinc <iIncMax2; ++ iYinc) // para (iXinc = -iIncMax; iXinc <iIncMax2; ++ iXinc)  {  iTemp = (( iYmax - iY -1 ) * iXmáx + iX ) * 3 ;  // ((iYmax-iY-1 + iYinc) * iXmax + iX + iXinc) * 3;  si (iTemp <= iLength  &&  iTemp > -1 )  // seguridad  { matriz [ iTemp ] = 255 ;  / * punto blanco * /  matriz [ iTemp + 1 ] = 255 ;  matriz [ iTemp + 2 ] = 255 ;  }  else  printf ( "fuera \ n " );  }  / * --------- * /  Zx2 = Zx * Zx;  Zy2 = Zy * Zy ;  // dX = Zx-AlphaX; // dY = Zy-AlphaY; // d = dX * dX + dY * dY;  d = Zx2 + Zy2 ;  }; / * escribe toda la matriz de datos en un archivo ppm en un solo paso ----------------------- * /  / * crea un nuevo archivo, dale un nombre y abre en modo binario * /  fp =  fopen ( nombre de archivo , "wb" );  / * b - modo binario * /  if  ( fp  ==  NULL ) {  fprintf ( stderr , "error de archivo" );  }  else  {  / * escribe el encabezado ASCII en el archivo * /  fprintf ( fp , "P6 \ n % s \ n % d \ n % d \ n % d \ n ", Comentario , iXmax , iYmax , MaxColorComponentValue );  / * escribe bytes de datos de imagen en el archivo * /  fwrite ( array , iLength  , 1 , fp );  fclose ( fp );  fprintf ( stderr , "archivo guardado" );  getchar ();  } libre ( matriz ); return  0 ;  }  / * if (matriz .. else ... * / }

Código fuente de Maxima

Este es un programa en Maxima que hace lo mismo que el programa C anterior.


/ *
este es un archivo por lotes para Maxima 5.13.0http://maxima.sourceforge.net/probado en wxMaxima 0.7.1
usando el paquete de dibujo (interfaz a gnuplot) para dibujar en la pantalla
dibuja la órbita crítica = órbita del punto crítico
y encuentra el período
Adam Majewski fraktal.republika.pl
con la ayuda de
Mario Rodríguez Riotorto http://www.telefonica.net/web2/biomates* /
/ * calcular c para el radio, ángulo yl dados (lambda = multiplicador de punto fijo) * /
épsilon: 0,001;
radio: 1 + épsilon;
ángulo: (3-sqrt (5)) / 2; / * en radianes * /
l: radio * exp (% i * ángulo * 2 *% pi);
c: l / 2 - (l * l) / 4;
trigsimp (%);
rectforma (%);
c: flotante (%), num;
/ * definir función (mapa) para el sistema dinámico z (n + 1) = f (zn, c) * /
f (z, c): = z * z + c;
/ * número máximo de iteraciones * /
iMax: 200; / * a los grandes alumnos se vincula el desbordamiento de pila * /
EscapeRadius: 10;
/ * definir el plano z (dinámico) * /
zxMin: -0,8;
zxMax: 0,2;
zyMin: -0,2;
zyMax: 0,8;
/ * la resolución es proporcional al número de detalles y al tiempo de dibujo * /
iXmax: 1000;
iYmax: 1000;
/ * calcular el punto crítico * /
zcr: rhs (resolver (diff (f (z, c), z, 1)));
/ * guardar el punto crítico en 2 listas * /
xcr: makelist (parte real (zcr), i, 1, 1); / * lista de re (z) * /
ycr: makelist (imagpart (zcr), i, 1, 1); / * lista de im (z) * /
/ * ------------------- calcular la órbita de avance del punto crítico ---------- * /
z: zcr; /* primer punto */
órbita: [z];
para i: 1 a iMax paso 1 hacer
cuadra
( z: f (z, c), si abs (z)> EscapeRadius, devuelve (i) else orbit: endcons (z, orbit) );
/ * -------------- guardar órbita para dibujarla más tarde en la pantalla ------------------------- ---- * /
/ * guarda los valores z en 2 listas * /
xx: makelist (parte real (zcr), i, 1, 1); / * lista de re (z) * /
yy: makelist (imagpart (zcr), i, 1, 1); / * lista de im (z) * /
para i: 2 a través de la longitud (órbita) paso 1 hacer
cuadra
( xx: contras (parte real (órbita [i]), xx), yy: contras (imagpart (órbita [i]), yy)
);
/ * dibujar la órbita invertida de beta usando el paquete de dibujo * /
cargar (dibujar);
dibujar2d terminal = 'pantalla, pic_width = iXmax, pic_height = iYmax,
rango y = [zyMin, zyMax], rango x = [zxMin, zyMax],
title = concat ("plano dinámico para f (z, c): = z * z +", cadena (c)),
xlabel = "Z.re", ylabel = "Z.im", tipo_punto = círculo_lleno, points_joined = falso,
color = rojo,
tamaño_punto = 0.5,
key = "órbita crítica",
puntos (xx, yy),
clave = "punto crítico",
color = azul,
points_joined = falso,
puntos (xcr, ycr)
);

enlaces externos

Versión avi de este archivo

Referencias

  1. M. Romera , G. Pastor y F. Montoya: Multifurcaciones en puntos fijos no hiperbólicos del mapa de Mandelbrot. Fractalia 6, No. 21, 10-12 (1997)
  2. Burns AM  : Trazando la fuga: una animación de bifurcaciones parabólicas en el set de Mandelbrot. Revista de matemáticas, vol. 75, núm. 2 (abril de 2002), págs. 104-116
  3. Imagen de conanite
  4. El viaje de Julia establece con órbita - applet de Java por Evgeny Demidov


Licencia

Yo, el titular de los derechos de autor de este trabajo, lo publico bajo las siguientes licencias:
Puede seleccionar la licencia de su elección.

Subtítulos

Add a one-line explanation of what this file represents

Items portrayed in this file

depicts

some value

author name string: Adam majewski
Wikimedia username: Adam majewski
URL: http://commons.wikimedia.org/wiki/User:Adam_majewski

copyright status

copyrighted

copyright license

GNU Free Documentation License, version 1.2 or later

Creative Commons Attribution-ShareAlike 3.0 Unported

source of file

original creation by uploader

Historial del archivo

Haga clic en una fecha / hora para ver el archivo tal como apareció en ese momento.

Las siguientes páginas de la Wikipedia en inglés utilizan este archivo (no se enumeran las páginas de otros proyectos):
  • Polinomio cuadrático complejo
Obtenido de " https://en.wikipedia.org/wiki/File:6furcation.gif "