I was inspired by this tumblr post, and this wikimedia page to make some pretty pictures of the exponential function over the complex plane. Go there to read in more detail how the images were created, including how the colors were created.

Code is found here.

Hi definition images are found here.

## Tracking Venus and Earth over 8 years

I came about this tweet:

If you track the relative positions of Earth and Venus over an 8 year period, this is the resulting pattern. pic.twitter.com/lOoeUtAXH2

— SciencePorn (@SciencePorn) May 16, 2015

It reminded me strongly of the waning moon and linear mod art projects that I’ve been playing with.

For instance, here’s a screenshot from the waning moon (specifically y = 56x)

A quick intro: the picture above was made by taking 360 points around a circle, and shifting them by the function (y = 56x), and then graphing a line between the input and output. If the output is greater than 360, then take the remainder after dividing by 360.

From lunar planner.

And from John Carlos Baez’s blog:

It’s called the pentagram of Venus, because it has 5 ‘lobes’ where Venus makes its closest approach to Earth. At each closest approach, Venus move backwards compared to its usual motion across the sky: this is called retrograde motion.

Actually, what I just said is only approximately true. The Earth orbits the Sun once every

365.256

days. Venus orbits the Sun once every

224.701

days. So, Venus orbits the Sun in

224.701 / 365.256 ≈ 0.615187

Earth years. And here’s the cool coincidence:

8/13 ≈ 0.615385

That’s pretty close! So in 8 Earth years, Venus goes around the Sun almost 13 times. Actually, it goes around 13.004 times.

Hey do you recognize what that ratio is close to?

Anyway, there’s a lot to investigate here. How is the function y = 56x related to these planetary orbits?

## Linear Modulus Art

I saw this fantastic webpage a couple of months back.

Tons of fun. I took that idea and made a gif for my weird art Tumblr, Recursive Processing.

Here’s the processing.org code and the live (and smoother) version, and here’s the more fun version that is interactive based on the mouse position (some interesting polar math is involved here, x = r cos (theta) and y = r sin (theta) ).

These all work on the same principle, take a bunch of points around a circle, and shift them around the circle based on a linear function. If the output is too large, then they wrap around (clock math). The formal name for this idea is modular arithmetic, a very useful concept in computer programming. A quick example: Take an input value of x = 120, and a function of y = 3x + 20 (mod 360). y = 3 (120) + 20 (mod 360) = 380 (mod 360) = **20** (the remainder after dividing by 360). So make a line between 120 on the circle and 20. The resulting image after calculating 360 different points for y = 3x + 20 is:

But this concept is more difficult to grasp with the unusual step of graphing the points around a circle.

## Separate Input from Output

Lets go to a more straightforward representation. Here’s an interactive that might help.

So, this is just about the least interesting function, y = x (mod 10). So if x = 3, then y = 3 + 0 (mod 10) = 3. So draw a line from 3 to 3. Try the interactive yourself, click to change the function and see how it changes the picture.

Here’s another boring function: y = 0x + 0 (mod 10).

Ok, lets get to the interesting stuff, y = 7x + 8 (mod 10). Take x = 4, so y = 28 + 8 (mod 10) = 36 (mod 10) = 6. Draw a line from 4 to 6.

Here’s another interesting picture:

If you really enjoy the picture that you’ve made then you can get a high definition version (5k by 5k) by copying the code, installing processing.org and clicking any key. The image will be in the same file as project. Very good for printing in large form if you’re lucky enough to have a big printer.

New artwork in the classroom today. Told you I'd be dangerous when I figured out how to use the plotter. pic.twitter.com/479YZnWNdy

— Dan Anderson (@dandersod) April 24, 2015

## Questions For You

How can I bring this into the math classroom?

Where does this fit?

Is modular arithmetic in anyone’s curriculum? If not, why not?

Should I (or you) put together a non-linear version? Exponential, powers, logarithmic?

Other thoughts?

## The Mandelbrot Set Viewed through Precalculus

*I’ve given this presentation in November 2014 at AMTNYS in Syracuse, and in April 2015 at NCTM in Boston. I’ll be giving the presentation in May 2015 at the NY Master Teacher Conference, and in July 2015 at Twitter Math Camp in Claremont CA. *

## Drive

* Why* use the Mandelbrot fractal to get the students to learn some Precalculus topics?

- How often do students study math that less than 40 years old? Think about it.

What’s the most recently developed math topic that happens in your classroom? The Mandelbrot fractal was developed (discovered?) in the late 1970’s by Benoit Mandelbrot (amongst others, more information here) while working at IBM and through working with the Julia sets. His collegues at SUNY Stony Brook* used computers to create the first image of the Mandelbrot Set:

*The first picture of the Mandelbrot set, by Robert W. Brooks and Peter Matelski in 1978/1979*.* - There are so many great Precalculus topics addressed by the Mandelbrot set, namely:
- Complex numbers
- Arithmetic with Complex numbers
- Complex plane and Argand diagrams
- Recursive sequences
- Polar Form of Complex numbers
- Graphing using the Polar plane
- DeMoivre’s Theorem

By themselves they are interesting topics with many diverse uses, but together they can do marvelous things.

- The utter beauty and mysterious nature of the Mandelbrot set (and other related sets). It seems so inapproachable. Scary. It’s an infinite
*complex*process and has all the crazy fractal properties of self-similarity, but not really. You can zoom in forever and get more and more detail as you go. You can create (and understand?) images like so (all of these images came from my amateur code).

But these images are only*finitely*interesting. They are just pixel representations of the actual fractal. We can zoom in and get as much detail as we can handle (or more correctly, as a 32bit processing.org decimal float can handle – duh). - Lastly, be selfish, wouldn’t you like to learn something new alongside your students? Isn’t trying new things inherently a sign of youth? This might not be your thing, but if you’re interested in bringing it back to the classroom, the students will be that much more interested to see the teacher learning alongside their students.

## How

Here are several good videos that can help you get started with the Mandelbrot set:

- The Mandelbrot Set from Numberphile and Dr Holly Krieger from MIT.
- 63 and -7/4 are special from Numberphile with Dr Holly Krieger from MIT.
- Mandelbrot Set: how it is generated.
- How to fold a Julia Fractal. Amazing website.
- And for fun, music video for Jonathan Coulton’s song Mandelbrot Set

Next, you can walk through the lesson outline that I’ve made (pdf) and through the presentation that I gave for NCTM Boston (pdf).

Here are links to all the interactives:

- Clicker
- Mandelblocks
- Mandelbrot
- MandelbrotZoom
- MandelbrotFamily
- JuliaZoom
- MandelbrotAndJulia
- MandelbrotExperimental

Everything is also found here: bit.ly/mandelbrotfractal, including all the presentation material, the walkthrough, the interactives (and all the source code).

I had a ton of fun with this project and presentation, and I hope the students did too. Please let me know if you have any questions or comments. Thanks!

*Errors fixed thanks to a comment by J. Peter Matelski (one of the original Mandelbrot developers!)

## Using the arctan Power Series to Calculate Pi

**(Note: this post is an extension on the calculating pi with python post from a couple of years back. Also here’s another way to inefficiently calculate pi with Buffon’s Needles.)**

We’re currently working with Power series and Taylor series in Calculus.

One particularity pretty derivation is going from the series for to the series for

Even better you can use this formula to calculate pi, since , so .

How quickly does this converge to pi? Let’s find out.

Here’s the first ten partial sums:

n= 0 and the partial sum is 4.0

n= 1 and the partial sum is 2.666666666666667

n= 2 and the partial sum is 3.466666666666667

n= 3 and the partial sum is 2.8952380952380956

n= 4 and the partial sum is 3.3396825396825403

n= 5 and the partial sum is 2.9760461760461765

n= 6 and the partial sum is 3.2837384837384844

n= 7 and the partial sum is 3.017071817071818

n= 8 and the partial sum is 3.2523659347188767

n= 9 and the partial sum is 3.0418396189294032

n= 10 and the partial sum is 3.232315809405594

Ok, that’s slow.

Here’s the first 100 terms:

n= 0 and the partial sum is 4.0

n= 10 and the partial sum is 3.232315809405594

n= 20 and the partial sum is 3.189184782277596

n= 30 and the partial sum is 3.1738423371907505

n= 40 and the partial sum is 3.1659792728432157

n= 50 and the partial sum is 3.1611986129870506

n= 60 and the partial sum is 3.157984995168666

n= 70 and the partial sum is 3.155676462307475

n= 80 and the partial sum is 3.1539378622726155

n= 90 and the partial sum is 3.1525813328751204

n= 100 and the partial sum is 3.1514934010709914

Still not to 3.14 even after adding 100 terms of this sequence?

Here’s the first 10,000 terms:

n= 0 and the partial sum is 4.0

n= 1000 and the partial sum is 3.1425916543395442

n= 2000 and the partial sum is 3.1420924036835256

n= 3000 and the partial sum is 3.1419258758397897

n= 4000 and the partial sum is 3.1418425911015158

n= 5000 and the partial sum is 3.1417926135957908

n= 6000 and the partial sum is 3.1417592924821482

n= 7000 and the partial sum is 3.141735490326666

n= 8000 and the partial sum is 3.1417176379662446

n= 9000 and the partial sum is 3.1417037523562383

n= 10000 and the partial sum is 3.1416926435905346

Two factors of ten more than the last set and still not to 5 digits of precision?

Lastly, here’s the first ten million approximations:

n= 0 and the partial sum is 4.0

n= 1000000 and the partial sum is 3.1415936535887745

n= 2000000 and the partial sum is 3.1415931535894743

n= 3000000 and the partial sum is 3.1415929869229293

n= 4000000 and the partial sum is 3.1415929035895926

n= 5000000 and the partial sum is 3.1415928535897395

n= 6000000 and the partial sum is 3.141592820256488

n= 7000000 and the partial sum is 3.1415927964468655

n= 8000000 and the partial sum is 3.141592778589681

n= 9000000 and the partial sum is 3.141592764700862

n= 10000000 and the partial sum is 3.1415927535897814

I really don’t want to calculate this by hand if after 10,000,000 additions, we only have 7 digits of precision.

(Question: why are all these even terms an over-estimate of pi?)

Graph of the first 1000 partial sums:

Let’s compare that to Chudnovsky’s algorithm:

Chudnovsky

n= 1 3.1415926535897342076684535915782983407622332609156

n= 2 3.1415926535897932384626433835873506884758663459963

n= 3 3.1415926535897932384626433832795028841971676788547

n= 4 3.1415926535897932384626433832795028841971693993750

n= 5 3.1415926535897932384626433832795028841971693993750

n= 6 3.1415926535897932384626433832795028841971693993750

n= 7 3.1415926535897932384626433832795028841971693993750

Wow, this algorithm maxed out the 51 digits of precision after **4** iterations. Crazy.

Here’s the python code for using arctan to approximate pi:

from decimal import * #Sets decimal to 50 digits of precision getcontext().prec = 50 #This program uses the power series for arctan to calculate pi #arctan(x) = sum (n = 0 to infinity) (-1)^n * (x^(2n+1))/(2n+1) #So to calculate pi, compute (arctan (1)) = pi/4 = 1 - 1/3 + 1/5 - 1/7 +... quarterpi = Decimal(0) n = 0 while True: quarterpi = quarterpi + Decimal(-1)**n / (Decimal(2*n + 1)) #this line allows the code to print only every 10 lines, increase this number #to speed up the calculations and reduce the printing if (n % 10 == 0): print((quarterpi*Decimal(4))) n += 1

And here’s the chudnovsky python code:

from decimal import * #Sets decimal to 50 digits of precision getcontext().prec = 50 def factorial(n): if n<1: return 1 else: return n * factorial(n-1) def chudnovskyBig(n): #http://en.wikipedia.org/wiki/Chudnovsky_algorithm pi = Decimal(0) k = 0 while k < n: pi += (Decimal(-1)**k)*(Decimal(factorial(6*k))/((factorial(k)**3)*(factorial(3*k)))* (13591409+545140134*k)/(640320**(3*k))) k += 1 pi = pi * Decimal(10005).sqrt()/4270934400 pi = pi**(-1) return pi print ("Chudnovsky") for i in range(1,50): print ("n=",i," ", chudnovskyBig(i))

## recursiveprocess(ing) at tumblr

For future info, I’ll be posting the “art” images that I make with processing on tumblr, specifically the recursiveprocessing.tumblr.com. So follow there if interested. If not, then don’t!

Here’s a sample of the stuff going up on that site.

## Pulsar (Processing Sketch)

Just playing around with Processing. Inspired by tumblrs like Experiments in Processing and Bees and Bombs.

Code is found here.

Edit:

Pulsar 2:

Code is found here.