Beta-numeration system

Beta-numeration

See for instance [Rényi1957] or [Parry1960].

EXAMPLES:

sage: from slabbe import BetaTransformation
sage: z = polygen(QQ, 'z')
sage: K.<phi> = NumberField(z**2-z-1, 'phi', embedding=RR(1.6))
sage: T = BetaTransformation(phi)
sage: T.orbit(.1, 5)
[0.100000000000000,
 0.161803398874990,
 0.261803398874990,
 0.423606797749979,
 0.685410196624969,
 0.109016994374948]
sage: T.greedy_beta_expansion(.1, 10)
[0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0]

REFERENCES:

Rényi1957

Rényi, A. « Representations for real numbers and their ergodic properties ». Acta Mathematica. Academiae Scientiarum Hungaricae 8 (1957): 477–493. https://doi.org/10.1007/BF02020331.

Parry1960

Parry, W. « On the $beta$-expansions of real numbers ». Acta Mathematica. Academiae Scientiarum Hungaricae 11 (1960): 401–416. https://doi.org/10.1007/BF02020954.

AUTHOR:

  • Sébastien Labbé, September 8, 2020

class slabbe.beta_numeration_system.BetaTransformation(beta)

Bases: object

INPUT:

  • beta – real number

EXAMPLES:

sage: from slabbe import BetaTransformation
sage: z = polygen(QQ, 'z')
sage: K.<phi> = NumberField(z**2-z-1, 'phi', embedding=RR(1.6))
sage: BetaTransformation(phi)
β-transformation with β = phi ≈ 1.61803398874989
greedy_beta_expansion(x, n)

Return the beta expansion of x.

INPUT:

  • x – real number in [0,1]

  • n – positive integer

OUTPUT:

list

EXAMPLES:

sage: from slabbe import BetaTransformation
sage: z = polygen(QQ, 'z')
sage: K.<phi> = NumberField(z**2-z-1, 'phi', embedding=RR(1.6))
sage: T = BetaTransformation(phi)
sage: T.greedy_beta_expansion(.1, 10)
[0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0]
sage: T.greedy_beta_expansion(pi-3, 10)
[0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0]
orbit(x, n)

Return the orbit of length n under the beta transformation starting at x.

INPUT:

  • x – real number in [0,1]

  • n – positive integer

OUTPUT:

list

EXAMPLES:

sage: from slabbe import BetaTransformation
sage: z = polygen(QQ, 'z')
sage: K.<phi> = NumberField(z**2-z-1, 'phi', embedding=RR(1.6))
sage: T = BetaTransformation(phi)
sage: T.orbit(.1, 5)
[0.100000000000000,
 0.161803398874990,
 0.261803398874990,
 0.423606797749979,
 0.685410196624969,
 0.109016994374948]
sage: T.orbit(pi-3, 5)
[pi - 3,
 1/2*(pi - 3)*(sqrt(5) + 1),
 1/4*(pi - 3)*(sqrt(5) + 1)^2,
 1/8*(pi - 3)*(sqrt(5) + 1)^3,
 1/16*(pi - 3)*(sqrt(5) + 1)^4,
 1/32*(pi - 3)*(sqrt(5) + 1)^5 - 1]
plot_me()

Return the plot of the beta-transformation on interval [0,1].

EXAMPLES:

sage: from slabbe import BetaTransformation
sage: z = polygen(QQ, 'z')
sage: K.<phi> = NumberField(z**2-z-1, 'phi', embedding=RR(1.6))
sage: T = BetaTransformation(phi)
sage: _ = T.plot_me()