login
Dragon Curve triple point upper inverses. If D:[0,1] is a Dragon curve, then if k is any integer > log_2(A(n)/15), besides n there are two smaller integers p and q with D(A(p)/(15*2^k)) = D(A(q)/(15*2^k)) = D(A(n)/(15*2^k)).
6

%I #14 Dec 06 2019 21:44:32

%S 23,46,47,92,83,94,107,173,184,163,143,166,188,167,203,214,329,346,

%T 341,368,333,227,331,326,293,283,263,286,287,332,376,377,323,334,369,

%U 347,383,406,428,407,658,659,692,682,736,671,666,663,661,443,454,569,662,652,586,581,573,467,571,566,533,523,503,526,527,572,563,574,587,653,664,643,752,623,754,753,646,751,668,739,761,738,647,737,683,694,729,707,743,766,767,812,856,857,803,814,849,827,863

%N Dragon Curve triple point upper inverses. If D:[0,1] is a Dragon curve, then if k is any integer > log_2(A(n)/15), besides n there are two smaller integers p and q with D(A(p)/(15*2^k)) = D(A(q)/(15*2^k)) = D(A(n)/(15*2^k)).

%C See dragun in the MATHEMATICA section for an exact evaluator of a continuous, spacefilling Dragon function, and undrag, its multivalued inverse.

%C For the triples grouped, use Dragon(A260748(n)) = Dragon(A260749(n)) = Dragon(A260750(n)). (I.e., they're "conformal".)

%H Brady Haran and Don Knuth, <a href="https://www.youtube.com/watch?v=v678Em6qyzk">Wrong turn on the Dragon</a>, Numberphile video (2014)

%H Wikipedia, <a href="http://en.wikipedia.org/wiki/Dragon_curve">Dragon curve</a>

%e For definiteness, we choose the Dragon in the complex plane with Dragon(0) = 0, Dragon(1) = 1, Dragon(1/3) = 1/5+2i/5

%e (I^2:=-1) Then using A(3) = 47, for k=2,3,4, {dragun[47/60], dragun[47/120],dragun[47/240]}

%e -> {{2/3 + I/6}, {1/4 + (5 I)/12}, {-(1/12) + I/3}}

%e These have inverse images undrag/@First/@%

%e {{37/60, 13/20, 47/60}, {37/120, 13/40, 47/120}, {37/240, 13/80, 47/240}}

%e dragun[47/15/2^k] = dragun[39/15/2^k] = dragun[37/15/2^k], which empirically = (5/3 - I) (1 + I)^k 2^(-1 - k)

%e so every eighth point is 5/6-I/2 over a power of 16.

%t (* by Julian Ziegler Hunts *)

%t piecewiserecursivefractal[x_, f_, which_, iters_, fns_] := piecewiserecursivefractal[x, g_, which, iters, fns] = ((piecewiserecursivefractal[x, h_, which, iters, fns] := Block[{y}, y /. Solve[f[y] == h[y], y]]); Union @@ ((fns[[#]] /@ piecewiserecursivefractal[iters[[#]][x], Composition[f, fns[[#]]], which, iters, fns]) & /@ which[x]));

%t dragun[t_] := piecewiserecursivefractal[t, Identity, Piecewise[{{{1}, 0 <= # <= 1/2}, {{2}, 1/2 <= # <= 1}}, {}] &, {2*# &, 2*(1 - #) &}, {(1 + I)*#/2 &, (I - 1)*#/2 + 1 &}]

%t undrag[z_] := piecewiserecursivefractal[z, Identity, If[-(1/3) <= Re[#] <= 7/6 && -(1/3) <= Im[#] <= 2/3, {1, 2}, {}] &, {#*(1 - I) &, (1 - #)*(1 + I) &}, {#/2 &, 1 - #/2 &}]

%t DeleteDuplicates[Reap[Do[If[Length[#] > 2, Sow[15*64*#[[3]]]] &@

%t undrag[dragun[k/15/64][[1]]], {k, 0, 288*3}]][[2, 1]]]

%t (* or 128 or 256 or ... *)

%Y A260747 = A260748 U A260749 U A260750 = Superset of 3*A260482.

%K nonn

%O 1,1

%A _Bill Gosper_, Jul 30 2015