Thrice is Slice as Twice

What happens when you divide the space between 0 and 1 into finer and finer slices using the fractions 1/2, 1/3, 2/3, 1/4, 3/4, 1/5, 2/5, 3/5…? Some interesting things. In the images below, the white line on the left with a white dot below it represents 0 and the white line on the right with a white dot below it represents 1. The single line in the middle of the first image represents 1/2 between 0 and 1, then the lines in the second image represent 1/4, 1/3, 1/2, 2/3, 3/4 between 0 and 1. And so on:

1/2 between 0 and 1 (click for larger)


1/4, 1/3, 1/2, 2/3, 3/4 between 0 and 1


a/b <= 7/8 between 0 and 1


a/b <= 15/16 between 0 and 1


a/b <= 31/32 between 0 and 1


a/b <= 63/64 between 0 and 1


a/b <= 127/128 between 0 and 1


a/b <= 255/256 between 0 and 1


Animation of a/b <= 255/256 between 0 and 1 (created at ezGif)


The lines are dividing space into finer and finer slices, but the lines aren’t distributed evenly. Some gaps close quickly, some slowly. Here’s some color for the slicing (when the colored circles below the lines are solid, they mark a/b <= 7/8; when they're hollow, they represent 1/9 <= a/b <= 11/12). The lines are now adjusted in height to the fraction a/b they represent, so they create a wedge rising from left to right:

1/2 between 0 and 1


a/b <= 1/3 between 0 and 1


a/b <= 2/3 between 0 and 1


a/b <= 1/4 between 0 and 1


a/b <= 3/4 between 0 and 1


a/b <= 4/5 between 0 and 1


a/b <= 5/6 between 0 and 1


a/b <= 6/7 between 0 and 1

[…]

↓

[…]

a/b <= 11/12 between 0 and 1


a/b <= 19/20 between 0 and 1


a/b <= 29/30 between 0 and 1


a/b <= 39/40 between 0 and 1


a/b <= 49/50 between 0 and 1


a/b <= 99/100 between 0 and 1


Animation of a/b <= 99/100 between 0 and 1 (created at ezGif)


Here’s how the colored lines representing a/b <= 11/12 get swamped as b gets larger and larger:

a/b <= 11/12 between 0 and 1


a/b <= 15/16 between 0 and 1


a/b <= 31/32 between 0 and 1


a/b <= 63/64 between 0 and 1


a/b <= 127/128 between 0 and 1


a/b <= 199/200 between 0 and 1


a/b <= 255/256 between 0 and 1


Animation of a/b <= 255/256 between 0 and 1 (created at ezGif)


Post-Performative Post-Scriptum

In fact, thrice isn’t slice as twice, because the line marking the slice of 1/2 gets swamped after the lines marking 1/3 and 2/3, which get swamped after 1/4 and 3/4, and so on.

I Hike Gryke

Here are the simplified fractions in order of increasing denominator and numerator:

1/2, 1/3, 2/3, 1/4, 3/4, 1/5, 2/5, 3/5, 4/5, 1/6, 5/6, 1/7, 2/7, 3/7, 4/7, 5/7, 6/7, 1/8, 3/8, 5/8, 7/8, 1/9, 2/9, 4/9, 5/9, 7/9, 8/9, 1/10, 3/10, 7/10, 9/10, 1/11, 2/11, 3/11, 4/11, 5/11, 6/11, 7/11, 8/11, 9/11, 10/11, 1/12, 5/12, 7/12, 11/12, 1/13, 2/13, 3/13, 4/13, 5/13, 6/13, 7/13, 8/13, 9/13, 10/13, 11/13, 12/13, …

You get 1/4 and 5/12, but no 2/4 or 3/12 and so on, because the fractions are simplified and 2/4 = 1/2 and 3/12 = 1/4. Now suppose you map those simplified fractions on a graph of x = y = 1/2, 1/3, 2/3, 1/4, 3/4, 1/5, … The graph is obviously just a straight line at 45°:

Graph of x = y = 1/2, 1/3, 2/3, 1/4, 3/4, 1/5, …


But suppose you adjust some of the simplified fractions for y, so that the list looks like this (adjusted fractions appear in red):

1/2, 1/3, 2/3 → 1/3, 1/4, 3/4 → 1/4, 1/5, 2/5, 3/5 → 2/5, 4/5 → 1/5, 1/6, 5/6 → 1/6, 1/7, 2/7 → 3/7, 3/7 → 2/7, 4/7 → 2/7, 5/7 → 3/7, 6/7 → 1/7, 1/8, 3/8, 5/8 → 3/8, 7/8 → 1/8, 1/9, 2/9 → 4/9, 4/9 → 2/9, 5/9 → 2/9, 7/9 → 4/9, 8/9 → 1/9, 1/10, 3/10, 7/10 → 3/10, 9/10 → 1/10, 1/11, 2/11 → 5/11, 3/11 → 4/11, 4/11 → 3/11, 5/11 → 2/11, 6/11 → 2/11, 7/11 → 3/11, 8/11 → 4/11, 9/11 → 5/11, 10/11 → 1/11, 1/12, 5/12, 7/12 → 5/12, 11/12 → 1/12, 1/13, 2/13 → 6/13, 3/13 → 4/13, 4/13 → 3/13, …

What does the graph for straight x and adjusted y look like? Much more interesting:

Graph of x = 1/2, 1/3, 2/3, …, y = contfrac_rev(1/2), contfrac_rev(1/3), contfrac_rev(2/3), …


That graph is what you could call a fractional fractal, because it uses fraction to create a fractal where parts resemble the whole and parts of the parts resemble the whole, down and down for ever (as I’ll show). I call it a limestone fractal or gryke fractal, because it looks like the fissured limestone pavements in the Yorkshire Dales, where the fissures are called grykes:

Fissured limestone pavement, Yorkshire Dales (Wikipedia)


A closer look at a limestone pavement (Dales Rocks)


As you plot the fractions for x and adjust the fractions for y, the gryke graph grows like this:

The gryke graph grows (animated at ezGif)


But how were the fractions for y adjusted to create the gryke fractal? With a very simple function called contfrac_rev(a/b). The function takes what’s called the continued fraction of a/b, then reverses it to derive a new fraction (sometimes it’s new, at least). For example, here’s the continued fraction of 13/17 and how you use the continued fraction to reconstruct 13/17:

continued_fraction(13/17) = [1,3,4] = cf(13/17)

fr = 0
1/4 = 1/(fr + 4) = 1/(0 + 4)
4/13 = 1/(fr + 3) = 1/(1/4 + 3)
13/17 = 1/(fr + 1) = 1/(4/13 + 1)

13/17 = 0.764705882352941176470588…

The continued fraction, [1,3,4], is read from right to left when the original fraction is being reconstructed. So reversing the continued fraction means reading it from left to right, like this:

fr = 0
1 = 1/(fr + 1) = 1/(0 + 1)
1/4 = 1/(fr + 3) = 1/(1 + 3)
4/17 = 1/(fr + 4) = 1/(1/4 + 4)

4/17 = 0.235294117647058823529411…

(Technical note: The reversed fraction of cf_rev(a/b) is always < 1/2, except for cf_rev(1/2) = 1/2. That's why the gryke graph above actually represents 0 to 1 on the x-axis and 0 to 0.5 on the y-axis.)

Now let's look at how the fractal in the graph can be magnified for ever and always yield new versions of the original graph. You can call it hiking the gryke, because you hike or increase the resolution of the graph to reveal the finer details. The first step is to mark the gryke site to be hiked. Here's the full graph, with a green square showing the section to be hiked or magnified or zoomed:

Gryke to hike

↓

Gryke hiked


You can combine the zoom-to-be and the zoomed section in a single image, where the full fractal is on the left and the zoomed section on the right:

Gryke-to-hike and Gryke-hiked (click for larger)


Here are more hikes of the gryke, or zooms of the full fractal:

Zoom #2


Zoom #3


Zoom #4


Zoom #5


Zoom #5+1


Zoom #5+2


Zoom #6


And here’s an animated gryke-hike or zoom into a single section of the fractal:

Hiking the Gryke (animated at ezGif)


Previously Pre-Posted…

• I Like Gryke — a first look at the gryke fractal
• Worms in Terms of Perms — permutating the gryke fractal

When Pyramids Decay

What’s the point of writing 2/10? It’s equal to 1/5, just as 4/10 = 2/5, 6/10 = 3/5 and 8/10 = 4/5. But there are times when the full-fat form can be mathematically — and æsthetically — appropriate. For example, you get a nice series of triangular waves — and an optical illusion — when you use all the rational fractions to create a graph representing the size of the fraction, a/b, as 0 < a/b < 1. If the even denominators are in white and the odd denominators in red, the graph looks like this:

Graph of 1/2, 1/3, 2/3, 1/4, 2/4, 3/4, 1/5, 2/5, …
(click for larger)


The optical illusion is that the lines of waves appear to sink from left to right. Otherwise the graph has no complexity. But suppose you take the continued fraction of a/b, reverse it, and calculate a new fraction from the reversal. If you use the fractions in simplest form, you get this graph:

Graph of a2/b2 = reversed(contfrac(a1/b1)) for 1/2, 1/3, 2/3, 1/4, 3/4, …


But if you use all the rational fractions, simplified and unsimplified, you get a graph with pyramids and ships, like this:

Graph of a2/b2 = reversed(contfrac(a1/b1)) for 1/2, 1/3, 2/3, 1/4, 2/4, 3/4, …


The full pyramids are few, alas. But the other ones decay in interesting ways.

Takes on Flakes

The Koch Snowflake is a fractal named after the Swedish mathematician Helge von Koch (1870-1924). It’s simple to make, attractive to see:

A Koch snowflake


And here’s how you making it, starting with an equilateral triangle:

Make the Flake #0


Make the Flake #1: Erect a 1/9-sized equilateral triangle on middle of each side


Make the Flake #2: Then a 1/81-sized equilateral triangle on the middle of each straight line created by #1


Make the Flake #3: And so on.


Make the Flake #4


Make the Flake #5


Make the Flake #6


Make the Flake #0-6 (animated at ezGif)


In the end, the Koch snowflake has an infinitely long perimeter around a finite area (see discussion at Wikipedia). The Koch anti-snowflake or un-flake also combines an infinitely long perimeter and finite area:

Koch un-Flake


You make the un-flake like this:

Make the Un-Flake #0


Make the Un-Flake #1


Make the Un-Flake #2


Make the Un-Flake #3


Make the Un-Flake #4


Make the Un-Flake #5


Make the Un-Flake #6


Make the Un-Flake #0-6 (animated at ezGif)


And you can combine the Koch snowflake and the Koch anti-snowflake like this:

Make the Flake+Un-Flake #0


Make the Flake+Un-Flake #1


Make the Flake+Un-Flake #2


Make the Flake+Un-Flake #3


Make the Flake+Un-Flake #4


Make the Flake+Un-Flake #5


Make the Flake+Un-Flake #6


Make the Flake+Un-Flake #0-6 (animated at ezGif)


Here’s another variation, what you might call the Koch-Cross flake:

Koch-Cross Flake #0


Koch-Cross Flake #1


Koch-Cross Flake #2


Koch-Cross Flake #3


Koch-Cross Flake #4


Koch-Cross Flake #5


Koch-Cross Flake #6


Koch-Cross Flake #0-6 (animated at ezGif)


And the Koch-Cross un-flake:

Koch-Cross un-Flake


And combined Koch-Cross Flake+un-Flake:

Combined Koch-Cross Flake+un-Flake


Here’s an animation of the combined Koch-Cross Flake+un-Flake:

Combined Koch-Cross Flake+un-Flake (animated at ezGif)


And the combined Koch-Cross Flake+un-Flake created on the sides of a square:

Combined Koch-Cross Flake+un-Flake on square


And a final variant of the infinitely many on offer:

Variant Koch snowflake stage #1


Variant Koch snowflake stage #6


Un-Flake of variant Koch snowflake


Combined variant Koch Flake+un-Flake


Back in Frac

Here’s a graph representing the fractional parts of √n for n = 1 to 1832, with frac(√1) at the top left and frac(√1832) at the bottom right:

graph for frac(√n), n = 1..1832


There’s an odd optical illusion making it seem as though each set of triangular waves ends lower on the right than it starts on the left. Otherwise, it’s a dull graph, because the fractional part of √n simply rises towards 0.9999…, then falls to 0 like this:

0 = frac(1) = frac(√1)
0.414213562373… = frac(1.414213562373…) = frac(√2)
0.732050807568… = frac(1.732050807568…) = frac(√3)
0 = frac(2) = frac(√4)
0.236067977499… = frac(2.236067977499…) = frac(√5)
0.449489742783… = frac(2.449489742783…) = frac(√6)
0.645751311064… = frac(2.645751311064…) = frac(√7)
0.828427124746… = frac(2.828427124746…) = frac(√8)
0 = frac(3) = frac(√9)
0.162277660168… = frac(3.162277660168…) = frac(√10)
0.316624790355… = frac(3.316624790355…) = frac(√11)
0.464101615137… = frac(3.464101615137…) = frac(√12)
0.605551275463… = frac(3.605551275463…) = frac(√13)
0.741657386773… = frac(3.741657386773…) = frac(√14)
0.872983346207… = frac(3.872983346207…) = frac(√15)
0 = frac(4) = frac(√16)
0.123105625617… = frac(4.123105625617…) = frac(√17)
0.242640687119… = frac(4.242640687119…) = frac(√18)
0.358898943540… = frac(4.358898943540…) = frac(√19)
0.472135954999… = frac(4.472135954999…) = frac(√20)

But what about the fractional parts of the sum of √n? What does that graph look like? Much more interesting:

frac(sum(√n)), n = 1..1832


Here are the fractional parts for the sum of √n:

0 = frac(1) = frac(sum(√1))
0.414213562373… = frac(02.414213562373…) = frac(sum(√1..√2))
0.146264369941… = frac(04.146264369941…) = frac(sum(√1..√3))
0.146264369941… = frac(06.146264369941…) = frac(sum(√1..√4))
0.382332347441… = frac(08.382332347441…) = frac(sum(√1..√5))
0.831822090224… = frac(10.831822090224…) = frac(sum(√1..√6))
0.477573401289… = frac(13.477573401289…) = frac(sum(√1..√7))
0.306000526035… = frac(16.306000526035…) = frac(sum(√1..√8))
0.306000526035… = frac(19.306000526035…) = frac(sum(√1..√9))
0.468278186204… = frac(22.468278186204…) = frac(sum(√1..√10))
0.784902976559… = frac(25.784902976559…) = frac(sum(√1..√11))
0.249004591697… = frac(29.249004591697…) = frac(sum(√1..√12))
0.854555867161… = frac(32.854555867161…) = frac(sum(√1..√13))
0.596213253935… = frac(36.596213253935…) = frac(sum(√1..√14))
0.469196600142… = frac(40.469196600142…) = frac(sum(√1..√15))
0.469196600142… = frac(44.469196600142…) = frac(sum(√1..√16))
0.592302225760… = frac(48.592302225760…) = frac(sum(√1..√17))
0.834942912879… = frac(52.834942912879…) = frac(sum(√1..√18))
0.193841856420… = frac(57.193841856420…) = frac(sum(√1..√19))
0.665977811419… = frac(61.665977811419…) = frac(sum(√1..√20))

As with square roots, so with cube roots. The graph of frac(∛n) looks like this:

frac(∛n), n = 1..1832


It’s dull again, because the fractional part of ∛n is simply rising towards 0.9999…, then falling to 0. Just more slowly. But the graph of frac(sum(∛n)) looks like this:

frac(sum(∛n))


But roots don’t end with √n and ∛n, of course. Those roots represent n^(1/2) and n^(1/3), respectively, because when x = n^(a/b), n = x^(b/a). What about the graph of sum(n^(4/5)), where n = (n^4/5)^(5/4)? The graph looks like this:

frac(sum(n^(4/5)))


One of the curves in that graph reminds of the cephalopodic tentacles in Jean Delville’s marvellous painting Les Trésors de Sathan (sic) (Treasures of Satan) (1895), which was used on the cover of Morbid Angel’s Blessed Are the Sick (1991). The curve is longer in frac(sum(n^(84/97))):

frac(sum(n^(84/97))) (curve in red)


Les Trésors de Sathan (1895) by Jean Delville as the cover of Blessed Are the Sick (1991)


frac(sum(n^(4/5))) (curve in red)


Those Delvillean curves are examples of how, as the a/b of n^(a/b) climbs from 1/b to (b-1)/b, the graph of frac(sum(n^(a/b))) changes in interesting ways. Here are the graphs for n^(1..10/11):

frac(sum(n^(1/11)))


frac(sum(n^(2/11)))


frac(sum(n^(3/11)))


frac(sum(n^(4/11)))


frac(sum(n^(5/11)))


frac(sum(n^(6/11)))


frac(sum(n^(7/11)))


frac(sum(n^(8/11)))


frac(sum(n^(9/11)))


frac(sum(n^(10/11)))


Here’s an animation of those graphs:

animation of frac(sum(n^(1/11..10/11))) (created at ezGif)


And here are graphs for n^(72/83) and n^(82/83), with a Delvillean curve in the graph of 72/83 and domes in the graph of 82/83:

frac(sum(n^(72/83)))


frac(sum(n^(82/83)))


As the denominators get bigger, so do the domes:

frac(sum(n^(1000/1009)))


frac(sum(n^(1001/1009)))


frac(sum(n^(1002/1009)))


frac(sum(n^(1003/1009)))


frac(sum(n^(1004/1009)))


frac(sum(n^(1005/1009)))


frac(sum(n^(1006/1009)))


frac(sum(n^(1007/1009)))


frac(sum(n^(1008/1009)))


Here’s an animation of those graphs:

animation of frac(sum(n^(1000/1009..1008/1009))) (created at ezGif)


Previously Pre-Posted…

• Think Frinc — an earlier look at fraction-patterns
• Altars of Mathness — and similar patterns from integer-digits


Elsewhere Other-Accessible…

• Jean Delville at Wikipedia
• Blessed Are the Sick at BandCamp

Fungible Fractals

Thinking it over, I’ve decided that trircle is a much better name than ciangle:

A Sierpiński triangle

↓

A Sierpiński trircle, or triangle converted into a circle


A trircle is a triangle converted into a circle; a ciangle is a circle converted into a triangle. Or another regular polygon. The trircle reminded me that circularized fractals are fungible, because the Sierpiński triangle can be converted into another regular polygon like a square or pentagon or hexagon. You can go viâ the trircle, but you don’t have to. The point is that the Sierpiński triangle has a center and points lying at some distance and some angle 0° through 360°, so you can easily adjust the points to fit inside any other regular polygon:

A Sierpiński triangle again

↓

A Sierpiński trare, or triangle converted into square

↓

A Sierpiński trentagon

↓

A Sierpiński trexagon

↓

A Sierpiński treptagon

↓

A Sierpiński troctogon


Here’s an animation of the conversions:

Sierpiński triangle → square, pentagon, hexagon, heptagon, octagon (animated at ezGif)


A Sierpiński carpet, with points lying at 0° through 360° inside a square, is similarly fungible:

A Sierpiński carpet

↓

A Sierpiński carpet converted into a circle

↓

A Sierpiński carpet converted into a triangle

↓

A Sierpiński carpet again

↓

A Sierpiński carpet converted into a pentagon

↓

↓

↓


And an animation of the carpet conversions:

Sierpiński carpet → triangle, pentagon, hexagon, heptagon, octagon (animated at ezGif)


Finally, and fungibly, the fractal that I call the centered Sierpiński triangle:

A centered Sierpiński triangle

↓

A centered Sierpiński trircle, or triangle converted into a circle

↓

↓

↓

↓

↓


And the final animation:

Centered Sierpiński triangle → square, pentagon, hexagon, heptagon, octagon (animated at ezGif)


Flowly We Rote

As the old mathematical joke goes: A topologist is someone who can’t tell the difference between a coffee-cup and a donut. That’s because topology is, crudely speaking, the branch of geometry that studies shapes when the distance and angle between one part and another doesn’t matter. For example, how can (or can’t) shapes flow smoothly into each other, without being cut or torn or pierced? The shape of a perfectly plastic substance can flow smoothly from that of a coffee-cup into that of a donut. And vice versa:

Topologically speaking, a coffee-cup is the same as a donut (Wikipedia)


That’s topology in three dimensions. I came across some unexpected topology in two dimensions when I was looking at transformations of a triangle — the Sierpiński triangle, a fractal named after the Polish mathematician Wacław Sierpiński (1882-1969):

Sierpiński triangle


I wondered what happened when you rotate the points inside a Sierpiński triangle while the triangular boundary remains fixed. That is, each point stays at the same position in the width between the center and the boundary as the whole interior flows around the center of the triangle:

Points inside a Sierpiński triangle rotated by 1°


Points inside a Sierpiński triangle rotated by 2°


Points inside a Sierpiński triangle rotated by 3°


Points rotated by 4°


Points rotated by 5°


Points rotated by 10°


Points rotated by 20°


Points rotated by 30°


Points rotated by 40°


Points rotated by 50°


Points rotated by 60°


Points rotated by 70°


Points rotated by 80°


Points rotated by 90°


WARNING! If you’re sensitive to flickering images, please note that there are flickering animated gifs below


Here’s the flowing rotation from 0° to 90° animated in a gif:

Interior points of Sierpiński triangle flowing 0° → 90° around center (animated at ezGif)


And here’s the whole rotating flow from 0° to 120° (which maps the points back onto themselves):

Interior points of Sierpiński triangle flowing continuously around center (slow animation)


Interior points flowing continuously around the center (faster animation)


As you can see, the appearance of the Sierpiński triangle changes notably as the points rotate: the rotations aren’t rotationally symmetrical (in the standard sense). Sometimes a rotation looks like a stumpy triskelion, a three-legged shape like the flag of the Isle of Man:

Triskelion on the Manx flag (Wikipedia)


Interior points of a Sierpiński triangle rotated by 30°


But topologically speaking, each rotated triangle is the same (just as, topologically speaking, a coffee-cup is the same as a donut). You can see how they’re topologically the same by imagining that the triangle is stretched into a circle, like this:

Sierpiński triangle

↓

Sierpiński triangle stretched into circle


When you circularize the rotated triangles, all the circularized triangles are rotationally symmetrical:

Points rotated by 30°

↓

Circle from triangle rotated by 30°


Points rotated by 60°

↓

Circle from triangle rotated by 60°


Points rotated by 90°

↓

Circle from triangle rotated by 90°


Here are two animated gifs of the circularized triangles rotating:

Circularized Sierpiński triangle flowing around center (slow animation at ezGif)


Circularized Sierpiński triangle flowing around center (faster animation)


Here’s what I call the centered Sierpiński triangle turned into a circle:

Centered Sierpiński triangle


↓

Circle from centered Sierpiński triangle


And finally, the circularized centered Sierpiński triangle flowly rotating at two speeds:

Circularized centered Sierpiński triangle flowing around center (slow animation at ezGif)


Circularized centered Sierpiński triangle flowing around center (faster animation)


Tie-Phi, Cy-Phi

More and more slowly. That’s how this function increases:

x = x + 1/x

x = 1
1 + 1/1 = 2
2 + 1/2 = 2_1/2
2_1/2 + 1/2_1/2 = 2_9/10
2_9/10 + 1/2_9/10 = 3_71/290
3_71/290 + 1/3_71/290 = 3_150911/272890 = 3.5530103704…
3.5530103704… + 1/3.5530103704… = 3.8344618428…
3.8344618428… + 1/3.8344618428… = 4.0952546322…
4.0952546322… + 1/4.0952546322… = 4.33943969272…
4.3394396927… + 1/4.3394396927… = 4.56988419035…
4.5698841903… + 1/4.5698841903… = 4.78870811637…
4.7887081163… + 1/4.7887081163… = 4.99753270449…
4.9975327044… + 1/4.9975327044… = 5.19763144503…
[…]

But you can tie the function down, as it were, by changing it to this:

x = 1 + 1/x

x = 1
1 + 1/1 = 2
1 + 1/2 = 1_1/2 = 1.5
1 + 1/1_1/2 = 1_2/3 = 1.66666…
1 + 1/1_2/3 = 1_3/5 = 1.6
1 + 1/1_3/5 = 1_5/8 = 1.625
1 + 1/1_5/8 = 1_8/13 = 1.615384615384615384…
1 + 1/1_8/13 = 1_13/21 = 1.619047619047619047619047619…
1 + 1/1_13/21 = 1_21/34 = 1.617647058823529411764705882…
1 + 1/1_21/34 = 1_34/55 = 1.6181818…
1 + 1/1_34/55 = 1_55/89 = 1.617977528089887640449438202…
1 + 1/1_55/89 = 1_89/144 = 1.6180555…
1 + 1/1_89/144 = 1_144/233 = 1.618025751072961373390557940…
1 + 1/1_144/233 = 1_233/377 = 1.618037135278514588859416446…
1 + 1/1_233/377 = 1_377/610 = 1.618032786885245901639344262…
1 + 1/1_377/610 = 1_610/987 = 1.618034447821681864235055724…
1 + 1/1_610/987 = 1_987/1597 = 1.618033813400125234815278648…
1 + 1/1_987/1597 = 1_1597/2584 = 1.618034055727554179566563468…
1 + 1/1_1597/2584 = 1_2584/4181 = 1.618033963166706529538387946…
1 + 1/1_2584/4181 = 1_4181/6765 = 1.618033998521803399852180340…
1 + 1/1_4181/6765 = 1_6765/10946 = 1.618033985017357938973140873…
[…]

You could call the function “x = 1 + 1/x” a tie-phi, because it generates the golden ratio, a fascinating mathematical constant also known as phi or φ = 1.6180339887498948482… Note how the denominator (the lower part) of each fraction above becomes the numerator (the upper part) of the next fraction. The function is reproducing the Fibonacci sequence, which starts with “1, 1” and proceeds by adding the two previous numbers:

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597…

Dividing each number by the previous number yields a better and better approximation of φ (but never reaches the exact value of φ, which is an irrational number, that is, it cannot be expressed as a ratio of two whole numbers). And what about the function x = 1 – 1/x? If you remember that subtracting a negative number is the same as adding a positive number, you can work it out like this:

x = 1 – 1/x

x = 2

1 – 1/2 = 1/2 = 0.5
1 – 1/1/2 = -1
1 – 1/-1 = 2
1 – 1/2 = 1/2 = 0.5
1 – 1/1/2 = -1
1 – 1/-1 = 2
1 – 1/2 = 1/2 = 0.5
1 – 1/1/2 = -1
1 – 1/-1 = 2
[…]

x = 3

1 – 1/3 = 2/3 = 0.66666…
1 – 1/2/3 = -1/2 = -0.5
1 – 1/-1/2 = 3
1 – 1/3 = 2/3 = 0.66666…
1 – 1/2/3 = -1/2 = -0.5
1 – 1/-1/2 = 3
1 – 1/3 = 2/3 = 0.66666…
1 – 1/2/3 = -1/2 = -0.5
1 – 1/-1/2 = 3 = 3
1 – 1/3 = 2/3 = 0.66666…
[…]

x = 73

1 – 1/73 = 72/73 = 0.98630136986301369863013…
1 – 1/72/73 = -1/72 = -0.01388888…
1 – 1/-1/72 = 73
1 – 1/73 = 72/73 = 0.98630136986301369863013…
1 – 1/72/73 = -1/72 = -0.01388888…
1 – 1/-1/72 = 73
1 – 1/73 = 72/73 = 0.98630136986301369863013…
1 – 1/72/73 = -1/72 = -0.01388888…
1 – 1/-1/72 = 73
[…]

The function falls into an endless loop of period 3. But what about using the two functions together, first x = 1 + 1/x, then x = 1 – 1/x, then repeating?

loop(x = 1 + 1/x, x = 1 – 1/x)

x = 1
1 + 1/1 = 2
1 – 1/2 = 1/2 = 0.5
1 + 1/1/2 = 3
1 – 1/3 = 2/3 = 0.666666…
1 + 1/2/3 = 2_1/2 = 2.5
1 – 1/2_1/2 = 3/5 = 0.6
1 + 1/3/5 = 2_2/3 = 2.66666…
1 – 1/2_2/3 = 5/8 = 0.625
1 + 1/5/8 = 2_3/5 = 2.6
1 – 1/2_3/5 = 8/13 = 0.615384615384…
1 + 1/8/13 = 2_5/8 = 2.625
1 – 1/2_5/8 = 13/21 = 0.619047619047619…
1 + 1/13/21 = 2_8/13 = 2.615384615384615384…
1 – 1/2_8/13 = 21/34 = 0.6176470588235294117647058824…
1 + 1/21/34 = 2_13/21 = 2.619047619047619047619047619…
1 – 1/2_13/21 = 34/55 = 0.6181818181818181818181818182…
1 + 1/34/55 = 2_21/34 = 2.617647058823529411764705882…
1 – 1/2_21/34 = 55/89 = 0.6179775280898876404494382022…
1 + 1/55/89 = 2_34/55 = 2.6181818…
1 – 1/2_34/55 = 89/144 = 0.618055555…
1 + 1/89/144 = 2_55/89 = 2.617977528089887640449438202…
1 – 1/2_55/89 = 144/233 = 0.6180257510729613733905579399…
1 + 1/144/233 = 2_89/144 = 2.618055555…
1 – 1/2_89/144 = 233/377 = 0.6180371352785145888594164456…
1 + 1/233/377 = 2_144/233 = 2.618025751072961373390557940…
1 – 1/2_144/233 = 377/610 = 0.6180327868852459016393442623…
1 + 1/377/610 = 2_233/377 = 2.618037135278514588859416446…
1 – 1/2_233/377 = 610/987 = 0.6180344478216818642350557244…
1 + 1/610/987 = 2_377/610 = 2.618032786885245901639344262…
1 – 1/2_377/610 = 987/1597 = 0.6180338134001252348152786475…

Phi and the Fibonacci sequence are back, but in a zig-zagging or two-steps-forward, one-step-back kind of way. Now adapt the two previous functions slightly. Here’s the plus function adapted:

x = 2 + 1/x

x = 1

2 + 1/1 = 3…
2 + 1/3 = 2_1/3 = 2.33333…
2 + 1/2_1/3 = 2_3/7 = 2.428571428571428571…
2 + 1/2_3/7 = 2_7/17 = 2.411764705882352941176470588…
2 + 1/2_7/17 = 2_17/41 = 2.414634146341463…
2 + 1/2_17/41 = 2_41/99 = 2.41414141…
2 + 1/2_41/99 = 2_99/239 = 2.414225941422594142259414226…
2 + 1/2_99/239 = 2_239/577 = 2.414211438474870017331022530…
2 + 1/2_239/577 = 2_577/1393 = 2.414213926776740847092605887…
2 + 1/2_577/1393 = 2_1393/3363 = 2.414213499851323223312518585…
[…]

This function is generating Pell numbers and approximating the value 1 + √2, where √2 = 1.414213562373095048801688724… Now try adapting the minus function:

x = 2 – 1/x

x = 2

2 – 1/2 = 1_1/2 = 1.5
2 – 1/1_1/2 = 1_1/3 = 1.33333…
2 – 1/1_1/3 = 1_1/4 = 1.25
2 – 1/1_1/4 = 1_1/5 = 1.2
2 – 1/1_1/5 = 1_1/6 = 1.166666…
2 – 1/1_1/6 = 1_1/7 = 1.142857142857142857…
2 – 1/1_1/7 = 1_1/8 = 1.125
2 – 1/1_1/8 = 1_1/9 = 1.11111…
2 – 1/1_1/9 = 1_1/10 = 1.1
2 – 1/1_1/10 = 1_1/11 = 1.09090909…
2 – 1/1_1/11 = 1_1/12 = 1.0833333…
2 – 1/1_1/12 = 1_1/13 = 1.0769230769230769230…
2 – 1/1_1/13 = 1_1/14 = 1.0714285714285714285…
2 – 1/1_1/14 = 1_1/15 = 1.0666666…
2 – 1/1_1/15 = 1_1/16 = 1.0625
[…]

Where x = 1 – 1/x falls into an endless loop, x = 2 – 1/x endlessly falls towards 1. Now try combining x = 2 + 1/x and x = 2 – 1/x. The result might be surprising:

loop(x = 2 + 1/x, x = 2 – 1/x)

x = 1

2 + 1/1 = 3
2 – 1/3 = 1_2/3 = 1.66666…
2 + 1/1_2/3 = 2_3/5 = 2.6
2 – 1/2_3/5 = 1_8/13 = 1.615384615384615384…
2 + 1/1_8/13 = 2_13/21 = 2.619047619047619047619047619…
2 – 1/2_13/21 = 1_34/55 = 1.618181818181818181818181818…
2 + 1/1_34/55 = 2_55/89 = 2.617977528089887640449438202…
2 – 1/2_55/89 = 1_144/233 = 1.618025751072961373390557940…
2 + 1/1_144/233 = 2_233/377 = 2.618037135278514588859416446…
2 – 1/2_233/377 = 1_610/987 = 1.618034447821681864235055724…
2 + 1/1_610/987 = 2_987/1597 = 2.618033813400125234815278648…
2 – 1/2_987/1597 = 1_2584/4181 = 1.618033963166706529538387946…
2 + 1/1_2584/4181 = 2_4181/6765 = 2.618033998521803399852180340…
2 – 1/2_4181/6765 = 1_10946/17711 = 1.618033990175597086556377393…
2 + 1/1_10946/17711 = 2_17711/28657 = 2.618033988205325051470844820…
2 – 1/2_17711/28657 = 1_46368/75025 = 1.618033988670443185604798401…
2 + 1/1_46368/75025 = 2_75025/121393 = 2.618033988780242682856507377…
2 – 1/2_75025/121393 = 1_196418/317811 = 1.618033988754322537608830406…
2 + 1/1_196418/317811 = 2_317811/514229 = 2.618033988748203621343798191…
2 – 1/2_317811/514229 = 1_832040/1346269 = 1.618033988749648101530971893…
2 + 1/1_832040/1346269 = 2_1346269/2178309 = 2.618033988749989097047296779…
2 – 1/2_1346269/2178309 = 1_3524578/5702887 = 1.618033988749908598925421458…
[…]

It’s a tie-phi again, with better and better aproximations to φ and φ + 1 = φ^2. Now another function that may be another surprise:

x = 5 – 5/x

x = 2

5 – 5/2 = 2_1/2 = 2.5
5 – 5/2_1/2 = 3 = 3
5 – 5/3 = 3_1/3 = 3.333333…
5 – 5/3_1/3 = 3_1/2 = 3.5
5 – 5/3_1/2 = 3_4/7 = 3.571428571428571428…
5 – 5/3_4/7 = 3_3/5 = 3.6
5 – 5/3_3/5 = 3_11/18 = 3.611111…
5 – 5/3_11/18 = 3_8/13 = 3.615384615384615384615384615…
5 – 5/3_8/13 = 3_29/47 = 3.61702127659574468085106383…
5 – 5/3_29/47 = 3_21/34 = 3.617647058823529411764705882…
5 – 5/3_21/34 = 3_76/123 = 3.617886178861788617886178862…
5 – 5/3_76/123 = 3_55/89 = 3.617977528089887640449438202…
5 – 5/3_55/89 = 3_199/322 = 3.618012422360248447204968944…
5 – 5/3_199/322 = 3_144/233 = 3.61802575107296137339055794…
5 – 5/3_144/233 = 3_521/843 = 3.618030842230130486358244365…
5 – 5/3_521/843 = 3_377/610 = 3.618032786885245901639344262…
5 – 5/3_377/610 = 3_1364/2207 = 3.618033529678296329859537834…
[…]

It’s a tie-phi with the Fibonacci sequence again. But only the Fibonacci sequence. The Lucas sequence too:

2, 1, 3, 4, 7, 11, 18, 29, 47, 76, 123, 199, 322, 521, 843, 1364, 2207, 3571, 5778…

The Lucas sequence is generated by the same rule as the Fibonacci sequence — add the two previous numbers — but it’s seeded with “2, 1” rather than “1, 1”.

Finally, if you’re wondering where cy-phi is, it’s here:

x = 1 – 1/x

x = φ

φ – 1/φ = 2 – φ = 0.3819660112501052…
2-φ – 1/(2-φ) = -φ = -1.6180339887498948…
-φ – 1/-φ = φ = 1.6180339887498948…
2-φ = 0.3819660112501052…
-φ = -1.6180339887498948…
φ 1.6180339887498948…
2-φ = 0.3819660112501052…
-φ = -1.6180339887498948…
[…]

That’s a cycling phi or cy-phi.

Hopping in Boundland

Shopping in Poundland. That’s what Brits do when they want cheap fills. Hopping in Boundland. That’s what rec-mathers do when they want deep thrills. As I’ve described previously, a point can create interesting geometry by jumping towards fixed vertices inside a polygon. But it can also create interesting geometry by jumping at fixed angles inside a polygon. Suppose a point jumps at 0°, 120° or 240° halfway towards the perimeter of a triangle. It’s bounded in its jumps, so you could say it’s hopping in Boundland. Or bounding in Hopland. Either way, it creates this pattern inside the polygon:

Jumping halfway towards perimeter of triangle at 0°, 120° or 240°


If you stretch the triangle-and-pattern into a circle, you get this (the graphics aren’t as good as they could be, but I’m working on it):

Triangle → circle, 1/2 at 0°, 120° or 240°


You can also introduce restrictions, like banning the point from jumping at the same angle twice in a row:

Ban on same angle twice in a row, 1/2 jump at 0°, 120° or 240°


Triangle → circle, ban j+0, 1/2 jump at 0°, 120° or 240°


If the jump is 2/3rds of the distance to the perimeter and the ban is on the same angle twice, the point generates this pattern by hopping in Boundland:

Triangle, 2/3 jump, ban j+0, 0°, 120° or 240°


Triangle → circle, 2/3 jump, ban j+0, 0°, 120° or 240°


Now try adjusting the angles. Swinging the angles 60° with the same 2/3rd jump and same ban, the point generates this:

Triangle, 2/3 jump, ban j+0, 60°, 180° or 300°


Triangle → circle, 2/3 jump, ban j+0, 60°, 180° or 300°


A point jumping 2/3rds at four angles inside a square generates this pattern:

Square, 2/3 jump, ban j+0, 45°, 135°, 225, 315°


Square → circle, 2/3 jump, ban j+0, 45°, 135°, 225, 315°


And what if the point jumps 5/7ths towards the center of the polygon, not just towards the perimeter? Then it generates this pattern inside a hexagon with a ban on jumping towards the angle adjacent clockwise to the angle it’s just jumped at:

Hexagon, 5/7 jump, ban j+1, 6 angles + center


The point can also jump inside a circle rather than a polygon. Here’s the pattern generating by a point jumping 2/3rds at three angles with a ban on the same jump twice in a row:

Circle, 2/3 jump, ban j+0, 3 angles


And if the point can jump towards the center of the circle too, it generates this pattern:

Circle, 2/3 jump, ban j+0, 3 angles + center


Elsewhere Other-Accessible

• Controlled Chaos — a look at points jumping towards vertices, not perimeters

Think Frink

Inky Bloaters (1987) is the name of an album by psycho-songstress Danielle Dax. Frinky growthers are those who are interested in frincremental growth. That’s growth by fractions, as in the equation x = x + 1/x. If the initial x = 1, its frincremental growth looks like this:

1
1 + 1/1 = 1 + 1 = 2
2 + 1/2 = 2_1/2
2_1/2 + 1/2_1/2 = 2_9/10
2_9/10 + 1/2_9/10 = 3_71/290
3_71/290 + 1/3_71/290 = 3_150911/272890
3_150911/272890 → 3_220789390391/264588959090 → 4_25570190327910692085061/268440386798659418988490 → 4_100170363026578204006507990129853967021051645381/295105036840595214385430531020664149472669868290

As you can see, the numerators and denominators of the fractional part of x get very large very quickly. So you can’t track the frincremental growth of x with perfect accuracy. Even the most compendious computer will run out of space. But representing x as a decimal is usually enough for us frinky growthers:

1 + 1 = 2
2 + 1/2 = 2 + 0.5 = 2.5
2.5 + 1/2.5 = 2.9
3.244827586206896551724137931…
3.553010370478947561288431236…
3.834461842815967366750790750…
4.095254632258778985771918456…
4.339439692724345181049239663…
4.569884190357676650018985962…
4.788708116379690742064597208…
4.997532704493448986664559639…
5.197631445038131469095668466…
5.390026771750770995914851381…
5.575554607204394029915651664…
5.754908962142979073283550015…
5.928673657045750549124213874…
6.097345447373015508408978797…
6.261351244425377152997703626…
6.421061179383957004641284553…
6.576798676981813718180627345…

The larger x gets, the slower it grows. But it never stops growing and will pass any finite integer in finite time. I was interested in the fractional part of x += 1/x (a shorthand for x = x + 1/x). Plainly, it’s almost unique for every integer seed (the fractional part is identical, just displaced by one step, for initial x = 1 = 2). I graphed the fractional part of x += 1/x for 1, 2, 3, 4, 5… and discovered some interesting patterns:

frac(x) of x += 1/x for x = 1, 2, 3, 4, 5…


Later frac(x) of x += 1/x





In time, the rounded patterns disappear for lower initial x. But you also get symmetrical patterns for x += sqrt(x), that is, x = x + square_root(x). And they last longer:

frac(x) of x += sqrt(x) for 1, 2, 3, 4, 5… #1


frac(x) of x += sqrt(x) for 1, 2, 3, 4, 5… #2


frac(x) of x += sqrt(x) for 1, 2, 3, 4, 5… #3


frac(x) of x += sqrt(x) for 1, 2, 3, 4, 5… #4


frac(x) of x += sqrt(x) for 1, 2, 3, 4, 5… #5


Here’s an animation of the first fifty steps of x += sqrt(x):

animated frac(x) of x += sqrt(x) for 1, 2, 3, 4, 5… (animated at EZgif) (click for larger image)


And what about x += ln(x), or x = x + natural_logarithm(x)? The patterns are both more dynamic and longer-lasting for lower initial x:

frac(x) of x += ln(x) for 1, 2, 3, 4, 5… #1


frac(x) of x += ln(x) for 1, 2, 3, 4, 5… #2


frac(x) of x += ln(x) for 1, 2, 3, 4, 5… #3


frac(x) of x += ln(x) for 1, 2, 3, 4, 5… #4


And two animations of x += ln(x), one slower, one faster:

animated frac(x) of x += sqrt(x) for 1, 2, 3, 4, 5… (EZgif) (click for larger)


faster animated frac(x) of x += sqrt(x) for 1, 2, 3, 4, 5… (click for larger)