Lecture 27

Julia sets

MCS 275 Spring 2022
David Dumas

Lecture 27: Julia sets

Course bulletins:

  • Project 3 due 6pm Fri
  • Project 3 autograder open
  • Homework 9 due tomorrow (Tue) at 12pm
  • Worksheet 10 available
  • Homework 10 will be due Tue 29 Mar (after spring break)
  • Worksheet 11 will be posted early---by end of the day Fri
  • Reminder: Week after spring break has 2 async lectures (#30,#32) and one in person lecture (#31 on Wed 30 Mar)

Install matplotlib

For use starting in Wednesday's lecture.

python3 -m pip install matplotlib

Or see the official install instructions.

Our work on pillow and numpy has involved a lot of low-level discussion of features, rather than fully developed application examples.

Today we'll work on changing that.

Dynamics

Start with a function, e.g. $f(x) = x^2$, 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 $\{ f^{n}(a) \}_{n \geq 0}$ is the orbit of $a$ (under $f$). What can we say about it?

Let's start with a simple example, $f(x) = x^2$.

$2\to4\to16\to256 \to 65536\to\cdots$

$\frac{1}{2} \to \frac{1}{4} \to \frac{1}{16} \to \frac{1}{256} \to \frac{1}{65536} \to \cdots$

What happens for other starting points?

For real numbers, orbits under $f(x)=x^2$ are easy:

  • If $|a|<1$, the orbit of $a$ converges to $0$
  • If $|a|>1$, the orbit of $a$ goes to $\infty$
  • If $|a|=1$ the orbit is bounded but doesn't go to $0$

For $f(z)=z^2$ 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 $\infty$
  • If $|a|=1$ the orbit is bounded but doesn't go to $0$

$f(z)=z^2$

Filled Julia set

The filled Julia set of a polynomial $f$, denoted $K_f$, is the set of complex numbers that have bounded orbits under $f$.

(So $a \in K_f$ is a statement about the behavior of an infinite sequence—the orbit of $a$)

Named for mathematician Gaston Julia (1893-1978) who studied these sets starting in the 1920s.

$f(z)=z^2$

Next, let's look at $f(z) = z^2 - 1$.

First design

  • Write a function to test orbit behavior of a point.
  • Make a grid of points in $\mathbb{C}$ and test each one.
  • Record the results in an image file (black=bounded, white=unbounded).

Divergence criterion

For $f(z) = z^2-1$, if $|a|\geq 2$, then $f^n(a) \to \infty$ as $n \to \infty$.

Improved design

  • Make a grid of points in $\mathbb{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

  • 2022-03-14 Initial publication