2+2 = 1? Patterns in Modular arithmetic

November 20, 2011

When someone is talking about the absolute truth of mathematics and declares that once you have defined 2 and +, then 2+2 must equal 4, there is a slightly glib response:

but 2+2 = 1…Mod 3

Despite this surprise, we actually all use modular arithmetic regularly, quite literally on a daily basis. When we consider six hours after 8am, the answer is not 14, but 2pm. Well you could argue for using a 24 hour clock, but no one would claim that 3am on a Tuesday morning is really 27:00 on Monday (well apparently some do, thanks to kuromagi on reddit for ref) In these cases we are not counting as we usually do, but counting on a circle mod 12 or 24. It is not hard to see that we could do this with other numbers. if we do decide that 2+1 is 0, and not 3 we are now working mod 3. In this case 2+2 is 1, as is 2*2. We can put together a small table:

+ 0 1 2
0 0 1 2
1 1 2 0
2 2 0 1

Showing what happens when the values for the column and row are added together. We can make the same table for multiplication:

x 0 1 2
0 0 0 0
1 0 1 2
2 0 2 1

I have to admit these table are a little boring, we can make things more interesting by replacing the numbers by colours. As we are working with modular arithmetic we know that the range of numbers we will come across, lies between 0 and the value we are using for modulus, so we can map these onto some circle of colours. So work mod 151 we get a new table for addition:

Using the same system of colours we can do the same thing for multiplication:

Which is starting to get interesting. We do not need to stop there, we can produce an image where the row number is taken to the power of the column:

This looks a little jumbled, in fact it seems to have very little structure at all. This is not very useful if our goal is to make pretty images, and on this blog that is normally the goal, but it other areas it turns out to be incredibly useful. The process of modular exponentiation is an essential part of public key cryptography, one of the technologies that allows secure communication over the internet. The jumble and lack of pattern that we can see is a sign that modular exponentiation is a good method to use to jumble things up. if there were structure that could be used to help decrypt the messages!

Returning to images, lets make a big version of the multiplication image, mod 1583 (you need to click it to get the full effect, scaling the image down blurs out a lot of structure):

Another option is to make an animation. what happens as we move the modulus value:

There is plenty to study in these images, for example, the curves that can be seen are approximately hyperbolae as they occur when x*y is some fixed value. The central star point occurs in the middle of the image, and there are further stars at 1/3, 2/3, 1/4, 3/4 etc. Can you work out why?

The appearance of hyperbolae perhaps implies that other curves might be possible. What happens if we consider x^2 + y^2? An obvious guess from this formula would be circles and we indeed get (for 151):

Playing around a little further this image comes from x^2 - y^2 +3 x y:

These images are certainly worth repeating for 1583 (again the details get blurred out, so click the images to see the full detail):

To finish let us consider something even simpler. Taking the value of a square to be \frac{x \mod y}{y} this will always give a value between 0 and 1. We can then colour again, and animate with \frac{x \mod Q y}{y} and Q going from 5 to 0:

I first came across these patterns in the December Issue of notices of the AMS, I have always been surprised how little they have been explored. This post is my attempt to do a little to correct that.


Hyperboloid lighting

November 6, 2011

The hyperboloid of one sheet is a fascinating shape that turns up in many places. It was therefore a great example to take for a test of thearender which I recently purchased. This shows off its double ruled nature:


CAMel

September 29, 2011

CAMel is a project to develop Rhino Grasshopper components for CAM (Computer Aided Manufacturing). Hence the silly name. It is very much work in progress, but if you are brave enough, here is a first release. All images and the video on this page are of a machine running GCode generated by CAMel.

Download CAMel 0.12
Download Rhino file (only needed if you want to see the example setup).

At present the components are just clusters with scripted components written within Grasshopper. The next major step will be to convert this into a proper grasshopper plug-in. This release has a grasshopper component with some documentation (there is a little more inside the clusters). All the code is CC-BY-SA licensed, and of course it should be noted that this is very much “use at your own risk”! My belief is that Grasshopper provides a natural environment to experiment with creating your own toolpaths. The purpose of CAMel is to make this process as easy as possible by giving the tools to convert simple toolpath ideas into usable paths and then exporting the GCode that will drive a machine.

The main components are as follows:

  • GCode Writer: Converts lists of points, vectors and feed rates into GCode for the machine.
  • GCode Checker: Reads GCode and checks and optimises it. For example a 5-axis machine can usually obtain any tool angle in two different ways. This selects the better angle. It will also give warnings of undesirable behavior in the GCode.
  • Surfacing: Creates a toolpath to cut an arbitrary surface (very rough version, designed to test others)
  • Swarf cutting: Creates toolpath from information about the movement of the tip of the tool and the point in which the tool enters the surface. For a 5-axis machine these paths can be quite different.

The code is currently set up for a single machine, I am happy to try to help adapt it to other machines (other commitments allowing) so get in touch if you are interested.

These components and code were developed with Santiago R Perez 21st Century Chair of Integrated Practice at the Fay Jones School of Architecture, University of Arkansas. I work in the Mathematics Department at the same university.

Earlier experiments with swarf cutting.


Hexayurt dome details and models

August 7, 2011

People are now starting to build my tri-dome and quad-dome versions of the hexayurt, so it is time to give some of the technical details. To start, however, here is an application of the intermediate value theorem!

When I started working on the details for the tri-dome I realised I had made a bad assumption (thinking that the form was geometrically pure). This means that some of the details in my original write up were wrong. All a little embarrassing. Ironically, I might have missed a form that does actually work, had I not made the bad assumption. The shape, like the hexayurt, starts with a hexagonal based pyramid. In a traditional hexayurt this lies on top of a hexagon of vertical walls. Instead of this we attach a square to three of the edges and the classic hexayurt triangle (isocoles triangle with base and height the same length) to the other three. We can look at what happens as the pyramid is moved away from the ground, while the edges of the shapes rest on it:

This does not give a great building; there are holes. The holes are triangles and two of the sides have a fixed length. The final edge changes length, starting long, and ending short. We know we can fill the holes with classic hexayurt triangles. Two of the edges are the right length we just need the third. The length changes smoothly as we raise the roof, and starts shorter and ends longer than we want. Here we can apply the intermediate value theorem, so the correct length must be passed. As a mathematician I would stop there, the system works; however people are building the things…

So to calculate the correct angle for the square sides of the model we can look vertically down, calling the angle of the square face θ, (and assuming that the boards we are using are 8′ by 4′) needing as the classic maths problem asks to “find x”.In this case

x = 4 \sqrt{4 \cos(\theta)^2+1+2\sqrt{3}\cos(\theta)},

we want x = 4\sqrt{5} so:

4\sqrt{5} = 4 \sqrt{4 \cos(\theta)^2+1+2\sqrt{3}\cos(\theta)}

5 = 4 \cos(\theta)^2+1+2\sqrt{3}\cos(\theta)

0 = 2 \cos(\theta)^2 + \sqrt{3}\cos(\theta) - 2

Solving the quadratic:

\cos(\theta) = \frac{-\sqrt{3} \pm \sqrt{19}}{4}

Which gives an angle of about 49°, and the height of the roof (assuming 4′x8′ panels) is 8 \sin(\theta), just over 6′ at the edge and 10′ in the centre. We can use these, and useful facts about general tetrahedra to calculate all the angles between faces by using the lengths of their edges. If you want to follow the details yourself, you need to add vectors to get some of the edge lengths, then use the Cayley-Menger determinant to find the volume of the tetrahedron, and then the generalised Sine rule to (halfway down this page) to give the angle.

Technical details for TriDome: angles to nearest half degree, lengths to nearest inch (assuming 4'x8' panels). On the left the angles between faces and point heights, on the right lengths and angles of the base.

Technical details for QuadDome: angles to nearest half degree, lengths to nearest inch (assuming 4'x8' panels). On the left the angles between faces and point heights, on the right lengths and angles of the base.

Finally here are the hexayurt models (rhino 3dm and vrml formats) of the hexayurt, H13, TriDome, QuadDome, plus a couple of others, including a very large one.


Follow

Get every new post delivered to your Inbox.

Join 203 other followers