Hacker News new | ask | show | jobs
by camccann 5927 days ago
Perhaps it is bad form to pick nits in an amusing bit of April Foolery, but as an interesting aside, with a better technique it would take nowhere near nine years to produce manually a 70 iteration 120x120 rendering of the M-set--by avoiding explicit calculation entirely! A geometric interpretation of the path taken by each point gives a simple, easily mechanized transformation, that could be implemented with a system of gears, levers, and other basic mechanisms, plausibly reducing the time necessary to a few seconds per iteration.
2 comments

A much bigger nit that gave it away for me in the very first paragraph is that 13th century is far too early for complex numbers and Cartesian representation.
You don't need to have invented complex numbers with concepts like imaginary numbers to have invented a scheme isomorphic to complex numbers.

For example, you don't need all the concepts behind analytic trigonometry to solve problems with what amount to Sine, Cosine, etc. All you need is the concept of similar triangles, and you can build a scale model of your problem and solve it empirically. If you make your hypotenuse of length 1 in whatever base, then you'll actually be working with Sine and Cosine but not even know it.

As to Cartesian planes, if all that need be represented is a truth value, when expressed compactly in the form of a simple table, a picture should emerge, even if one has to stand back.

Speaking personally, I think the Cartesian plane is the bigger stumbling block to believability, as it requires a leap of insight to bridge the analytic and the geometric; but on the other hand, it's so well known that it might easily be taken for granted by the reader.

Yes, if if, isomorphic, if, etc. The fact is you need to invent a whole pile of stuff that was nowhere on the horizon between 1200 and 1270 to draw a Mandelbrot set. And that's plainly obvious to anyone with the most superficial knowledge of the history of maths.
Not to disagree, but I'd like to mention that you don't actually need full complex number arithmetic to draw a Mandelbrot set. If you translate the Mandelbrot update rule into pairs of numbers, you get the following recursive equations:

    x_{n+1} = x_n^2 - y_n^2 + x_0
    y_{n+1} = 2 x_n y_n + y_0
(Not 100% sure I got this right, but it's late.) The Mandelbrot set is then the set of points x_0, y_0 for which these values don't escape to infinity, or even more simply, escape the circle of radius 2 around (0, 0).
I think we're getting a little hung up on 'complex numbers' and things they might be isomorphic to. My point was that in order to come up with the Mandelbrot set in the 13th century you need bits of mathematical apparatus that were not invented till centuries later. I liked the piece, it's just that the eye-poking anachronism right off the bat sort of gave it away too early, for me.
Most people don't have a superficial knowledge of the history of maths, apart from perhaps the Greeks doing geometry and Roman numerals not having 0. Many people are surprised to find out that Arabic numerals are Arabic! (Yes yes, Hindu too, but that only drives home the point.)

  [citation needed]
Er, I mean:

  [algorithm/schematic needed]
Apologies, don't have time to do a proper job of it right now, so here's a quick summary: Complex addition is basic Cartesian vector addition in the complex plane; complex multiplication is combined polar-coordinate rotation/scaling, by adding the two angles and multiplying the magnitudes. The Mandelbrot iteration formula is Z*Z+C, so there are only three transformations: double the angle, apply the scaling factor, and move the point by a fixed offset.

For each point in the graph, fix the distance between it and the origin: that's C. Center a wheel of some sort at the origin, find the angular distance from the point to the positive real line, then rotate the wheel by that amount. The magnitude scaling is the trickiest part, since you're moving it either toward or away from the origin depending on whether it's greater or less than one, and the scaling factor is proportional to the magnitude itself; but I'm pretty sure there's some sort of multiplicative transformation that could be done with an appropriately-placed lever.

So, take the aforementioned contraption, rotate the wheel, adjust the distance, then shift the point by the original offset. Repeat 70 times, or until the distance exceeds the machine's maximum. Mark the point appropriately, and pick a new one. The accuracy would be dubious near the boundary, of course, but it beats doing arithmetic...

Maybe one of these days I'll draw up usable schematics for how it would work. Mechanical computation has a certain charm to it.