Lecture 27
Julia sets
MCS 275 Spring 2021
Emily Dumas
Lecture 27: Julia sets
Course bulletins:
- Project 3 due 6:00pm CDT on Friday March 19.
- Some time today:
- Project 3 autograder opens
- Worksheet 10
Dynamics
Start with a function, e.g. f(x)=x2, and a number, a.
Apply f over and over again to get a sequence:
a,f(a),f(f(a)),f(f(f(a))),...
This sequence {fn(a)}n≥0 is the orbit of a (under f). What can we say about it?
Let's start with a simple example, f(x)=x2.
2→4→16→256→65536→⋯
12→14→116→1256→165536→⋯
What happens for other starting points?
For real numbers, orbits under f(x)=x2 are easy:
- If |a|<1, the orbit of a converges to 0
- If |a|>1, the orbit of a goes to ∞
- If |a|=1 the orbit is bounded but doesn't go to 0
For f(x)=x2 with complex numbers, it's the same!
- If |a|<1, the orbit of a converges to 0
- If |a|>1, the orbit of a goes to ∞
- If |a|=1 the orbit is bounded but doesn't go to 0
Filled Julia set
The filled Julia set of a polynomial f(x), denoted Kf, is the set of complex numbers that have bounded orbits under f.
Named for mathematician Gaston Julia (1893-1978) who studied these sets starting in the 1920s.
Next, let's look at f(x)=x2−1.
First design
- Write a function to test orbit behavior of a point.
- Make a grid of points in C and test each one.
- Record the results in an image file (black=bounded, white=unbounded).
Divergence criterion
For f(x)=x2−1, if |a|≥2, then fn(a)→∞ as n→∞.
Improved design
- Make a grid of points in C and test each one.
- Use numpy array operations to apply f to all of them at once, repeatedly.
- Optional: Keep track of ones that are already big, and don't apply f to them.
- Record the results in an image file (black=bounded, white=unbounded).
References
Revision history
- 2021-03-17 Add second Julia notebook link
- 2021-03-15 Add Julia notebook link
- 2021-03-14 Initial publication