Lecture 23

Julia sets

MCS 275 Spring 2024
Emily Dumas

View as:   Presentation   ·   PDF-exportable  ·   Printable

Lecture 23: Julia sets

Reminders and announcements:

  • Project 3 to be released Monday
  • Homework 8 available, as are Worksheet 8 solutions
  • trees.py updated
  • Install matplotlib

Numpy loose ends

  • Aggregations
    • Take an array and return a number or lower-dimensional array (max, min, mean, etc.)
  • Broadcasting
    • Operations between arrays of incompatible sizes will use duplication to make it possible (e.g. matrix + number, matrix + row, ...)

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

  • 2023-03-07 Finalization of the 2023 lecture this was based on
  • 2024-03-01 Initial publication