The intervals [af,bf) is a fundamental domains for f. This means for each x∈(0,1), there is a unique n∈Z so that fn(x)∈[af,bf). Similarly, [ag,bg) is a fundamental domain for g.
We define a homeomorphism h0:[af,bf)→[ag,bg).
h_0(x)=(b_g-a_g)/(b_f-a_f)*(x-a_f)+a_gshow(h_0(x))asserth_0(a_f)==a_g# Prints errors if false.asserth_0(b_f)==b_g
Note that this function is more complex, so we define it using a Python
type function. This allows us to use any Python or Sage type expression we want, including if statements and loops.
defh(x):assert0<x<1# Cause an error if not in the domain of f.ifa_f<=x<b_f:# Use h_0:returnh_0(x)ifx>=b_f:count=0whilex>=b_f:# Apply f^-1 until we land in the fundamentalx=finv(x)# domain and count the number of timescount=count+1# we apply f^-1.asserta_f<=x<b_fy=h_0(x)# Move to the domain of g using h_0.foriinrange(count):# Now apply g to y, the same number of times.y=g(y)returnyifx<a_f:count=0whilex<a_f:x=f(x)count=count+1asserta_f<=x<b_fy=h_0(x)foriinrange(count):y=ginv(y)returny
# Plot h.# Note that h is not defined at zero or at one, so# we have shrunk the interval we are plotting slightly.# Calling plot(h, 0, 1) will give rise to errors.plot(h,0.001,0.999)
# Check one value larger than b_f:show(h(9/10))# Check the conjugacy equation:assert(h(f(9/10))==g(h(9/10)))
# Check one value larger than b_f:show(h(1/4))# Check the conjugacy equation:assert(h(f(1/4))==g(h(1/4)))
We can graphically check the conjugacy. For plot1 we will plot h∘f and for plot2 we will plot g∘h.
# Note that h is continuous but not differentiable:defapproximate_derivative_of_h(x,epsilon=0.0001):return(h(x+epsilon)-h(x))/epsilon
By fiddling appropriately with our function h0(x) we could get h to be smooth. The main issue is derivatives at af. At other points, h is defined to be h0 or compositions of h0 with powers of f and g. Note that for values slightly bigger than af, h is given by h0. While for values slightly to the left of af, h is given by g−1∘h0∘f. Thus if we want the derivative to match at af, we would have to have
So we would have to choose h0 to satisfy g′(ag)h0′(af)=f′(af)h0′(bf).