6furcation.gif (500 × 500 píxeles, tamaño de archivo: 27 KB; tipo MIME: image / gif , en bucle, 25 cuadros, 25 s)
![]() | Este es un archivo de Wikimedia Commons . La información de su página de descripción se muestra a continuación. Commons es un repositorio de archivos multimedia con licencia libre. Tu puedes ayudar . |
Descripción6furcation.gif | Inglés: cambios de la órbita crítica del polinomio cuadrático complejo a lo largo de Mandelbrot establece el rayo interno cardioide principal de ángulo 1/6 |
Fuente | Propio trabajo |
Autor | Adam majewski |
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?
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]
Es un programa de consola C (un archivo) Se puede compilar en:
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 ... * / }
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) );
![]()
| Este archivo tiene la licencia Creative Commons Attribution-Share Alike 3.0 Unported . | |
https://creativecommons.org/licenses/by-sa/3.0CC BY-SA 3.0 Creative Commons Attribution-Share Alike 3.0 ciertocierto |
![]() | Se concede permiso para copiar, distribuir y / o modificar este documento bajo los términos de la Licencia de documentación libre GNU , Versión 1.2 o cualquier versión posterior publicada por la Free Software Foundation ; sin Secciones Invariantes, sin Textos de Portada y sin Textos de Contraportada. Se incluye una copia de la licencia en la sección titulada Licencia de documentación libre GNU .http://www.gnu.org/copyleft/fdl.htmlGFDLLicencia de documentación libre GNUciertocierto |
Haga clic en una fecha / hora para ver el archivo tal como apareció en ese momento.
Fecha y hora | Miniatura | Dimensiones | Usuario | Comentario | |
---|---|---|---|---|---|
Actual | 16:51, 6 de julio de 2008 | 500 × 500 (27 KB) | Adam majewski | {{Información | Descripción = {{en | 1 = cambios de órbita crítica a lo largo del rayo interno cardioide principal de ángulo 1/6}} | Fuente = Trabajo propio del cargador | Autor = Adam majewski | Fecha = | Permiso = | otras_versiones =} } {{ImageUpload | full}} |