Why it's time to embrace matrix products

Posted 4 years ago
8145 Views
|
4 Replies
|
24 Total Likes
|

NOTE: the notebook with Wolfram Language code is attached at the end of the post

It's time to embrace matrix products. They strictly generalize infinite series, products, and continued fractions. Here are two examples where they efficiently represent the Fourier coefficients of fractals which apparently lack the traditional representations. By the way, in response to the this, Robert Fathauer sent the photo below (left) of the objects he apparently makes from porcelain. It is a 3D print that was collaborative work with Henry Segerman and David Bachman. On the right is the image from Robert Fathauer's website.

Example 1

The sweep of the 2D subset of the complex plane representable in the base 2 using the digits 0, 1, and $(-1)^{\pm 2/3}$. This is $2m = six$ Sierpi?ski Gasket sweeps arranged alternately inward and outward around a regular 2m-gon. Found originally as a 3*3 product by Julian Ziegler Hunts. The $Subscript_{1,1}$ indicates the upper left element of the infinite product.

ParametricPlot[{Re[#], Im[#]} &@base2[t, -239, 239], {t, 0, 6}, PlotPoints -> 3^7, Axes -> None]


ParametricPlot3D[{Re[#], Im[#], Log[1 + j]} &@
base2[t, Ceiling[-j/2], Floor[(j + 1)/2]], {t, 0, 6}, {j, 0, 69},
PlotPoints -> {129, 70}]


ParametricPlot3D[{Re[#], Im[#], Log[1 + j]} &@
base2[t, Ceiling[-j/2], Floor[(j + 1)/2]], {t, 0, 6}, {j, 0, 239},
PlotPoints -> {239, 70}]


Example 2

The Twindragon Sweep. $\alpha = half the fold angle = \pi/4$ in the space-filling case. The Twindragon fills the subset of the complex plane representable base i-1 using the digits 0 and 1. The function BProd returns the upper right element of the approximate infinite matrix product.

ParametricPlot3D[{Re[#], Im[#], Log[1 + n]} &@
drag[t, Ceiling[-n/2], Floor[(n + 1)/2]], {t, 0, 4}, {n, 0, 239},
PlotPoints -> {239, 70}]


Example 3 (surprise!)

Here is a 3D print by Neil Bickford of a Fudgeflake Sweep sweep (sic), with a Fourier coefficient derived as a matrix product that happened to telescope to an ordinary product. This m=3 case may be thought of as three Triadic Dragons in a triangular loop.

Example 4

As in Example 3, a matrix product telescopes to give the Fourier series for a class of fractals including both the Snowflake curve (m=3, s= 1/Sqrt[3]) and Sierpi?ski's squarefill (m=2, s=1).

Attachments:
4 Replies
Sort By:
Posted 4 years ago
 The shapes remind of Space-Filling Curves - Numberphile. Look half-way or so, very similar stuff! Very nicely done!
Posted 4 years ago
 Bill, these are very pretty, indeed, thank you very much for sharing! Here is another video hosted by Henry's channel: Developing terdragon curve.
 As I had explained in this other post, one can use Array[] to implement (finite sections of) infinite matrix products. For illustration purposes, I will demonstrate with Bill's first example. gasketProduct[m_Integer?Positive, k_Integer, prec_: MachinePrecision] := Array[Function[n, N[With[{s1 = Sin[? (1/6 - (k + 1/m)/3^n)]}, {{1/2 + (-1)^k s1, -Sqrt[3] Sin[? (k + 1/m)/3^n]}, {-s1, 1/2 - (-1)^k s1}}], prec]], Ceiling[20 + RealExponent[1 + Abs[k], m]], 1, Dot][[1, 1]] base2cof[m_Integer?Positive, n_Integer?Positive, t_] := Sum[gasketProduct[m, k] Exp[I ? t (k + 1/m)]/(? (k + 1/m)), {k, -n, n}, Method -> "Procedural"] Just to be a little different, I'll use a pentagon as a motif: ParametricPlot[ReIm[base2cof[5, 30, t]], {t, 0, 4 ?}, PlotPoints -> 105]  ParametricPlot[ReIm[base2cof[5, 120, t]], {t, 0, 4 ?}, MaxRecursion -> 1, PlotPoints -> 905]