The New Turing Omnibus Chapter 9 Mathematical Research

Paul Mucur edited this page Jan 3, 2016 · 6 revisions
Clone this wiki locally

Preamble

We opened the meeting by welcoming new members and were lead by Matthew Valentine-House.

The Chapter

We began by agreeing on the "big picture" of the chapter: that computers enabled exploration of mathematical concepts, e.g. through automation and visualisation which were previously impractical. The example used in the chapter to demonstrate this is the Mandelbrot set.

We began by taking the central algorithm given in the chapter, z_n+1 = z_n^2 + c, and understanding it using real numbers.

Matt working through the formula z_n+1 = z_n^2 + c using real numbers.

We then introduced the concept of complex numbers and the imaginary number i, touching on its history.

In order to understand the algorithm, we discussed arithmetic with complex numbers, including an example of multiplication:

And more generally:

Tom then showed how addition and multiplication can be modelled using a number line:

Tom explaining addition and multiplication in terms of a number line.

Then showed how this would work with complex numbers.

With this, we understood the algorithm and moved onto implementations so we could actually visualise the Mandelbrot set (and associated sets) ourselves.

Show & Tell

Murray blew us away by implementing a Mandelbrot set visualisation using Jack, the programming language we implemented while reading "The Elements of Computing Systems". He compiled this down using our toolchain and ran it using Leo's hack-js so that we could marvel as we watched a browser struggle to render a visualisation.

Murray also demonstrated an implementation in Ruby which produced a text-based visualisation using only ASCII characters in the Terminal:

Tom then demonstrated his interactive visualisation of the orbits of certain numbers in the algorithm, first visualising how numbers bounced around on the whiteboard:

And then showing us a JavaScript implementation of the same (hit space to plot random points or click and drag around the canvas).

As well as this, Tom had implemented a more traditional visualisation of the Mandelbrot set that allowed a fix amount of zooming on click:

Tom demonstrating his visualisation of the Mandelbrot set.

Finally, Tom demonstrated his visualisation of Julia sets (mouse over for different sets):

Chris showed his impressively fast implementation in JavaScript that highlights the effect of the iterations on the visualisation:

Matthew wrapped up the Show & Tell by demonstrating his Ruby implementation that produced PNG images of the set:

Retrospective

  • The opportunity for practical exploration in this chapter was generally lauded (particularly after so many theory-heavy topics);
  • We discussed whether we intend to read every chapter of the book and, if we do not, how we might bring it to an end;
  • We decided to clear out the Call for Proposals after the meeting to restore a blank slate and free us of a backlog of topics (that might be holding us back).

Thanks

Thanks to Leo and Geckoboard for hosting the meeting, to Matthew Valentine-House for shepherding the meeting and to Murray, Chris, Tom and Matthew for demonstrating their various implementations.