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)


Perverting the Pircle

Here again is the famous Sierpiński triangle, a fractal named after the Polish mathematician Wacław Sierpiński (1882-1969):

A Sierpiński triangle


And here’s a Sierpiński ciangle — my name for a Sierpiński triangle stretched into a circle:

A Sierpiński ciangle or Sierpiński pircle


More generally, you could call that shape a pircle, a polygon turned into a circle. But you can also squeeze the Sierpiński triangle and turn it into this shape:

A Sierpiński squircle


You could call that a squircle, a squeezed circle. You use the same trigonometry to create both the Sierpiński ciangle and the squeezed Sierpiński triangle. Here’s an animated gif showing the Sierpiński triangle cycling between polygon, pircle and squircle:

Sierpiński triangle, pircle and squircle (animated at EZgif)


Now for the Sierpiński carpet, the square analogue of the Sierpiński triangle (you can create it with a point jumping 2/3rds of the way towards the vertices and midpoints of a square, as marked with green dots):

A Sierpiński carpet


And here’s the carpet as a pircle:

Pircle from Sierpiński carpet


Like the Sierpiński triangle, you can both pircularize and squeeze the Sierpiński carpet. Here’s the cycle as an animated gif:

Sierpiński carpet ⇔ pircle and squircle (animated at EZgif)


But you can also pervert the pircle, as it were (in Latin, pervertere means “to thoroughly alter”). For example, what if you flip the radius used in pircularizing the Sierpiński carpet, so that points on the perimeter of the pircle move to the center, and points at the center move to the perimeter? One variant of that perverted pircle looks like this:

Perverted pircle from Sierpiński carpet


Here are some more polygonal fractals turned into pircular fractals:

Fractal from point jumping 1/2 way to vertices of square (but not same vertex twice in a row)

Pircle from square fractal


If you double each point’s distance from the centre, then fold any resulting distance beyond the circle’s radius back inside by halving it, you get this perverted pircle:

Perverted pircle from square fractal


Here’s another polygonal fractal, the T-square fractal:

T-square fractal from point jumping 1/2 way to vertices of square (but not towards vertex directly opposite vertex just jumped towards)

Pircle from T-square fractal


Again, you can pervert the pircle:

Perverted pircle #1 from T-square fractal


Perverted pircle #2 from T-square fractal


Perverted pircle #3 from T-square fractal


Perverted pircles from T-square fractal (animated at EZgif)


Finally, another polygonal fractal turned into a pircle and perverted pircle:

Another square fractal


Pircle from square fractal


Perverted pircle from square fractal


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

Angular Trerkel

Here’s the famous Sierpiński triangle, a fractal named after the Polish mathematician Wacław Sierpiński (1882-1969):

A Sierpiński triangle


You can create it by following all the possible paths of a point jumping half-way towards the vertices of the triangle. But what if the point can jump towards the center of the triangle too? Then you get another fractal, one that looks like this:

Sierpiński triangle when point can jump towards center of triangle too


Now, as a keyly committed core component of the trans-entitial community, I wondered whether triangles and triangular fractals might identify as other geometrical shapes…

I mean, what’s to stop a triangle identifying as a circle? Nothing. And obvs, if one of the Sierpiński triangles above identifies as a circle, it is a circle — trans-circles are circles (get over it). That is, there’s no need for Sierpiński surgery.

But what if a trans-circular Sierpiński triangle wanted to affirm its circularity with surgery? What would it look like then? Well, you can use elementary trig based on the angles of points within the triangle to stretch it into what might be called a trircle, i.e. a trans-circular triangle that has affirmed its inner circular identity:

A pre-op trans-circular Sierpiński triangle

🡇

A post-op trans-circular Sierpiński triangle or Sierpiński trircle


Sierpiński triangle → Sierpiński trircle (animated at EZgif)


On the other hand, the trircle might be a pre-op trans-triangular circle that has NOT affirmed its inner triangular identity with surgery. It’s complicated. But if we suppose it’s a post-op trans-circle rather than a pre-op trans-triangle, we could nickname it an Angular Trerkel, punning on the name of the great German Bundeskanzlerin Angela Merkel. Here’s the same Sierpiński surgery on the centered Sierpiński triangle (the second fractal looked at above):

A pre-op trans-circular centered Sierpiński triangle

🡇

A post-op trans-circular centered Sierpiński triangle or centered Sierpiński trircle


Centered Sierpiński triangle → centered Sierpiński trircle (animated at EZgif)


Again, the post-op trans-circular centered Sierpiński triangle might in fact be a pre-op trans-triangular centered Sierpiński circle. When it comes to the trans-entitial community, always remember: In dubio, interrogāte entitatem! — “In case of doubt, ask the entity!”

A Little Hextra


• 1, 2, 4, 8, 16, 31, 57, 99, 163, 256, 386, 562, 794, 1093, 1471, 1941, 2517, 3214, 4048, 5036, 6196, 7547, 9109, 10903, 12951, 15276, 17902, 20854, 24158, 27841, 31931, 36457, 41449, 46938, 52956, 59536, 66712, 74519, 82993, 92171, 102091, 112792, 124314, 136698 — A000127, “Maximal number of regions obtained by joining n points around a circle by straight lines”, at The Online Encyclopedia of Integer Sequences

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)


Size Scatters

While I play New Order, let’s view order. Below are some rational fractions ordered by increasing size of denominator (the lower part of the fraction, e.g. the 7 in 3/7) and numerator (the upper part of the fraction, e.g. the 5 in 5/9). Note the positions of 1/2 and 1/7:

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

Now let’s plot fractions ordered like that on a fract-L, a graph whose axes represent numbers < 1. If both x and y = 1/2, 1/3, 2/3, 1/4, 3/4, 1/5…, you get a line at 45°:

fract-L for x = 1/2, 1/3, 2/3…, y = 1/2, 1/3, 2/3…


If the fractions went to infinity, you’d get a solid line. As it is, you get some interesting splits in the 45° line. And when you plot the fractions like that, it’s easy to see that each point, (x,y), has a unique x and a unique y. But there are other ways to order the rational fractions. Try the same set ordered by the size of the decimal, not the denominator and numerator. In the previous set, 1/2 came before 1/7. Now 1/2 comes after 1/7, because 0.5 = 1/2 > 0.142857… = 1/7:

1/10, 1/9, 1/8, 1/7, 1/6, 1/5, 2/9, 1/4, 2/7, 3/10, 1/3, 3/8, 2/5, 3/7, 4/9, 1/2, 5/9, 4/7, 3/5, 5/8, 2/3, 7/10, 5/7, 3/4, 7/9, 4/5, 5/6, 6/7, 7/8, 8/9, 9/10

Now let’s plot x as the first set of fractions, ordered by size of denominator-and-numerator, and y as the second set of fractions, ordered by the size of the decimal. You’ll see that this kind of size scatters:

fract-L for x = 1/2, 1/3, 2/3, 1/4, 3/4, 1/5…, y = 1/10, 1/9, 1/8, 1/7, 1/6, 1/5, 2/9…


Now the points aren’t compressed into a 1-d line, but beginning to spread in 2-d space. The more fractions you use, the more the points spread. They remind me of papillae on a fractal tongue:

x = 1/2, 1/3, 2/3, 1/4, 3/4, 1/5… < 1/26, y = sizesort(1/2..1/26)


Papillae on a human tongue (image courtesy chatGPT)


x = denumsort(1/2..1/51), y = sizesort(1/2..1/51)


x = denumsort(1/2..101/), y = sizesort(1/2..1/101)


And the points seem to be occurring at the same x or y value. But that’s an artefact of a screen with limited pixels. On an impossible screen with infinite pixels, each (x,y) still has a unique x and unique y. Here are more fract-Ls with more fractions:

x = denumsort(1/2..1/151), y = sizesort(1/2..1/151)


x = denumsort(1/2..1/201), y = sizesort(1/2..1/201)


x = denumsort(1/2..1/251), y = sizesort(1/2..1/251)


finer detail for x = denumsort(1/2..1/251), y = sizesort(1/2..1/251)


x = denumsort(1/2..37/406), y = sizesort(1/2..37/406)


x = denumsort(1/2..1/501), y = sizesort(1/2..1/501)


Finally, to the closing bars of New Order, let’s view order in an animated gif:

x = denumsort(a/b), y = sizesort(a/b) (animated at EZgif)


Post-Performative Post-Scriptum…

In fact, I wasn’t listening to New Order to view order. I’m not a fan of New Order, just a fan of assonance.

Middlemoth

I’ve never read Middlemarch (1871). But I have seen a middlemoth. It was when I was looking at a new way of creating fractLs. A fractL is what I call a graph shaped like a capital L, with the x- and y-axes representing values between 0 and 1, like 1/2 and 1/3 and 8/55. You can also use numbers > 1 to create numbers < 1: 73 → 0.73; 128719 → 0.128719; and so on. But I decided to reverse the integer before converting it: 73 → 0.37; 128719 → 0.917821; and so on. And use different bases for the x- and y-axes. So that’s what I did on a fractL: I mapped fractions converted from integers in one base against fractions converted from integers in another base. The results, as you can see, were spectacularly dull:

fractL for int→frac in base 2 and base 6


fractL for int→frac in base 3 and base 6


fractL b04, b06


fractL b06, b08


So I decided to try some perspectivision, mapping the integer-fractions not on a fractL but on a fractO instead. A fractO is a circle where you find a point inside the circle by using two fractions, fr1 and fr2, to create two radian values: θ1 = fr1 * 2 * π and θ2 = fr2 * 2 * π. Then you use θ1 and θ2 to find two points on the perimeter of the circle, (x1, y1) and (x2, y2), and then find their midpoint, (x3, y3) = ((x1, y1) + (x2, y2)) / 2. The results this time are much more pleasing on the eye:

fractO for integers in base 2 and base 6

fractL b02, b06, for fractO b02, b06


Here’s an animated gif showing the conversion from visually dull fractL to visually interesting fractO:

fractL b02b06 to fractO b02b06 (animated at EZgif)


When I was looking at more fractOs, I found one that was lepidopterally interesting too:

fractO b09, b12 with middlemoth


fractO b09, b12 (middlemoth in green)


You can try spotting more pareidolia in more fractOs from reversed fractintegers:

fractO b03, b15

fractL b03, b15 for fractO above


fractL b03b15 to fractO b03b15 (animated at EZgif)


fractO b02, b10


fractO b02, b12


fractO b02, b14


fractO b03, b06


fractO b03, b12


fractO b03, b21


fractO b04, b06


fractO b04, b20


fractO b06, b08


fractO b09, b15


fractO b10, b24


fractO b12, b16


fractO b15, b20


fractO b24, b28


fractO b42, b78


fractO b02, b18 (fr2 x 3)


fractO b02, b06 (fr2 x 3)

Red Sails in the Subset

Let’s look at a simple arithmetical rule and a simple arithmetical fact. And the complexity they can create. First the rule. Subtracting a negative number is the same as adding the positive form of that number:

7 – +2 = 5
7 – -2 = 7 + 2 = 9

-10 – +4 = -14
-10 – -4 = -10 + 4 = -6

Now the simple arithmetical fact: The reciprocal of positive x, namely 1/x, is less than 1 when x > 1, identical to x when x = 1, and greater than 1 when 0 < x < 1. Negative x, -x, works in the opposite direction:

1/5 = 0.2; 1/-5 = -0.2
1/4 = 0.25; 1/-4 = -0.25
1/3 = 0.333333…; 1/-3 = -0.333333…
1/2 = 0.5; 1/-2 = -0.5

1/1 = 1; 1/-1 = -1

1/0.5 = 2; 1/-0.5 = -2
1/0.25 = 4; 1/-0.25 = -4
1/0.333333.. = 3; 1/-0.333333.. = -3
1/0.2 = 5; 1/-0.2 = -5

Now, the simple arithmetical rule and the simple arithmetical fact explain the wildly different behaviour of these two nearly identical formulae:

Formula #1: x = x + 1/x
Formula #2: x = x – 1/x

If you seed x = x + 1/x with 2, this is what happens:

2 = x
2.5 = 2 + 1/2 = 2 + 0.5
2.9 = 2.5 + 1/2.5 = 2.5 + 0.4
3.244827586206896551724137931… = 2.9 + 1/2.9 = 2.9 + 0.3448275862…
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 value of x steadily (but more and more slowly) increases. But when you seed the other formula, x = x – 1/x, with 2, this is what happens:

+2
+1.5 = 2 – 1/2 = 2 – 0.5
+0.8333333… = 1.5 – 1/1.5 = 1.5 – 0.666666…
-0.3666666… = 0.8333333… – 1/0.8333333… = 0.8333333… – 1.2
+2.3606060606… = -0.3666666… – 1/-0.3666666… = -0.3666666…-2.72727272… = -0.3666666… + 2.72727272…
+1.936986034932119656124790913…
+1.420720051612810742016492942…
+0.716851616121389735975863550…
-0.678137217705362317788764881…
+0.796490591963802485322149292…
-0.459017018658980935029501857…
+1.719551442531198550688634398…
+1.138004432499332885157841729…
+0.259273233005005595158072588…
-3.597661740227243739940039228…
-3.319703423907923593779727545…
-3.018471695555874174383708009…
-2.687178213005645221877765061…
-2.315040631969854351245993463…
-1.883082770759830608578236571…
-1.352038668223383718148747858…
-0.612414851610188982350276645…

+1.020465208974159220420492697…
+0.040519992610273807119693182…
-24.63865528804984441050796942…
-24.59806865747650234381633987…
-24.55741505926418687092326558…
-24.51669416101057552476382150…
-24.47590562755526483917345018…
-24.43504912094763238695385804…

The value of x swings between positive and negative in an irregular, non-periodic way, alternating between slow deterministic decay and instantaneous jumps to sometimes large positive or negative values. The deterministic decays explains why, as we’ll see, there are beautiful regular curves — parabolic curves — amid the irregularity. When the function creates a positive number x > 1, it nibbles away at x until x x > -1, x becomes positive at the next step and the process continues. Represented as a graph, x = x – 1/x looks like this when seeded with 2 — note the parabolic curves:

x[i] = x[i-1] – 1/x[i-1], x[1] = 2 (click for larger)


A shark-fin and some red sails (images StockCake + Para-Sailing World Championship)


Sydney Opera House (image Wikipedia)


When x > 0, its value is represented in white; when x < 0, its value is represented in red. The curves created remind of me of shark-fins or sails or Sydney Opera House. So you could say the graph contains red sails in the subset, i.e. the set of values of x that are sub-zero. Here are some variations on the formula:

x = x – (1/4)/x, x[1] = 2


x = x – (4/3)/x, x[1] = 2


x = x – (4/5)/x, x[1] = 2


Now try this formula, x = 1 – 1/x. When it’s seeded with 2, it behaves like this:

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

The values cycles through 2, 0.5, -1, 2, 0.5… for ever. So try varying the formula. This is what happens with x = 0.1 – 1.7/x, seeded with 2:

+2
-0.75
+2.366666666666666666666666666…
-0.618309859154929577464788732…
+2.849430523917995444191343963…
-0.496610440482852346310656327…
+3.523206323143542441364433927…
-0.382515028663775083373274222…
+4.544269826308639632084352464…
-0.274097504104620631734792447…
+6.302172491695235560374503419…
-0.169748249867834571832745868…
+10.11483079397645866692882142…
-0.068070038404634195480677189…
+25.07427708053510247498559239…

When you look at the graph of x = 0.1 – 1.7/x, you’ll see it’s also cycling, just in a more complicated way:

x = 0.1 – 1.7/x, x[1] = 2 (click for larger)


And here’s how different seeds can change the graph:

x = 2/3 – 1/x, x[1] = 2/3


x = 2/3 – 1/x, x[1] = 3/2


This graph reminds me of vertebrae:

x = 2/5 – 1/x, x[1] = 2


And this graph reminds of a bone:

x = 9/7 – 1/x, x[1] = 2


As Lucretius nearly said: Mathematica Moles et Machina Mundi — Mathematics is the Mass and Body of the World.


Elsewhere Other-Accessible…

Moto-Motto — what Lucretius did say

Strartifacts

Here’s a sequence of decreasing numbers. Which number comes next?

612 → 600 → 594 → 414 → 398 → 182 → ?

It’s 166, because the numbers decrease by the product of their digits higher than 0:

612 – 6*2 = 612 – 12 = 600 → 600 – 6 = 594 → 594 – 5*9*4 = 594 – 180 = 414 → 414 – 4*4 = 414 – 16 = 398 → 398 – 3*9*8 = 398 – 216 = 166

Eventually the sequence will reached 0 and stop. If you want to see how this function looks on a graph, here it is:

x = n <= 3722, f(i) -= digmul(f(i)) → 0 (click for larger)


The graph represents n on the x-axis, with the red circles marking n = 100 and n = 1000. The sequence of falling digit-products is on the y-axis, but the graph has a special feature there. The y-axis is compressed according to the size of n, so that n = 1000 falls to 0 with n -= digmul(n) in the same height as n = 100. Here’s a graph for the same function in base 7:

x = n <= 3722 in base 7, f(i) -= digmul(f(i)) → 0


Now the red circles represent 7^2 = 49, 7^3 = 343, 7^4 = 2401, i.e. 100b7, 1000b7, 10000b7. And you can try other functions for n = n – func(n) = n -= func(n). Here’s a graph for n -= hailstep(n), where hailstep(n) returns the number of steps in the Collatz sequence for n:

x = n <= 3722 in base 7, f(i) -= hailstep(f(i)) → f(i) < 2


You form a Collatz sequence by starting with a whole number and finding the next number according to two rules:

1. If n(i) is divisible by 2, n(i+1) = n(i) / 2
2. If n(i) is not divisible by 2, n(i+1) = n(i) * 3 + 1

So the Collatz sequence for n = 10 looks like this:

10 → 10 / 2 = 5 → 5 * 3 + 1 = 16 → 16 / 2 = 8 → 8 / 2 = 4 → 4 / 2 = 2 → 2 / 2 = 1.

When you reach 1, you stop. So that’s six steps for n = 10. But does every n reach 1 in the end? It’s a very simple question about a very simple function. But nobody knows and nobody can prove that either all numbers do or at least one number doesn’t. The German mathematician Lothar Collatz (1910-90) conjectured that all numbers do reach 1. But it can take a surprisingly long time, even with small n. This is the Collatz sequence for n = 27:

27, 82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242, 121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479, 1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911, 2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732, 866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1

Now some more functions for the y-compressed fall-bands, as I call them. If you use the sum of the factors * powers, you get this:

x = n <= 7422, f(i) -= factpowsum(f(i)) → f(i) < 2


The factpowsum(n) is the sum of the factors multiplied by their powers. For example, 37692 = 2^2 * 3^3 * 349, so factpowsum(4188) = 2*2 + 3*3 + 349*1 = 362. Here’s factpowsum for more n:

x = n <= 14822, f(i) -= factpowsum(f(i)) → f(i) < 2


You can also use the very simple function f(i) -= 1, that is, compress the numbers from n to 1 into the y-gap. But if you do that, you’ll get a completely filled screen:

x = n <= 3722, f(i) -= 1 → f(i) = 0


So you can adjust the color of a pixel according to how many times it’s written to:

x = n <= 1862, f(i) -= 1 → f(i) = 0 (color-adjust)


The patterns in the colors are artifacts of the limited resolution of the screen, so I call these patterns strartifacts = strata + artifacts. Here’s another example:

x = n <= 3722, f(i) -= 1 → f(i) = 0 (color-adjust)


Or adjust the greytone of the pixel:

x = n <= 3722, f(i) -= 1 → f(i) = 0 (greytone-adjust)


And so on (in all cases, you can click for a larger image):

x = n <= 1862, f(i) -= blockmul(f(i)) (multiply run-lengths of same digits) → f(i) < 2


x is triangular(n) = 3 to 1734453, y is 1 < triangular numbers <= n


x = n <= , f(i) -= 1 → f(i) < 2


x = n <= 7442, f(i) -= 1 → f(i) < 2


x = n <= 1862, f(i) -= leaddig(f(i)) → f(i) < 2 # 1


x = n <= , f(i) -= leaddig(f(i)) → f(i) < 2 # 2


x = n <= , f(i) -= trailingdigit(f(i)) + 1 → f(i) < 2


x = n <= , f(i) -= trailingdigit(f(i) in base 5) + 3 → f(i) < 2


for triangular(n) = 3 to 6928503, f(i) -= primes → f(i) < 2



x = n <= 1862, f(i) -= blockmul(f(i) in base 5) (multiply run-lengths of same digits) → f(i) < 2


x = n <= 1862, f(i) -= blockmul(f(i) in base 2) → f(i) < 2


x = n <= 1862, f(i) -= digsum(f(i)) → f(i) < 2


x = n <= 3722, f(i) -= func(x = 1/4 → x < 0, x(1) = 4) → f(i) < 2


x = n <= 932, f(i) -= func(x -= 3/x → x < 0, x(1) = 6) → f(i) < 2