Is it, its real or imaginary part, or magnitude algebraic? Or at least, are
these quantities algebraically connected?
My wildly recursive exact Hilbert function stacks out after a few
convergents, raising the entertaining problem
of rewriting it nonrecursively.
"$RecursionLimit=Infinity removes any limit on the number of recursion
levels.
...
On some computer systems, your whole Wolfram Language session may crash if
you allow it to use more stack space than the computer system allows. "
But Mathematica is apparently unable to warn you where that precipice lurks!
Meanwhile, a mild surprise:
$RecursionLimit = 9999;
In[22]:= Convergents[1/Sqrt[2],16]
Out[22]=
{0,1,2/3,5/7,12/17,29/41,70/99,169/239,408/577,985/1393,2378/3363,5741/8119,13860/19601,33461/47321,80782/114243,195025/275807}
Let's Hilbert these for a succession of rational approximations to
Hilbert[1/√2]:
In[25]:=Hilbert/@%22
Out[25]={0, 1, 1 + I, 50/63 + (41 I)/63, 14/17 + (12 I)/17, 25/31 + (8
I)/11,
26425/32769 + (2703 I)/3641,
352121381971026539243677635070833214831945620557921683722821936356496290/441711766194596082395824375185729628956870974218904739530401550323154943
+
330867072223470133127042461326599267580738957131033875887852738752365031
I/441711766194596082395824375185729628956870974218904739530401550323154943,
3786557088089533296370/4722366482869645213697 +
3539308315540678808218 I/4722366482869645213697, <big numbers>...)
Indeed, OS X Mathematica 10 quietly loses its back end on the very next
(17th) convergent.
Hilbert just the last four:
In[23]:= tim[Hilbert[#]]&/@Take[%22,-4]
During evaluation of In[23]:= 0.073786 seconds
During evaluation of In[23]:= 14.515494 seconds
During evaluation of In[23]:= 0.744485 seconds
During evaluation of In[23]:= 50.913754 seconds
<multihundred digit complex rationals suppressed>
Wait, why did the penultimate one take only 3/4 second?
In[24]:= Short/@%
Out[24]=
{(178756875476641101<<8>>535160091329216180)/(223007451985306231<<8>>272648361505980417)+<<1>>,
(12783524938776490<<505>>462752734609543929)/(15948292093020135<<505>>211095044536439369)+<<1>>,
3525337771939/4398046511105+(3296808843473 I)/4398046511105,
(66696048809823983<<523>>014863141630402424)/(83206401558341682<<523>>067958436720377525)+<<1>>}
The numerator and denominator are comparatively tiny! In fact, the
denominator is
In[36]:= 2^42+1
Out[36]= 4398046511105
Douglas Adams, are you listening?
Yet nothing's numerically strange about the approach to Hilbert[1/√2]:
In[33]:= N[%23]
Out[33]= {0.801573552 +0.749630877 I,0.801560748 +0.749590554 I,0.801569006
+0.749607544 I,0.801573528 +0.749603288 I}
In octal, that 15th convergent and its Hilbert image are
In[32]:= BaseForm[{%22[[-2]],%23[[-2]]},8]
Out[32]//BaseForm= {Subscript[235616, 8]/Subscript[337103, 8],
Subscript[63231640267643, 8]/Subscript[100000000000001,
8]+(Subscript[57763107534321, 8] I)/Subscript[100000000000001, 8]}
Many other denominators (of the real parts) alternately exceed and inceed
powers of two:
Table[Log[2, Denominator[Re[%25[[k]]]] + (-1)^k], {k, 4, 16}]
{6, 4, 5, 15, 238, 72,
Fail,Fail, 44, 144, Fail, 42,Fail]}
The failing denominators approximate powers of 2 divided by small integers,
suggesting accidental
cancellations. E.g.
In[39]:= BaseForm[Denominator[Re[%25[[10]]]],8]
Out[39]//BaseForm=
Subscript[30303030303030303030303030303030303030303030303030303030303030303,
8]
In[41]:= BaseForm[Denominator[Re[%25[[11]]]]+1,8]
Out[41]//BaseForm=
Subscript[1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,
8]
In[43]:= BaseForm[Denominator[Re[%25[[14]]]],8]
Out[43]//BaseForm=
Subscript[1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,
8]
In[44]:= BaseForm[Denominator[Re[%25[[16]]]],8]
Out[44]//BaseForm=
Subscript[512772650051277265005127726500512772650051277265005127726500512772650051277265005127726500512772650051277265005127726500512772650051277265005127726500512772650051277265005127726500512772650051277265005127726500512772650051277265005127726500512772650051277265005127726500512772650051277265005127726500512772650051277265005127726500512772650051277265005127726500512772650051277265005127726500512772650051277265005127726500512772650051277265005127726500512772650051277265005127726500512772650051277265005127726500512772650051277265005127726500512772650051277265005127726500512772650051277265005127726500512772650051277265,
8]
Note that these 2ish denominators are not artifacts of bigfloat truncation,
nor continued fraction truncation, nor are they properties of sqrt 2. It's
just that
Hilbert likes to make 2ish denominators. The irregular sizes correspond to
the irregular periods of decimal (or whatever) expansions of rationals.
Interestingly, inverse Hilbert also likes 2ish denominators.
Using Julian's
Clear[unbert]; unbert[z_] :=
piecewiserecursivefractal[z, Identity,
If[0 <= Re[#] <= 1 && 0 <= Im[#] <= 1, Range[4], {}] &, {1 - 2*#/I &, 2*#
- I &,
2*# - I - 1 &, (# - 1)*2/I &}, {(1 - #)/4 &, (# + 1)/4 &, (# + 2)/4 &, 1
- #/4 &}]
in turn using his miraculous
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]))
In[51]:= $RecursionLimit=6666;unbert/@{1/89,1/97,1/89+I/97,I/89+1/97,89/97}
Out[51]=
{{959/4194303},{396685311379875009944667/1760625833650318613189865563},
<big>,<big>,
{280122039752001/281474976710657}}
Testing:
In[52]:= Hilbert[#[[1]]]&/@%//tim
26.544898 Seconds,5 terms
Out[52]= {1/89,1/97,1/89+I/97,1/97+I/89,89/97}
The octal denominators:
In[53]:= BaseForm[Denominator[%51],8]
Out[53]//BaseForm= {{Subscript[17777777,
8]},{Subscript[1330133013301330133013301330133,8]},
{Subscript[470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047,8]},
{Subscript[470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047004700470047,8]},
{Subscript[10000000000000001, 8]}}
--rwg
(Sorry for the discourteous length. Indeed, GEICO has just
sent me a Courtesy Renewal Notice.)