File:Preimages of curve ER.png

Original file(1,000 × 1,000 pixels, file size: 55 KB, MIME type: image/png)

Summary

Description
English: preimages[1] of circle : {z:abs(z)=ER} under fc(z)=z*z+c. Preimages of circle from the exterior gives level sets of the escaping time. Exterior of the circle is the trap for escaping points ( target set)
Date
Source own work with help Mario Rodríguez Riotorto
Author Adam majewski
Other versions

How to run the program

This is batch file for Maxima CAS.

Tested under :

  • Maxima version: 5.25.1
  • Host type: x86_64-ubuntu-linux-gnu 2.6.32-33-generic
  • Lisp implementation type: SBCL
  • Lisp implementation version: 1.0.29.11.debian
  • G N U P L O T version 4.2 patchlevel 6
  • draw package ( "/usr/share/maxima/5.25.1/share/draw/draw.lisp" ) by Mario Rodríguez Riotorto

To run :

  • save as m.mac
  • open it in Maxima CAS as a batch file:
batch("m.mac")$

Maxima CAS src code

kill(all);

/* ------------------ definitions  ----------------------------*/

f(z,c):=z*z+c;
finverseplus(z):=float(rectform(sqrt(z-c))); 
finverseminus(z):=-sqrt(z-c);


/* computes invese image of input points */
GivePreimage(OldList):=
block(
  [NewL,NewLP,NewLN],
  NewLP:map(finverseplus,OldList), /* positive preimages */
  NewLN:map("-",NewLP),            /* negative preimages */
  NewL:append(NewLP,NewLN) /* output = all preimages as a list */
);


/* t is an angle in turns */ 
p(t):=radius*%e^(2*%pi*%i*t);

/* ------------------  compilation --------------------------------------*/
compile(all);

/*------------------ constant values ---------------------------------- */

c:-0.11+0.65569999*%i; 
radius:3; /* radius of initial circle */
iMax:100; /* number of points of initial circle */
/* second curve will have 2*iMax = 200 points,
   third curve will have 2*2*iMax = 400 points .... */
dt:float(1/iMax); /* step of turn */

/* --------------------- main ------------------------------------------*/


/* point to point method of drawing */
/* compute points of curve and save points to the list */


/* points of initial circle   l0={z:abs(z)=radius } */
l0:makelist (i*dt, i, 0, iMax); /* list of turns from 0 to 1 */
l0:map(p,l0); /* list of points of circle of fixed radius */

/* 
 list l0 has iMax=100 points 
 list ln has iMax*2^n points
 List l11 contains 100*2^11=100*2048 =204 800 points 
*/

 
/* ---------- preimages of circle under fc = equipotential lines --------------------*/
l1:GivePreimage(l0); /* first preimage */
l2:GivePreimage(l1)$ /* second preimage */
l3:GivePreimage(l2)$
l4:GivePreimage(l3)$
l5:GivePreimage(l4)$
l6:GivePreimage(l5)$
l7:GivePreimage(l6)$
l8:GivePreimage(l7)$
l9:GivePreimage(l8)$
l10:GivePreimage(l9)$
l11:GivePreimage(l10)$
l12:GivePreimage(l11)$
l13:GivePreimage(l12)$
l14:GivePreimage(l13)$
/* preimages :
- tend to Julia set as n increases
- tend to equipotential lines as ER tends to infinity */


/*--- order point according to its argument to join them by lines --*/
/* thx to Mario Rodriguez */
l1: sort(l1, lambda([z1,z2], is(carg(z1) < carg(z2))))$
l2: sort(l2, lambda([z1,z2], is(carg(z1) < carg(z2))))$
l3: sort(l3, lambda([z1,z2], is(carg(z1) < carg(z2))))$
l4: sort(l4, lambda([z1,z2], is(carg(z1) < carg(z2))))$
l5: sort(l5, lambda([z1,z2], is(carg(z1) < carg(z2))))$
/*
for more complicated curves points should be ordered
by external angle not argument !!!!!
also points are so dense on the curve so joining is not needed

*/

/*----------------------- draw -----------------------------------*/
load(draw);
draw2d(
    
    terminal  = 'png,
    file_name = "m4",

    dimensions = [1000,1000],

    title= "Preimages of circle (z:abs(z)=ER) under fc(z)=z*z -0.11+0.65569999*i; ",

    key = "L0",
    xlabel     = "re ",
    ylabel     = "im",
    points_joined = true,
    point_type    = dot,
    point_size    = 5,
    color         = green,
    points(map(realpart, l0),map(imagpart, l0)),
    
    color         = black,
    key = "f^(-1)(L0)",
    points(map(realpart, l1),map(imagpart, l1)),
    
    key = "f^(-2)(L0)",
    points(map(realpart, l2),map(imagpart, l2)),
    
    key = "f^(-3)(L0)",
    points(map(realpart, l3),map(imagpart, l3)),
    
    key = "f^(-4)(L0)",
    points(map(realpart, l4),map(imagpart, l4)),

    key = "f^(-5)(L0)",
    points(map(realpart, l5),map(imagpart, l5)),
    color         = red,
    points_joined = false,
    color         = red,
    key = "f^(-14)(L0)",
    points(map(realpart, l14),map(imagpart, l14))
	
 );


How the program works

Steps

  • compute iMax points of circle with radius ER centered at the origin and save the to the l0 list
  • compute preimages of points of circle using and save the to the l1 list
  • repeat second step n-times
  • draw above lists

Escape radius

Here is definition

Lists

Number of points in the list :

  • list l0 has iMax points
  • list l1 has 2*iMax points
  • list ln has points

For example when iMax=100 then l11 has 100*2^11=100*2048 =204 800 points

List l0 = circle

Here we use :

  • exponential form of complex number
  • turn units of angles

so to compute points of circle centered at origin and radius=ER we use function :

p(t):=radius*%e^(2*%pi*%i*t);

List l0 consist of iMax points for angle from 0 to 1 ( in turns).

References

  1. Preimage at wiki

Licensing

I, the copyright holder of this work, hereby publish it under the following license:
w:en:Creative Commons
attribution share alike
This file is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported license.
You are free:
  • to share – to copy, distribute and transmit the work
  • to remix – to adapt the work
Under the following conditions:
  • attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
  • share alike – If you remix, transform, or build upon the material, you must distribute your contributions under the same or compatible license as the original.

Captions

Add a one-line explanation of what this file represents

Items portrayed in this file

depicts

12 September 2011

image/png

File history

Click on a date/time to view the file as it appeared at that time.

Date/TimeThumbnailDimensionsUserComment
current10:04, 12 September 2011Thumbnail for version as of 10:04, 12 September 20111,000 × 1,000 (55 KB)Soul windsurfer