-
Notifications
You must be signed in to change notification settings - Fork 15
The New Turing Omnibus Chapter 9 Mathematical Research
We opened the meeting by welcoming new members and were lead by Matthew Valentine-House.
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.
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:
- 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 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.
- Home
- Documentation
- Choosing a Topic
- Shows & Tells
- Miscellaneous
- Opt Art
- Reinforcement Learning: An Introduction
- 10 Technical Papers Every Programmer Should Read (At Least Twice)
- 7 More Languages in 7 Weeks
- Lua, Day 1: The Call to Adventure
- Lua, Day 2: Tables All the Way Down
- Lua, Day 3
- Factor, Day 1: Stack On, Stack Off
- Factor, Day 2: Painting the Fence
- Factor, Day 3: Balancing on a Boat
- Elm, Day 1: Handling the Basics
- Elm, Day 2: The Elm Architecture
- Elm, Day 3: The Elm Architecture
- Elixir, Day 1: Laying a Great Foundation
- Elixir, Day 2: Controlling Mutations
- Elixir, Day 3: Spawning and Respawning
- Julia, Day 1: Resistance Is Futile
- Julia, Day 2: Getting Assimilated
- Julia, Day 3: Become One With Julia
- Minikanren, Days 1-3
- Minikanren, Einstein's Puzzle
- Idris Days 1-2
- Types and Programming Languages
- Chapter 1: Introduction
- Chapter 2: Mathematical Preliminaries
- Chapter 3: Untyped Arithmetic Expressions
- Chapter 4: An ML Implementation of Arithmetic Expressions
- Chapter 5: The Untyped Lambda-Calculus
- Chapters 6 & 7: De Bruijn Indices and an ML Implementation of the Lambda-Calculus
- Chapter 8: Typed Arithmetic Expressions
- Chapter 9: The Simply-Typed Lambda Calculus
- Chapter 10: An ML Implementation of Simple Types
- Chapter 11: Simple Extensions
- Chapter 11 Redux: Simple Extensions
- Chapter 13: References
- Chapter 14: Exceptions
- Chapter 15: Subtyping – Part 1
- Chapter 15: Subtyping – Part 2
- Chapter 16: The Metatheory of Subtyping
- Chapter 16: Implementation
- Chapter 18: Case Study: Imperative Objects
- Chapter 19: Case Study: Featherweight Java
- The New Turing Omnibus
- Errata
- Chapter 11: Search Trees
- Chapter 8: Random Numbers
- Chapter 35: Sequential Sorting
- Chapter 58: Predicate Calculus
- Chapter 27: Perceptrons
- Chapter 9: Mathematical Research
- Chapter 16: Genetic Algorithms
- Chapter 37: Public Key Cryptography
- Chapter 6: Game Trees
- Chapter 5: Gödel's Theorem
- Chapter 34: Satisfiability (also featuring: Sentient)
- Chapter 44: Cellular Automata
- Chapter 47: Storing Images
- Chapter 12: Error-Correcting Codes
- Chapter 32: The Fast Fourier Transform
- Chapter 36: Neural Networks That Learn
- Chapter 41: NP-Completeness
- Chapter 55: Iteration and Recursion
- Chapter 19: Computer Vision
- Chapter 61: Searching Strings
- Chapter 66: Church's Thesis
- Chapter 52: Text Compression
- Chapter 22: Minimum spanning tree
- Chapter 64: Logic Programming
- Chapter 60: Computer Viruses
- Show & Tell
- Elements of Computing Systems
- Archived pages