Fichier d’origine (1 000 × 500 pixels, taille du fichier : 23 kio, type MIME : image/png)

Ce fichier et sa description proviennent de Wikimedia Commons.

Description

Description
English: External rays and equipotential lines of Mandelbrot set as an images of external rays and circles of unit circle under Jungreis function
Date 4.01.2009
Source Own work with help of : Richard J. Fateman and G. A. Edgar
Auteur Adam majewski

Compare with

c src code

// https://gist.github.com/Gro-Tsen/9f690a9461c99abb4a01249b1838b548
// Gro-Tsen http://www.madore.org/~david/
// Compute the coefficients of the Jungreis function, i.e., the
// Fourier coefficients of the harmonic parametrization of the
// boundary of the Mandelbrot set, using the formulae given in
// following paper: John H. Ewing & Glenn Schober, "The area of the
// Mandelbrot set", Numer. Math. 61 (1992) 59-72 (esp. formulae (7)
// and (9)).  (Note that their numerical values in table 1 give the
// coefficients of the inverse series.)

// The coefficients betatab[m+1][0] are the b_m such that
// z + sum(b_m*z^-m) defines a biholomorphic bijection from the
// complement of the unit disk to the complement of the Mandelbrot
// set.  The first few values are:
//   {-1/2, 1/8, -1/4, 15/128, 0, -47/1024, -1/16, 987/32768, 0, -3673/262144}

// Formula: b_m = beta(0,m+1) where beta(0,0)=1,
// and by downwards induction on n we have:
// beta(n-1,m) = (beta(n,m) - sum(beta(n-1,j)*beta(n-1,m-j), j=2^n-1..m-2^n+1) - beta(0,m-2^n+1))/2 if m>=2^n-1, 0 otherwise
// (beta(n,m) is written betatab[m][n] in this C program).

#include <stdio.h>
#include <math.h>
#include <float.h>
#include <assert.h>

#ifndef NBCOEFS
#define NBCOEFS 8193
#endif

#ifndef SIZEN
#define SIZEN 14
#endif

#if ((NBCOEFS+4)>>SIZEN) != 0
#error Please increase SIZEN
#endif

double betatab[NBCOEFS+1][SIZEN];

int
main (void)
{
  for ( int n=0 ; n<SIZEN ; n++ )
    betatab[0][n] = 1;
  for ( int m=1 ; m<=NBCOEFS ; m++ )
    {
      for ( int n=SIZEN ; n>=1 ; n-- )
	{
	  if ( m < (1<<n)-1 )
	    betatab[m][n-1] = 0;
	  else
	    {
	      double v;
	      assert (n < SIZEN);
	      v = betatab[m][n];
	      for ( int k=((1<<n)-1) ; k<=m-(1<<n)+1 ; k++ )
		v -= betatab[k][n-1] * betatab[m-k][n-1];
	      v -= betatab[m-(1<<n)+1][0];
	      betatab[m][n-1] = v/2;
	    }
	}
      printf ("%d\t%.17e\t%a\n", m-1, betatab[m][0], betatab[m][0]);
    }
}

Maxima source code

 /*  batch file for maxima 
 uses :
 - symmetry around horizontal ( 0X ) axis
 - Psi_M function to map conjugate plane to parameter plane
 - jungreis algorithm to 
 time :3818
 */ 

 start:elapsed_run_time ();
 jMax:50; /* precision  = proportional to details and time of computations  */
 iMax:200; /* number of points to draw */
 iMaxBig:400;

 /* computes b coefficient of Jungreis function*/
 betaF[n,m]:=block
 (
 [nnn:2^(n+1)-1],
 if m=0
 then 1.0
 else if ((n>0) and (m < nnn)) 
  then 0.0
  else (betaF[n+1,m]- sum(betaF[n,k]*betaF[n,m-k],k,nnn,m-nnn)-betaF[0,m-nnn])/2.0
 )$
 b[m]:=betaF[0,m+1]$

 /* -------------------------------*/
 /* Power of w to j */
 wn[w,j]:= if j=0 then 1 else w*wn[w,j-1]$

 /* ---------Jungreis function ;  c = Psi_M(w) ----------------------------- */
 Psi_M(w):=w + sum(b[j]/wn[w,j],j,0,jMax)$

 /* exponential for of complex number with angle in turns */
 GiveCirclePoint(t):=R*%e^(%i*t*2*%pi)$ /* gives point of unit circle for angle t in turns */

 GiveWRayPoint(R):=R*%e^(%i*tRay*2*%pi)$ /* gives point of external ray for radius R and angle tRay in turns */

 NmbrOfCurves:9;

 /* coordinate of w-plane  not c-plane */
 R_max:1.5;
 R_min:1;
 dR:(R_max-R_min)/NmbrOfCurves; /* for circles */
 dRR:(R_max-R_min)/iMax; /* for rays */ 

 /* --------------------------------------f_0 plane = w-plane -----------------------------------------*/

 /*-------------- unit circle ------------*/
 R:1;
 circle_angles:makelist(i/iMax,i,0,iMax/2)$
 CirclePoints:map(GiveCirclePoint,circle_angles)$ 

 /* ---------------external circles ---------*/
 circle_radii: makelist(R_min+i*dR,i,1,NmbrOfCurves)$ 
 circle_angles:makelist(i/iMaxBig,i,0,iMaxBig/2)$
 WCirclesPoints:[]$
 for R in circle_radii do 
 WCirclesPoints:append(WCirclesPoints,map(GiveCirclePoint,circle_angles))$

 /* -------------- external w rays -------------*/
 ray_radii:makelist(R_min+dRR*i,i,1,iMax);
 ray_angles:[0,1/3,1/7 , 2/7 ,3/7  ]; /* list of angles < 1/2 of root points */
 WRaysPoints:[];
 for tRay in ray_angles do 
 WRaysPoints:append(WRaysPoints,map(GiveWRayPoint,ray_radii));

 /* -------------------------parameter plane = c plane -----------------------------------*/
 MPoints:map(Psi_M,CirclePoints); /* Mandelbrot set points */

 CRaysPoints:map(Psi_M,WRaysPoints); /* external z rays */

 Equipotentials:map(Psi_M,WCirclesPoints);

 /* add points below horizontal axis */
 for w in CirclePoints do CirclePoints:cons(conjugate(w),CirclePoints);
 for w in WRaysPoints do WRaysPoints:cons(conjugate(w),WRaysPoints);
 for w in WCirclesPoints do WCirclesPoints:cons(conjugate(w),WCirclesPoints);
 for c in MPoints do MPoints:cons(conjugate(c),MPoints);
 for c in CRaysPoints do CRaysPoints:cons(conjugate(c),CRaysPoints);
 for c in Equipotentials do Equipotentials:cons(conjugate(c),Equipotentials);

 /* time */
 stop:elapsed_run_time ();
 time:fix(stop-start); 

 /* ---------------- draw *--------------------------------------------------------------------------*/

 load(draw); /* Mario Rodríguez Riotorto   http://www.telefonica.net/web2/biomates/maxima/gpdraw/index.html */
 draw(file_name = "jung50es_2",
  pic_width=1000, 
  pic_height= 500,
  terminal  = 'png,
  columns  = 2,
  gr2d(title = " unit circle with external rays & circles ",
  point_type = filled_circle,
  points_joined =true,
  point_size    =  0.34,
  color         = red,
  points(map(realpart, CirclePoints),map(imagpart, CirclePoints)),
  points_joined =false,
  color         = green,
  points(map(realpart, WCirclesPoints),map(imagpart, WCirclesPoints)),
  color         = black,
 points(map(realpart, WRaysPoints),map(imagpart, WRaysPoints))
 ),
 gr2d(title      = "Parameter plane : Image under Psi_M(w) ",
 points_joined =true,
 point_type = filled_circle,
 point_size    =0.34,
 color         = blue,
 points(map(realpart, MPoints),map(imagpart, MPoints)),
 points_joined =false,
 color         = green,
 points(map(realpart, Equipotentials),map(imagpart, Equipotentials)),
 color         = black,
 points(map(realpart, CRaysPoints),map(imagpart, CRaysPoints))
 ) 
 );

Conditions d’utilisation

Moi, en tant que détenteur des droits d’auteur sur cette œuvre, je la publie sous les licences suivantes :
w:fr:Creative Commons
paternité partage à l’identique
Ce fichier est disponible selon les termes de la licence Creative Commons Attribution – Partage dans les Mêmes Conditions 3.0 (non transposée).
Vous êtes libre :
  • de partager – de copier, distribuer et transmettre cette œuvre
  • d’adapter – de modifier cette œuvre
Sous les conditions suivantes :
  • paternité – Vous devez donner les informations appropriées concernant l'auteur, fournir un lien vers la licence et indiquer si des modifications ont été faites. Vous pouvez faire cela par tout moyen raisonnable, mais en aucune façon suggérant que l’auteur vous soutient ou approuve l’utilisation que vous en faites.
  • partage à l’identique – Si vous modifiez, transformez, ou vous basez sur cette œuvre, vous devez distribuer votre contribution sous la même licence ou une licence compatible avec celle de l’original.
GNU head Vous avez la permission de copier, distribuer et modifier ce document selon les termes de la GNU Free Documentation License version 1.2 ou toute version ultérieure publiée par la Free Software Foundation, sans sections inaltérables, sans texte de première page de couverture et sans texte de dernière page de couverture. Un exemplaire de la licence est inclus dans la section intitulée GNU Free Documentation License.
Vous pouvez choisir l’une de ces licences.

Légendes

Ajoutez en une ligne la description de ce que représente ce fichier

Éléments décrits dans ce fichier

dépeint

Historique du fichier

Cliquer sur une date et heure pour voir le fichier tel qu'il était à ce moment-là.

Date et heureVignetteDimensionsUtilisateurCommentaire
actuel8 janvier 2009 à 20:10Vignette pour la version du 8 janvier 2009 à 20:101 000 × 500 (23 kio)Soul windsurfer{{Information |Description=Better version made by Robert Dodier using Maxima/Clisp and jMax=100 |Source= |Date= |Author= |Permission= |other_versions= }}
4 janvier 2009 à 14:42Vignette pour la version du 4 janvier 2009 à 14:421 000 × 500 (23 kio)Soul windsurfer{{Information |Description={{en|1=External rays and equipotential lines of Mandelbrot set}} |Source=Own work |Author=Adam majewski |Date=4.01.2009 |Permission= |other_versions= }} <!--{{ImageUpload|full}}-->

La page suivante utilise ce fichier :

Usage global du fichier

Les autres wikis suivants utilisent ce fichier :

Ce document provient de « https://fr.wikipedia.org/wiki/Fichier:Jung50e.png ».