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.


Why not knot wire?

May 23, 2011

I have been thinking quite a bit recently about ideas of knotting and weaving. There will probably be another post on the theme soon. As a mathematician it brought me straight back to Knot theory, I love looking at the strange images that appear on the blackboards in the lectures and offices of topolgists, many of which contain knots. This video lecture from Elvis Zap is a classic example (even if you cannot follow, just sit back and enjoy the drawing!). Not to forget the beautiful uses knotted designs have been put to outside of mathematics.

At some point during this I needed something made out of metal, and decided to bend some wire into a trefoil. It was satisfying, so I though I would look online to see if I could find collections of physically made knots. These were surprsingly hard to find. There were plenty of examples to be found (even the Museum of Mathematics‘s famous knotted bagel), but I could not find any systematic collections. So I decided to make my own, using this knot zoo for reference.  Here are the knots that can be drawn with seven crossings or less, using Conway’s tangle notation:

It was great fun making the knots and I encourage anyone who studies them, even idly, to have a go. I felt the knots themselves come alive in my head as I made them. I started to think how the knots could be put together out of sections of twists, further study of this lead me to tangles and Conway’s notation. You might notice that this came late as the written labels on the knots are the more commonly used Alexander–Briggs notation. That is a lot less satisfying as after the number of crossings the numbers to not refer to the properties of the knots.

In addition making sure that the wire holds naturally in shape without touching itself is great for 3d intuition. One thing that struck me as I started to bend the wire was how 2 dimensional most knot images are. The crossing number is a classic example of this as it is a 2d not a 3d property. There are, of course, good reasons for this both in design and exposition, but it was interesting feeling how the knots changed as you allow to move more freely. Of course this had some issues when I came to present the knots here, of course in 2d (I hope I managed to get all the pictures so spare crossings are easy to remove!). A video might work slightly better:


Follow

Get every new post delivered to your Inbox.

Join 203 other followers