Power of intersecting cycles and cosine of intersection angle¶
Exercise I.5.23.ii [1] $\newcommand{\Space}[3][]{\mathbb{#2}^{#3}_{#1}} \newcommand{\cycle}[3][]{{#1 C^{#2}_{#3}}} \newcommand{\realline}[3][]{#1 R^{#2}_{#3}} \newcommand{\bs}{\breve{\sigma}} \newcommand{\zcycle}[3][]{#1 Z^{#2}_{#3}} \newcommand{\SL}[1][2]{\mathrm{SL}_{#1}(\Space{R}{})} \newcommand{\rs}{\sigma_r} \newcommand{\lvec}[1]{\overrightarrow{#1}} $ Check for $\sigma=\pm 1$, that the $(\sigma,\sigma)$-power of two intersecting $\sigma$-cycles is the $\sigma$-cosine of the angle between the tangents to cycles at an intersecting point.
Solution. First we define the tangent of a cycle at a given point using implict derivatives. The routine defines an equation on a cycle to have given tangent at $(0,1)$.
from init_cycle import *
def has_tan(C,u,v,U,V):
return C.val([u,v]).diff(u)*U+C.val([u,v]).diff(v)*V==0
Some variables to use later.
U=realsymbol("U")
V=realsymbol("V")
U1=realsymbol("U1", "U_1")
V1=realsymbol("V1", "V_1")
Take two cycles both passing $(u,v)$ with given tangents $(U,V)$ and $(U_1,V_1)$.
C0=C.subject_to([C.passing([u,v]),has_tan(C,u,v,U,V)]).normalize_det()
C10=C1.subject_to([C1.passing([u,v]),has_tan(C1,u,v,U1,V1)]).normalize_det()
Just out of curiosity take a look on the explicit formula of C0
.
Latex(f"${C0.string()}$")
Tangent calculations:
T=V/U
T1=V1/U1
We check the formula $\cos^{-2}t +\mathrm{sign}(\sigma) \tan^{-2} t =1$ in elliptic and hyperbolic cases.
"Cycle product det-normalized cycles gives cosine of the angle in the elliptic case: %s" %\
(pow(C0.cycle_product(C10).normal()/2,-2)+sign*pow((T1-T)/(1-sign*T*T1),2)-1).normal().subs({sign : -1}).normal().is_zero()
"Cycle product det-normalized cycles gives cosine of the angle in the hyperbolic case: %s" %\
(pow(C0.cycle_product(C10).normal()/2,-2)+sign*pow((T1-T)/(1-sign*T*T1),2)-1).normal().subs({sign : 1}).normal().is_zero()
In parabolic cases we just output the value.
Latex("Par: $%s$" % pow(C0.cycle_product(C10).normal()/2,-2).subs({sign : 0}).normal())
Latex(f"Par: ${(pow(C0.cycle_product(C10).normal()/2,-2)+sign*pow((T1-T)/(1-sign*T*T1),2)-1).normal().subs({sign : 0}).normal()}$")
This notebook is a part of the MoebInv notebooks project [2] .
References¶
Vladimir V. Kisil. Geometry of Möbius Transformations: Elliptic, Parabolic and Hyperbolic Actions of $SL_2(\mathbb{R})$. Imperial College Press, London, 2012. Includes a live DVD.
Vladimir V. Kisil, MoebInv notebooks, 2019.