Icosahedral Symmetry
The icosahedral group is defined as the group of rotations that map the
icosahedron into itself. Placing two antipodal vertices along the ζ \zeta ζ axis
at ( 0 , 0 , ± 1 ) (0,0,\pm 1) ( 0 , 0 , ± 1 ) , and one next-nearest vertex at
n ^ n = ( − sin 2 α , 0 , cos 2 α ) {\bf\hat n}_n = (-\sin\,2\alpha,0,\cos\,2\alpha) n ^ n = ( − sin 2 α , 0 , cos 2 α ) , we find that there is a two-fold symmetry
about the axis n ^ 2 : = ( − sin α , 0 , cos α ) {\bf \hat n}_2:=(-\sin\alpha,0,\cos\alpha) n ^ 2 := ( − sin α , 0 , cos α ) , in addition to a
five-fold symmetry about n ^ 5 : = ( 0 , 0 , 1 ) {\bf \hat n}_5:=(0,0,1) n ^ 5 := ( 0 , 0 , 1 ) :
I V : O ( n ^ 2 , π ) V : O ( n ^ 5 , 2 π / 5 ) \begin{align*}
IV:&\quad {\mathcal O}({\bf\hat n}_2, \pi)\\
V:&\quad {\mathcal O}({\bf\hat n}_5, 2\pi/5)
\end{align*} I V : V : O ( n ^ 2 , π ) O ( n ^ 5 , 2 π /5 ) It can be shown that the above symmetry generators can be combined to reproduce
the 60-fold symmetries of the icosahedral group. In particular, the three-fold
symmetry of one of the icosahedron faces nearest to the top vertex can be written as
O C ( n ^ 3 , 2 π / 3 ) = O B ( n ^ 5 , − 2 π / 5 ) O A ( n ^ 2 , π ) , {\mathcal O}_C({\bf\hat n}_3, 2\pi/3) = {\mathcal O}_B({\bf\hat n}_5, -2\pi/5)\,{\mathcal O}_A({\bf\hat n}_2,
\pi) \,, O C ( n ^ 3 , 2 π /3 ) = O B ( n ^ 5 , − 2 π /5 ) O A ( n ^ 2 , π ) , given an appropriate choice of n ^ 2 {\bf\hat n}_2 n ^ 2 (or α \alpha α ) and n ^ 3 {\bf\hat n_3} n ^ 3 .
To determine α \alpha α , note that the { a , d } \{{\bf a}, d\} { a , d } parametrizations of the
above transformations are
a 1 A = − sin α , a 3 A = cos α , a 2 A = d A = 0 a 1 B = a 2 B = 0 , a 3 B = − sin ( π / 5 ) , d B = cos ( π / 5 ) . \begin{align*}
a_{1A} = -\sin\alpha\,,\quad a_{3A} = \cos\alpha \,,\quad a_{2A} = d_A =0 \\
a_{1B} = a_{2B} = 0 \,,\quad a_{3B} = -\sin(\pi/5) \,,\quad d_B = \cos(\pi/5) \,.
\end{align*} a 1 A = − sin α , a 3 A = cos α , a 2 A = d A = 0 a 1 B = a 2 B = 0 , a 3 B = − sin ( π /5 ) , d B = cos ( π /5 ) . Recalling the composition property of the d d d parameter, d C = − a 1 A a 1 B − a 2 A a 2 B − a 3 A a 3 B + d A d B d_C = -a_{1A} a_{1B} - a_{2A} a_{2B} - a_{3A} a_{3B} + d_A d_B d C = − a 1 A a 1 B − a 2 A a 2 B − a 3 A a 3 B + d A d B , we find that
d C = cos α sin ( π / 5 ) = cos ( π / 3 ) = 1 2 d_C = \cos\alpha\,\sin(\pi/5) = \cos(\pi/3) = \frac12 d C = cos α sin ( π /5 ) = cos ( π /3 ) = 2 1 for the composed transformation. Therfore,
cos α = 1 2 sin ( π / 5 ) . \cos\alpha = \frac1{2\,\sin(\pi/5)} \,. cos α = 2 sin ( π /5 ) 1 . Similarly,
a 1 C = a 1 A d B + a 1 B d A − a 2 A a 3 B + a 2 B a 3 A = − sin α cos ( π / 5 ) a 2 C = a 2 A d B + a 2 B d A − a 3 A a 1 B + a 3 B a 1 A = sin α sin ( π / 5 ) a 3 C = a 3 A d B + a 3 B d A − a 1 A a 2 B + a 1 B a 2 A = cos α cos ( π / 5 ) \begin{align*}
a_{1C} &= a_{1A} d_B + a_{1B} d_A - a_{2A} a_{3B} + a_{2B} a_{3A} = -\sin\alpha\,\cos(\pi/5)\\
a_{2C} &= a_{2A} d_B + a_{2B} d_A - a_{3A} a_{1B} + a_{3B} a_{1A} = \sin\alpha\,\sin(\pi/5) \\
a_{3C} &= a_{3A} d_B + a_{3B} d_A - a_{1A} a_{2B} + a_{1B} a_{2A} = \cos\alpha\,\cos(\pi/5)
\end{align*} a 1 C a 2 C a 3 C = a 1 A d B + a 1 B d A − a 2 A a 3 B + a 2 B a 3 A = − sin α cos ( π /5 ) = a 2 A d B + a 2 B d A − a 3 A a 1 B + a 3 B a 1 A = sin α sin ( π /5 ) = a 3 A d B + a 3 B d A − a 1 A a 2 B + a 1 B a 2 A = cos α cos ( π /5 ) which together imply that
n ^ 3 = 2 3 ( − sin α cos ( π / 5 ) , sin α sin ( π / 5 ) , cos α cos ( π / 5 ) ) . {\bf\hat n}_3 = \frac2{\sqrt{3}}(-\sin\alpha\,\cos(\pi/5), \sin\alpha\,\sin(\pi/5), \cos\alpha\,\cos(\pi/5)) \,. n ^ 3 = 3 2 ( − sin α cos ( π /5 ) , sin α sin ( π /5 ) , cos α cos ( π /5 )) . (n ^ 3 {\bf\hat n}_3 n ^ 3 is guaranteed to be unit-normalized whenever α \alpha α satisfies the condition above.)
Moving to stereographically-projected coordinates, the vertex at n ^ n {\bf\hat n}_n n ^ n is given by
z n : = − sin 2 α ( 1 − cos 2 α ) = − cot α . z_n := -\frac{\sin 2\alpha}{(1-\cos 2\alpha)} = -\cot\alpha \,. z n := − ( 1 − cos 2 α ) sin 2 α = − cot α . However, we will find that it is more convenient to instead write
z n = ϵ 2 + ϵ 3 , w h e r e ϵ : = e 2 π i / 5 , z_n = \epsilon^2 + \epsilon^3 \,,\quad{\rm where}\quad \epsilon:=e^{2\pi i /5} \,, z n = ϵ 2 + ϵ 3 , where ϵ := e 2 πi /5 , since the other four vertices related to z n z_n z n under the five-fold symmetry
transformation V V V are given by
z k : = ϵ k z n , k ∈ { 1 , 2 , 3 , 4 , 5 } . z_k := \epsilon^k\,z_n \,,\quad k \in \{1, 2, 3, 4, 5\} \,. z k := ϵ k z n , k ∈ { 1 , 2 , 3 , 4 , 5 } . from sympy import I, Matrix, N, Poly, Rational, conjugate, cos, diff, oo, pi, simplify, sin, sqrt, symbols, tan, Eq, solve, evalf, acos, csc # fmt: skip
u, v = symbols("u v")
(2 * cos(pi / 5)).evalf()((1 + sqrt(5)) / 2).evalf()The equivalence of the two expressions above follows from the defining relation
ϵ 5 = 1 ⟹ ϵ + ϵ 2 + ϵ 3 + ϵ 4 + ϵ 5 = 0 \epsilon^5 = 1 \quad\implies\quad \epsilon + \epsilon^2 + \epsilon^3 + \epsilon^4 + \epsilon^5 = 0 ϵ 5 = 1 ⟹ ϵ + ϵ 2 + ϵ 3 + ϵ 4 + ϵ 5 = 0 which together imply that
( ϵ 4 − ϵ ) ( ϵ 2 − ϵ 3 ) = ϵ + ϵ 4 − ϵ 2 − ϵ 3 = 5 (\epsilon^4 - \epsilon)(\epsilon^2 - \epsilon^3) = \epsilon + \epsilon^4 - \epsilon^2 - \epsilon^3 = \sqrt{5} ( ϵ 4 − ϵ ) ( ϵ 2 − ϵ 3 ) = ϵ + ϵ 4 − ϵ 2 − ϵ 3 = 5 (as can be checked by squaring the second equality above). Noting that sin ( π / 5 ) = ( ϵ 2 − ϵ 3 ) / 2 i \sin (\pi/5) = (\epsilon^2-\epsilon^3)/2i sin ( π /5 ) = ( ϵ 2 − ϵ 3 ) /2 i , the previous condition on α \alpha α becomes
cos α = i ϵ 2 − ϵ 3 = i 5 ( ϵ 4 − ϵ ) ⟹ sin α = i 5 ( ϵ 3 − ϵ 2 ) \cos\alpha = \frac i{\epsilon^2-\epsilon^3} =\frac i{\sqrt{5}}(\epsilon^4 - \epsilon) \quad\implies\quad \sin\alpha = \frac i{\sqrt{5}}(\epsilon^3-\epsilon^2) cos α = ϵ 2 − ϵ 3 i = 5 i ( ϵ 4 − ϵ ) ⟹ sin α = 5 i ( ϵ 3 − ϵ 2 ) and so
z n = − cot α = ( ϵ − ϵ 4 ) ( ϵ 3 − ϵ 2 ) × ( ϵ 2 + ϵ 3 ) ( ϵ 2 + ϵ 3 ) = ϵ 2 + ϵ 3 . z_n = - \cot\alpha = \frac{(\epsilon - \epsilon^4)}{(\epsilon^3-\epsilon^2)} \times\frac{(\epsilon^2+\epsilon^3)}{(\epsilon^2+\epsilon^3)} = \epsilon^2+\epsilon^3 \,. z n = − cot α = ( ϵ 3 − ϵ 2 ) ( ϵ − ϵ 4 ) × ( ϵ 2 + ϵ 3 ) ( ϵ 2 + ϵ 3 ) = ϵ 2 + ϵ 3 . Across from z n z_n z n is an antipodal vertex z m : = − 1 / z n z_m:= -1/z_n z m := − 1/ z n given by
z m = − 1 ( ϵ 2 + ϵ 3 ) = − 1 × ( ϵ + ϵ 4 ) ( ϵ 2 + ϵ 3 ) ( ϵ + ϵ 4 ) = ϵ + ϵ 4 . z_m = -\frac1{(\epsilon^2+\epsilon^3)} = \frac{-1\times(\epsilon+\epsilon^4)}{(\epsilon^2+\epsilon^3)(\epsilon+\epsilon^4)} = \epsilon+\epsilon^4 \,. z m = − ( ϵ 2 + ϵ 3 ) 1 = ( ϵ 2 + ϵ 3 ) ( ϵ + ϵ 4 ) − 1 × ( ϵ + ϵ 4 ) = ϵ + ϵ 4 . In addition to the vertices z 0 = 0 z_0 = 0 z 0 = 0 , z ∞ = ∞ z_\infty = \infty z ∞ = ∞ and the five z k z_k z k (where z 5 = z n z_5 = z_n z 5 = z n ), the remaining five are related to z m z_m z m under the five-fold symmetry
transformation V V V as follows:
z k : = ϵ k z m , k ∈ { 6 , 7 , 8 , 9 , 10 } z_k := \epsilon^k\,z_m \,,\quad k \in \{6, 7, 8, 9, 10\} z k := ϵ k z m , k ∈ { 6 , 7 , 8 , 9 , 10 } (where z 10 = z m z_{10} = z_m z 10 = z m , similarly to z n z_n z n ).
Relating z n z_n z n , z m z_m z m back to to their explicit values, we see that
z n = − 2 cos π / 5 : = − ϕ , z m = 2 cos 2 π / 5 = ϕ 2 − 2 z_n = - 2\,\cos\pi/5 := -\phi \,,\quad z_m = 2\,\cos 2\pi/5 = \phi^2- 2 z n = − 2 cos π /5 := − ϕ , z m = 2 cos 2 π /5 = ϕ 2 − 2 (where the last equality follows from the cosine half-angle formula). Recalling that z n z_n z n and z m z_m z m are antipodal, we see that ϕ \phi ϕ must satisfy
z n z m = − 1 ↔ ( ϕ + 1 ) ( ϕ 2 − ϕ − 1 ) = 0 . z_n\,z_m = -1 \quad\leftrightarrow\quad (\phi+1)(\phi^2 - \phi -1) =0 \,. z n z m = − 1 ↔ ( ϕ + 1 ) ( ϕ 2 − ϕ − 1 ) = 0 . # Check of the above
z_n, z_m, phi = symbols("z_n z_m phi")
num = z_n * z_m + 1
Eq(num, 0)solve(num.subs(z_n, -phi).subs(z_m, phi**2 - 2), phi)[-1, 1/2 - sqrt(5)/2, 1/2 + sqrt(5)/2]
[-1.00000000000000, -0.618033988749895, 1.61803398874989]
Therefore, ϕ \phi ϕ is the golden ratio : ϕ = ( 1 + 5 ) / 2 \phi = (1+\sqrt{5})/2 ϕ = ( 1 + 5 ) /2 (since ϕ \phi ϕ , by definition, is positive). Additionally, since the ϵ \epsilon ϵ ’s satisfy ∑ k = 1 5 ϵ k = 0 \sum_{k=1}^5\epsilon^k = 0 ∑ k = 1 5 ϵ k = 0 , we find
z n + z m + 1 = 0 , z n 2 + z n − 1 = 0 , z m 2 + z m − 1 = 0 , z_n + z_m + 1 =0 \,,\quad z_n^2+z_n-1=0\,,\quad z_m^2+z_m-1=0\,, z n + z m + 1 = 0 , z n 2 + z n − 1 = 0 , z m 2 + z m − 1 = 0 , which is consistent with the above.
Lastly, the homogeneous transformation corresponding to the symmetry
transformation I V IV I V is given by
u ′ = i cos α u − i sin α v = 1 5 ( ϵ − ϵ 4 ) u + 1 5 ( ϵ 3 − ϵ 2 ) v v ′ = − i sin α u − i cos α v = 1 5 ( ϵ 3 − ϵ 2 ) u − 1 5 ( ϵ − ϵ 4 ) v , \begin{align*}
u' = i\,\cos\alpha \, u - i\,\sin\alpha\,v &= \frac1{\sqrt{5}}\left(\epsilon - \epsilon^4\right) u +\frac1{\sqrt{5}}\left(\epsilon^3 - \epsilon^2\right) v \\
v' = -i\,\sin\alpha\,u - i\,\cos\alpha\, v &= \frac1{\sqrt{5}}\left(\epsilon^3 - \epsilon^2\right) u -\frac1{\sqrt{5}}\left(\epsilon - \epsilon^4\right) v \,,
\end{align*} u ′ = i cos α u − i sin α v v ′ = − i sin α u − i cos α v = 5 1 ( ϵ − ϵ 4 ) u + 5 1 ( ϵ 3 − ϵ 2 ) v = 5 1 ( ϵ 3 − ϵ 2 ) u − 5 1 ( ϵ − ϵ 4 ) v , whereas transformation V V V corresponds to u ′ = ϵ 1 / 2 u u' = \epsilon^{1/2}\, u u ′ = ϵ 1/2 u , v ′ = ϵ − 1 / 2 v v' = \epsilon^{-1/2}\, v v ′ = ϵ − 1/2 v .
Icosahedral Polynomial Invariants ¶ Multiplying together the homogeneous polynomials ( u − z k v ) (u-z_k\,v) ( u − z k v ) for
k ∈ { 0 , 1 , … , 10 , ∞ } k\in \{0,1,\ldots,10,\infty\} k ∈ { 0 , 1 , … , 10 , ∞ } , we find
f ( u , v ) = ∏ k ( u − z k v ) = u v ( u 10 + 11 u 5 v 5 − v 10 ) . f(u,v) = \prod_k\left(u - z_k\,v\right) = uv\left(u^{10}+11\,u^5v^5-v^{10}\right) \,. f ( u , v ) = k ∏ ( u − z k v ) = uv ( u 10 + 11 u 5 v 5 − v 10 ) . # Check of the above:
from functools import reduce
# e = exp(2 * pi * I / 5)
e = symbols("e")
n = e**2 + e**3
m = e + e**4
iso_verts = []
for i in range(5):
iso_verts.append(n * e**i)
iso_verts.append(m * e**i)
f = u * v * reduce(lambda x, y: x * y, [u - x * v for x in iso_verts])
fGiven the complexity of this expression, it makes sense to introduce a function which will efficiently expand out any polynomial and ϵ \epsilon ϵ and enforce the conditions
ϵ 5 = 1 , ϵ 4 = − ϵ 3 − ϵ 2 − ϵ − 1 \epsilon^5 = 1 \,,\qquad \epsilon^4 = - \epsilon^3 - \epsilon^2 - \epsilon - 1 ϵ 5 = 1 , ϵ 4 = − ϵ 3 − ϵ 2 − ϵ − 1 such that the maximum power of ϵ \epsilon ϵ appearing is 3. These considerations motivate the definition of the function e_simp() below:
def e_simp(expr, e, full=True, cleanup=True):
result = Poly(expr, e)
e_coeffs = reversed(result.all_coeffs())
simp_coeffs = [0] * 5
# enforce e**5 = 1
for i, coeff in enumerate(e_coeffs):
simp_coeffs[i % 5] += coeff
# enforce e**4 = - e**3 - e**2 - e - 1
if full:
simp_coeffs = [simp_coeffs[i] - simp_coeffs[4] for i in range(4)]
if cleanup:
return simplify(Poly.from_list(reversed(simp_coeffs), e).as_expr())
return Poly.from_list(reversed(simp_coeffs), e).as_expr()
f = e_simp(f, e)
fAs a second check, it’s worth pointing out that, for any real antipodal pair
( z n , z m ) (z_n, z_m) ( z n , z m ) with z m = − 1 / z n z_m=-1/z_n z m = − 1/ z n , the following result holds:
$$
\begin{aligned}
P(u,v,z_n,z_m) :=\prod_{k=1}^5\left(u - \epsilon^k,z_n,v\right)\left(u - \epsilon^k,z_m,v\right) &= \prod_{k=1}^5\left[u^2-\epsilon^k\left(z_n + z_m \right),uv-\epsilon^{2k},v^2\right] \
&= u^{10} - \left(z_n^5 + z_m^5\right)u^5v^5 - v^{10} ,.
\end{aligned}
No input for math node
from utils import reduce_multiply
e_simp(
reduce_multiply([(u - e**k * z_n * v) * (u - z_m * e**k * v) for k in range(5)]),
e,
cleanup=False,
)# Second check:
z_n = symbols("z_n")
def antipodal_pair(m):
return u**2 - e**m * (z_n - 1 / z_n) * u * v - e ** (2 * m) * v**2
f2 = reduce(lambda x, y: x * y, [antipodal_pair(m) for m in range(5)])
e_simp(f2, e)This, combined with the product ( u − z 0 v ) ( u − z ∞ v ) = u v (u-z_0\,v)(u-z_\infty\,v) = uv ( u − z 0 v ) ( u − z ∞ v ) = uv , demonstrates
the expected formula for the polynomial invariant f ( u , v ) f(u,v) f ( u , v ) associated with the
icosahedral vertices, since
z n 5 = z n ( 1 − z n ) ( 1 − z n ) = z n [ 1 − 2 z n + ( 1 − z n ) ] = 2 z n − 3 ( 1 − z n ) = 5 z n − 3 \begin{aligned}
z_n^5 &= z_n\left(1-z_n\right)\left(1-z_n\right) \\
&= z_n\left[1-2\,z_n+\left(1-z_n\right)\right] = 2\,z_n -3\,\left(1-z_n\right) \\
&= 5\,z_n - 3
\end{aligned} z n 5 = z n ( 1 − z n ) ( 1 − z n ) = z n [ 1 − 2 z n + ( 1 − z n ) ] = 2 z n − 3 ( 1 − z n ) = 5 z n − 3 and so
1 z n 5 − z n 5 = 1 ( 5 z n − 3 ) × ( 5 z m − 3 5 z m − 3 ) − ( 5 z n − 3 ) = 5 z m − 3 − 25 − 15 ( z n + z m ) + 9 − ( 5 z n − 3 ) = − 5 ( z n + z m ) + 6 = 11 . \begin{aligned}
\frac1{z_n^5}-z_n^5 &= \frac1{\left(5\,z_n - 3\right)}\times\left(\frac{5\,z_m-3}{5\,z_m-3}\right) - \left(5\,z_n - 3\right) \\
&=\frac{5\,z_m-3}{-25 -15\left(z_n+z_m\right)+9} - \left(5\,z_n - 3\right) \\
&=-5\left(z_n+z_m\right)+6 \\
&= 11 \,.
\end{aligned} z n 5 1 − z n 5 = ( 5 z n − 3 ) 1 × ( 5 z m − 3 5 z m − 3 ) − ( 5 z n − 3 ) = − 25 − 15 ( z n + z m ) + 9 5 z m − 3 − ( 5 z n − 3 ) = − 5 ( z n + z m ) + 6 = 11 . (The above follows from repeated use of the defining relations z n 2 = 1 − z n z_n^2 = 1-z_n z n 2 = 1 − z n , z n z m = − 1 z_n\,z_m = -1 z n z m = − 1 , and z n + z m = − 1 z_n+z_m=-1 z n + z m = − 1 .)
# Check of the above:
e_simp(n**5, e).equals(5 * n - 3)e_simp(-(m**5) - n**5, e)It should be straightforward to check that f ( u , v ) f(u,v) f ( u , v ) is indeed a polynomial
invariant under transformations I V IV I V , V V V :
f ( u ′ , v ′ ) = f ( u , v ) . f(u',v') = f(u,v) \,. f ( u ′ , v ′ ) = f ( u , v ) . # Check of the above, under IV:
orth1 = 1 / sqrt(5) * Matrix([[e - e**4, e**3 - e**2], [e**3 - e**2, e**4 - e]])
u, v = symbols("u v")
U, V = symbols("U V")
uv = Matrix([u, v])
uv_prime = orth1 * uv
f_prime = f.subs([(u, U), (v, V)]).subs([(U, uv_prime[0]), (V, uv_prime[1])])
e_simp(f_prime, e).equals(f)# Check of the above, under V:
orth2 = Matrix([[sqrt(e), 0], [0, 1 / sqrt(e)]])
uv = Matrix([u, v])
uv_prime = orth2 * uv
f_prime = f.subs([(u, U), (v, V)]).subs([(U, uv_prime[0]), (V, uv_prime[1])])
e_simp(e**5 * f_prime, e).equals(f)Computing the Hessian of f f f , we find H e s s [ f ] ( u , v ) = − 121 H ( u , v ) {\rm Hess}[f](u,v) = -121\,H(u,v) Hess [ f ] ( u , v ) = − 121 H ( u , v ) where
H ( u , v ) : = u 20 + v 20 − 228 ( u 15 v 5 − u 5 v 15 ) + 494 u 10 v 10 . H(u,v) := u^{20} + v^{20} - 228\left(u^{15}\,v^5-u^5\,v^{15}\right) + 494\,u^{10}\,v^{10} \,. H ( u , v ) := u 20 + v 20 − 228 ( u 15 v 5 − u 5 v 15 ) + 494 u 10 v 10 . # Check of the above:
from utils import hessian
H = simplify(hessian(f, u, v) / (-121))
HWe shall see later that this Hessian is precisely the polynomial invariant for the face centres of the icosahedron.
The Rotated Octahedron ¶ Earlier, we demonstrated the that function t ( u , v ) = u 5 v − u v 5 t(u,v) = u^5\,v-u\,v^5 t ( u , v ) = u 5 v − u v 5 was an
absolute invariant under tetrahedral symmetry, and that its square was an
absolute invariant under octahedral symmetry. We now wish to consider how this
particular product of roots changes under a rotation of the octahedron about its
centre.
To this end, consider the rotated points z k ′ z'_k z k ′ , related to z k ∈ { 0 , ∞ , ± 1 , ± i } z_k \in \{0,
\infty, \pm 1,\pm i\} z k ∈ { 0 , ∞ , ± 1 , ± i } by
z k ′ ( α , θ ) = e i θ [ cos ( α / 2 ) z k + sin ( α / 2 ) − sin ( α / 2 ) z k + cos ( α / 2 ) ] . z'_k(\alpha, \theta) = e^{i\,\theta}\left[\frac{\cos(\alpha/2)\,z_k+\sin(\alpha/2)}{-\sin(\alpha/2)\,z_k + \cos(\alpha/2)}\right]\,. z k ′ ( α , θ ) = e i θ [ − sin ( α /2 ) z k + cos ( α /2 ) cos ( α /2 ) z k + sin ( α /2 ) ] . (The rotation above corresponds to a rotation about the η \eta η axis by an angle α \alpha α , followed by a rotation about the ζ \zeta ζ axis by an angle θ \theta θ .) Computing the product t ′ ( u , v ) : = ∏ k ( u − z k ′ v ) t'(u,v) := \prod_{k}(u-z_k'\,v) t ′ ( u , v ) := ∏ k ( u − z k ′ v ) we find
t ′ ( u , v , tan ( 2 α ) , e i θ ) = u 6 + 4 u 5 v e i θ tan ( 2 α ) − 5 u 4 v 2 e 2 i θ − 5 u 2 v 4 e 4 i θ − 4 u v 5 e 5 i θ tan ( 2 α ) + v 6 e 6 i θ . \begin{align*}
t'(u,v, \tan(2\alpha), e^{i\theta}) &= u^6 + \frac{4\,u^5\,v\,e^{i\theta}}{\tan(2\alpha)}-5\,u^4\,v^2\,e^{2\,i\theta} \\
&-
5\,u^2\,v^4\,e^{4\,i\theta} - \frac{4\,u\,v^5\,e^{5\,i\theta}}{\tan(2\alpha)} + v^6\,e^{6\,i\theta} \,.
\end{align*} t ′ ( u , v , tan ( 2 α ) , e i θ ) = u 6 + tan ( 2 α ) 4 u 5 v e i θ − 5 u 4 v 2 e 2 i θ − 5 u 2 v 4 e 4 i θ − tan ( 2 α ) 4 u v 5 e 5 i θ + v 6 e 6 i θ . Note that the original expression for t ( u , v ) t(u,v) t ( u , v ) arises only in the singular limit
α → 0 \alpha\to 0 α → 0 .
# Check of the above:
def reduce_multiply(any_list):
return reduce(lambda x, y: x * y, any_list)
zs = [0, oo, 1, -1, I, -I]
def rotate(z, alpha, prephase=1):
if z is oo:
return -cos(alpha / 2) / sin(alpha / 2)
return (cos(alpha / 2) * prephase * z + sin(alpha / 2)) / (
-sin(alpha / 2) * prephase * z + cos(alpha / 2)
)
alpha, p, w = symbols("alpha p w")
zps = [rotate(z, alpha) for z in zs]
# p <--> exp(i*theta)
tp = reduce_multiply([u - p * z * v for z in zps])
tp = simplify(tp.expand())
tpIcosahedral Edge Midpoints ¶ If we now consider the product of 5 such functions, representing the 30 edge
midpoints of the icosahedron, with each inscribed octahedron rotated by e 2 π i / 5 e^{2\pi
i/5} e 2 πi /5 relative to one another, we find (introducing w w w as a stand-in for tan ( 2 α ) \tan(2\alpha) tan ( 2 α ) )
T ( u , v , w ) : = ∏ k = 1 5 t ′ ( u , v , w , e 2 π i k / 5 ) = u 30 + ( 580 w 4 + 1600 w 2 + 1024 w 5 ) ( u 25 v 5 − u 5 v 25 ) − ( 6725 w 4 + 11840 w 2 + 5120 w 4 ) ( u 20 v 10 + u 10 v 20 ) + v 30 . \begin{aligned}
T(u,v,w) &:= \prod_{k=1}^5 t'(u,v,w, e^{2\pi i k/5}) \\
&= u^{30} + \left(\frac{ 580\, w^4 + 1600 \, w^2 + 1024 }{w^5}\right)\left(u^{25}\,v^5-u^5\,v^{25}\right) \\
&- \left(\frac{ 6725 \,w^4 +11840 \,w^2 + 5120 }{w^4}\right)\left(u^{20}\,v^{10} + u^{10}\,v^{20}\right) + v^{30} \,.
\end{aligned} T ( u , v , w ) := k = 1 ∏ 5 t ′ ( u , v , w , e 2 πik /5 ) = u 30 + ( w 5 580 w 4 + 1600 w 2 + 1024 ) ( u 25 v 5 − u 5 v 25 ) − ( w 4 6725 w 4 + 11840 w 2 + 5120 ) ( u 20 v 10 + u 10 v 20 ) + v 30 . # Check of the above:
factors = [tp.subs(p, e**k) for k in range(5)]
T_uvw = reduce_multiply(factors)
T_uvw = Poly(T_uvw, u)
new_coeffs = []
for coeff in T_uvw.all_coeffs():
new_coeffs.append(e_simp(coeff, e))
T_uvw = Poly.from_list(new_coeffs, u).as_expr()
T_uvwLastly, recognizing that the icosahedral edge midpoints are located at
cos α = 1 2 sin ( π / 5 ) ↔ cot α = ϕ , \cos\alpha = \frac1{2\,\sin(\pi/5)} \quad\leftrightarrow\quad \cot\alpha = \phi \,, cos α = 2 sin ( π /5 ) 1 ↔ cot α = ϕ , we find that w : = tan ( 2 α ) = 2 ϕ / ( ϕ 2 − 1 ) = 2 w:=\tan(2\alpha) = 2\phi/(\phi^2-1) = 2 w := tan ( 2 α ) = 2 ϕ / ( ϕ 2 − 1 ) = 2 and so
T ( u , v ) : = T ( u , v , 2 ) = u 30 + 522 ( u 25 v 5 − u 5 v 25 ) − 10005 ( u 20 v 10 + u 10 v 20 ) + v 30 . \begin{align*}
T(u,v) := T(u,v, 2) &= u^{30} +522\left(u^{25}\,v^5-u^5\,v^{25}\right) \\
&- 10005\left(u^{20}\,v^{10} + u^{10}\,v^{20}\right) + v^{30} \,.
\end{align*} T ( u , v ) := T ( u , v , 2 ) = u 30 + 522 ( u 25 v 5 − u 5 v 25 ) − 10005 ( u 20 v 10 + u 10 v 20 ) + v 30 . # Check of the above:
phi = symbols("phi")
simplify((2 * phi / (phi**2 - 1)).subs(phi, (1 + sqrt(5)) / 2))T = simplify(T_uvw.subs(tan(2 * alpha), 2))
TWe also note in passing that T ( u , v ) T(u,v) T ( u , v ) can also be expressed as
T ( u , v ) = ∏ k = 1 5 t I ( u ϵ − k / 2 , v ϵ k / 2 ) = ∏ k = 1 5 ϵ 15 − 3 k t I ( u , v ϵ k ) T(u,v) = \prod_{k=1}^5 t_I(u\,\epsilon^{-k/2},v\,\epsilon^{k/2}) = \prod_{k=1}^5 \epsilon^{15-3k} \,t_I(u,v\,\epsilon^k) T ( u , v ) = k = 1 ∏ 5 t I ( u ϵ − k /2 , v ϵ k /2 ) = k = 1 ∏ 5 ϵ 15 − 3 k t I ( u , v ϵ k ) where
t I ( u , v ) : = ( u 2 + v 2 ) ( u 2 − 2 z n u v − v 2 ) ( u 2 − 2 z m u v − v 2 ) . t_I(u,v) := (u^2+v^2)(u^2-2z_n\,uv-v^2)(u^2-2z_m\,uv-v^2) \,. t I ( u , v ) := ( u 2 + v 2 ) ( u 2 − 2 z n uv − v 2 ) ( u 2 − 2 z m uv − v 2 ) . The factor ϵ 15 − 3 k \epsilon^{15-3k} ϵ 15 − 3 k is engineered such that only non-negative integer powers of
ϵ \epsilon ϵ appear in the resulting expression, which allows more straightforward
simplification. (Recall that ϵ 5 = ϵ 15 = 1 \epsilon^5=\epsilon^{15} = 1 ϵ 5 = ϵ 15 = 1 .)
# Check of the above:
tI = (u**2 + v**2) * (u**2 - 2 * n * u * v - v**2) * (u**2 - 2 * m * u * v - v**2)
e_simp(
reduce(
lambda x, y: x * y,
[e ** (15 - 3 * k) * tI.subs(v, v * e**k).expand() for k in range(5)],
),
e,
)Icosahedral Face Centres ¶ The icosahedral face centres nearest to the vertex n 5 = ( 0 , 0 , + 1 ) {\bf n}_5 = (0,0,+1) n 5 = ( 0 , 0 , + 1 ) are given by
w i = ϵ i − 1 w 1 , i ∈ { 1 , 2 , 3 , 4 , 5 } w_i = \epsilon^{i-1}\,w_1 \,,\qquad i\in\{1,2,3,4,5\} w i = ϵ i − 1 w 1 , i ∈ { 1 , 2 , 3 , 4 , 5 } where we choose w 1 w_1 w 1 to be the (6 π / 5 6\pi/5 6 π /5 )-rotated stereographic projection of n 3 {\bf n}_3 n 3 :
w 1 = ϵ 3 ( − sin α e − i π / 5 3 / 2 − cos α cos π / 5 ) = 2 sin α 3 + z n cos α . w_1 = \epsilon^3\left(\frac{-\sin\alpha\,e^{-i\pi/5}}{\sqrt{3}/2 - \cos\alpha\,\cos\pi/5}\right) = \frac{2\,\sin\alpha}{\sqrt{3} + z_n\,\cos\alpha}\,. w 1 = ϵ 3 ( 3 /2 − cos α cos π /5 − sin α e − iπ /5 ) = 3 + z n cos α 2 sin α . (The choice of rotating by 6 π / 5 6\pi/5 6 π /5 is made such that w 1 w_1 w 1 is positive and real.)
# Check of the above:
alpha = acos(1 / 2 / sin(pi / 5))
w_1 = 2 * sin(alpha) / (sqrt(3) + z_n * cos(alpha))
w1_val = w_1.subs(z_n, -(1 + sqrt(5)) / 2).evalf()
w1_valDefining k : = 3 / cos α k:=\sqrt{3} / \cos\alpha k := 3 / cos α , and noting that
1 cos 2 α = 2 1 + cos 2 α = 2 5 1 + 5 = 1 ϕ ( 2 ϕ − 1 ) = 3 + z n ⟹ k 2 = 3 ( 3 + z n ) , \begin{aligned}
\frac1{\cos^2\alpha} = \frac2{1+\cos2\alpha} &= \frac{2\sqrt{5}}{1+\sqrt{5}} = \frac1{\phi}(2\,\phi-1) = 3+z_n \\
\implies k^2 &= 3(3+z_n) \,,
\end{aligned} cos 2 α 1 = 1 + cos 2 α 2 ⟹ k 2 = 1 + 5 2 5 = ϕ 1 ( 2 ϕ − 1 ) = 3 + z n = 3 ( 3 + z n ) , we find that we can simplify the expression for w 1 w_1 w 1 as follows:
w 1 = 2 tan α ( k + z n ) × ( k − z n ) ( k − z n ) = 2 ( − 1 / z n ) ( k − z n ) k 2 − z n 2 = − 2 ( k − z n ) z n [ 3 ( 3 + z n ) − z n 2 ] = z n − k 2 ( 1 + z n ) \begin{aligned}
w_1 &= \frac{2\,\tan\alpha}{(k+z_n)} \times \frac{(k-z_n)}{(k-z_n)} = \frac{2\left(-1/z_n\right)(k-z_n)}{k^2-z_n^2}\\
&=\frac{-2(k-z_n)}{z_n\left[3(3+z_n)-z_n^2\right]} = \frac{z_n-k}{2(1+z_n)}
\end{aligned} w 1 = ( k + z n ) 2 tan α × ( k − z n ) ( k − z n ) = k 2 − z n 2 2 ( − 1/ z n ) ( k − z n ) = z n [ 3 ( 3 + z n ) − z n 2 ] − 2 ( k − z n ) = 2 ( 1 + z n ) z n − k where, in deriving the last equality, we make liberal use of the identity z n 2 = 1 − z n z_n^2 = 1-z_n z n 2 = 1 − z n when rewriting the denominator.
Since, for arbitrary A A A and B B B
1 A z n + B = A ( 1 + z n ) − B A 2 + A B − B 2 , \frac1{Az_n+B} = \frac{A(1+z_n)-B}{A^2+AB-B^2} \,, A z n + B 1 = A 2 + A B − B 2 A ( 1 + z n ) − B , we can also write 1 / ( 1 + z n ) = z n 1/(1+z_n) = z_n 1/ ( 1 + z n ) = z n (choosing A = B = 1 A=B=1 A = B = 1 in the above), which gives
w 1 = 1 − ( 1 + k ) z n 2 . w_1 = \frac{1-(1+k)z_n}2 \,. w 1 = 2 1 − ( 1 + k ) z n . This expression, with only positive powers of k k k and z n z_n z n , guarantee that
successive powers of w 1 w_1 w 1 can be easily simplified using the relations
k 2 = 3 ( 3 + z n ) k^2=3(3+z_n) k 2 = 3 ( 3 + z n ) , z n 2 = 1 − z n z_n^2 = 1-z_n z n 2 = 1 − z n .
# Check of the above:
k = sqrt(3) / cos(alpha)
w_1 = (1 - (1 + k) * z_n) / 2
w_1.subs(z_n, -(1 + sqrt(5)) / 2).evalf().equals(w1_val)w1h = (1 + (k - 1) * z_n) / 2
w1h.subs(z_n, -(1 + sqrt(5)) / 2).evalf()h1 = (-1 + (1 - k) * z_n) / 2
h1.subs(z_n, -(1 + sqrt(5)) / 2).evalf()((3 + sqrt(5) + sqrt(30 + 6 * sqrt(5))) / 4).evalf()((18 - 3 * (1 + sqrt(5))) * ((1 + sqrt(5)) ** 2)).expand()Using similar methods, one can easily show that the antipodal point w ^ 1 : = − 1 / w 1 {\hat
w}_1:= -1/w_1 w ^ 1 := − 1/ w 1 can be written
w ^ 1 = 1 + ( k − 1 ) z n 2 . {\hat w}_1 = \frac{1+(k-1)z_n}2 \,. w ^ 1 = 2 1 + ( k − 1 ) z n . Therefore, the product of polynomial factors with antipodal pairs, as in
(23) , are found to be
P ( u , v , w 1 , w ^ 1 ) = u 10 − ( w 1 5 + w ^ 1 5 ) u 5 v 5 − v 10 = u 10 − ( 64 − 100 z n ) u 5 v 5 − v 10 . \begin{aligned}
P(u,v,w_1,{\hat w}_1) &= u^{10} - (w_1^5+{\hat w}_1^5)u^5v^5-v^{10} \\
&= u^{10} - (64-100\,z_n)u^5v^5-v^{10} \,.
\end{aligned} P ( u , v , w 1 , w ^ 1 ) = u 10 − ( w 1 5 + w ^ 1 5 ) u 5 v 5 − v 10 = u 10 − ( 64 − 100 z n ) u 5 v 5 − v 10 . However, the above expression only accounts for half of the face centres of the
icosahedron.
The other 10 face centres can be found by using the twofold symmetry ( I V ) (IV) ( I V ) of
the icosahedron rotating w ^ 1 \hat w_1 w ^ 1 about n 2 {\bf n}_2 n 2 by π \pi π :
w 6 : = w ^ 1 z n + 1 w ^ 1 − z n = 2 + z n + k 2 . w_6 := \frac{\hat w_1\,z_n+1}{\hat w_1-z_n} = \frac{2+z_n+k}2 \,. w 6 := w ^ 1 − z n w ^ 1 z n + 1 = 2 2 + z n + k . From here, the other four face centres (related by symmetry V V V ) can be easily
determined by applying more powers of ϵ \epsilon ϵ , and their antipodal pairs are
given by
w ^ 6 : = − 1 w 6 = 2 + z n − k 2 . {\hat w}_6 := -\frac1{w_6} = \frac{2+z_n-k}2 \,. w ^ 6 := − w 6 1 = 2 2 + z n − k . w6 = (2 + z_n + k) / 2
w6.subs(z_n, -(1 + sqrt(5)) / 2).evalf()w6h = -1 / w6
w6h = (2 + z_n - k) / 2
w6h.subs(z_n, -(1 + sqrt(5)) / 2).evalf()Computing P ( u , v , w 6 , w ^ 6 ) P(u,v,w_6, {\hat w}_6) P ( u , v , w 6 , w ^ 6 ) as before, we find
P ( u , v , w 6 , w ^ 6 ) = u 10 − ( w 6 5 + w ^ 6 5 ) u 5 v 5 − v 10 = u 10 − [ 64 + 100 ( 1 + z n ) ] u 5 v 5 − v 10 . \begin{aligned}
P(u,v,w_6,{\hat w}_6) &= u^{10} - (w_6^5+{\hat w}_6^5)u^5v^5-v^{10} \\
&= u^{10} - [64+100(1+z_n)]u^5v^5-v^{10} \,.
\end{aligned} P ( u , v , w 6 , w ^ 6 ) = u 10 − ( w 6 5 + w ^ 6 5 ) u 5 v 5 − v 10 = u 10 − [ 64 + 100 ( 1 + z n )] u 5 v 5 − v 10 . Putting this all together, we find that the polynomial invariant resulting from
the product of all 20 icosahedral face centres is given by
H ( u , v ) = P ( u , v , w 1 , w ^ 1 ) P ( u , v , w 6 , w ^ 6 ) = u 20 − 228 ( u 15 v 5 − u 5 v 15 ) + 494 u 10 v 10 + v 20 . \begin{aligned}
H(u,v) &= P(u,v,w_1,{\hat w}_1) \,P(u,v,w_6,{\hat w}_6) \\
&=u^{20} - 228\left(u^{15}v^5 - u^5v^{15}\right)+494\,u^{10}v^{10}+v^{20} \,.
\end{aligned} H ( u , v ) = P ( u , v , w 1 , w ^ 1 ) P ( u , v , w 6 , w ^ 6 ) = u 20 − 228 ( u 15 v 5 − u 5 v 15 ) + 494 u 10 v 10 + v 20 . (The above results from the general product
( u 10 − X u 5 v 5 − v 10 ) ( u 10 − Y u 5 v 5 − v 10 ) = u 20 − ( X + Y ) ( u 15 v 5 − u 5 v 15 ) + ( X Y − 2 ) u 10 v 10 + v 20 \begin{aligned}
&\left(u^{10} - X\,u^5v^5-v^{10}\right)\left(u^{10} - Y\,u^5v^5-v^{10}\right) \\
&= u^{20}-(X+Y)\left(u^{15}v^5 - u^5v^{15}\right)+\left(XY-2\right)\,u^{10}v^{10}+v^{20}
\end{aligned} ( u 10 − X u 5 v 5 − v 10 ) ( u 10 − Y u 5 v 5 − v 10 ) = u 20 − ( X + Y ) ( u 15 v 5 − u 5 v 15 ) + ( X Y − 2 ) u 10 v 10 + v 20 where we take X = 64 − 100 z n X=64-100\,z_n X = 64 − 100 z n , Y = 64 + 100 ( 1 + z n ) Y=64+100(1+z_n) Y = 64 + 100 ( 1 + z n ) .
Lastly, we can verify that the polynomial invariants discussed above are interrelated as follows:
T 2 − H 3 = 1728 f 5 . T^2-H^3 = 1728\,f^5 \,. T 2 − H 3 = 1728 f 5 . # Check of the above
(T**2 - H**3).equals(1728 * f**5)Edge Midpoints Redux ¶ An entirely orthogonal approach to the computation above is to consider directly
the complex coordinates of each midpoint. We introduce here a calculus which can
be used to simplify expressions involving these quantities.
We begin by recalling that the icosahedral edge midpoint on the negative real
axis is given by
v 1 : = − sin α 1 − cos α = − cot ( α / 2 ) = − cot α − csc α = z n + j \begin{aligned}
v_1 &:= -\frac{\sin\alpha}{1-\cos\alpha} = -\cot\left(\alpha / 2\right) = -\cot\alpha-\csc\alpha \\
&= z_n +j
\end{aligned} v 1 := − 1 − cos α sin α = − cot ( α /2 ) = − cot α − csc α = z n + j where, in the last line, we define j : = − csc α j:=-\csc\alpha j := − csc α (recall that z n = − cot α z_n = -\cot\alpha z n = − cot α , as found earlier).
By directly computing the square of j j j , we can verify that j 2 = 2 − z n j^2=2-z_n j 2 = 2 − z n :
j 2 = 1 sin 2 α = 2 1 − cos 2 α = 2 1 − ( 1 / 5 ) = 2 5 ( 1 + 5 ) 4 = ( 2 ϕ − 1 ) ϕ = 2 + ϕ = 2 − z n . \begin{aligned}
j^2 &= \frac1{\sin^2\alpha} = \frac2{1-\cos2\alpha} \\
&=\frac2{1-(1/\sqrt{5})} =\frac{2\sqrt{5}(1+\sqrt{5})}4 \\
&=(2\phi-1)\phi = 2+\phi \\
&= 2-z_n \,.
\end{aligned} j 2 = sin 2 α 1 = 1 − cos 2 α 2 = 1 − ( 1/ 5 ) 2 = 4 2 5 ( 1 + 5 ) = ( 2 ϕ − 1 ) ϕ = 2 + ϕ = 2 − z n . # Check of the above:
j = -csc(alpha)
(j**2).subs(alpha, 1 / 2 * acos(1 / sqrt(5))).evalf().equals(
(2 - z_n).subs(z_n, -(1 + sqrt(5)) / 2).evalf()
)From here on out, it becomes quite straightforward to compute the invariant
polynomial: for example, the antipodal point to v 1 v_1 v 1 is
v ^ 1 = − 1 v 1 = − 1 z n + j × ( z n − j ) ( z n − j ) = z n − j 2 − z n − z n 2 = z n − j . \begin{aligned}
\hat v_1 &= -\frac1{v_1} = -\frac1{z_n+j}\times\frac{(z_n-j)}{(z_n-j)} \\
&=\frac{z_n-j}{2-z_n-z_n^2} = z_n -j \,.
\end{aligned} v ^ 1 = − v 1 1 = − z n + j 1 × ( z n − j ) ( z n − j ) = 2 − z n − z n 2 z n − j = z n − j . The next rung of midpoints can be expressed in terms of v 1 v_1 v 1 by applying a
five-fold rotation, a reflection in n ^ 2 {\bf \hat n}_2 n ^ 2 , and then three more
five-fold rotations (yielding the edge midpoint lying on the positive real
axis, which we refer to as v 9 v_9 v 9 ):
v 9 = ϵ 3 × ( ϵ v 1 z n + 1 ϵ v 1 − z n ) = ϵ 3 ( ϵ v 1 z n + 1 ) ( ϵ 4 v 1 − z n ) v 1 2 − z n z m v 1 + z n 2 = ϵ 3 ( ϵ v 1 z n + 1 ) ( ϵ 4 v 1 − z n ) j ( 2 z n + 1 ) − 2 z n + 4 = ϵ 3 ( ϵ v 1 z n + 1 ) ( ϵ 4 v 1 − z n ) [ j ( 2 z n + 1 ) − 4 + 2 z n ] 15 z n − 10 = − ϵ 3 ( ϵ v 1 z n + 1 ) ( ϵ 4 v 1 − z n ) [ j ( 2 z n + 1 ) − 4 + 2 z n ] [ 15 ( 1 + z n ) + 10 ] 25 = ( j − 1 ) ( 1 + z n ) . \begin{aligned}
v_9 &=\epsilon^3 \times\left(\frac{\epsilon\,v_1\,z_n+1}{\epsilon\,v_1-z_n}\right) \\
&=\frac{\epsilon^3(\epsilon\,v_1\,z_n+1)(\epsilon^4\,v_1-z_n)}{v_1^2-z_n\,z_m\,v_1+z_n^2} \\
&=\frac{\epsilon^3(\epsilon\,v_1\,z_n+1)(\epsilon^4\,v_1-z_n)}{j(2\,z_n+1)-2\,z_n+4} \\
&=\frac{\epsilon^3(\epsilon\,v_1\,z_n+1)(\epsilon^4\,v_1-z_n)[j(2\,z_n+1)-4+2\,z_n]}{15\,z_n-10} \\
&=-\frac{\epsilon^3(\epsilon\,v_1\,z_n+1)(\epsilon^4\,v_1-z_n)[j(2\,z_n+1)-4+2\,z_n][15(1+z_n)+10]}{25} \\
&=(j-1)(1+z_n) \,.
\end{aligned} v 9 = ϵ 3 × ( ϵ v 1 − z n ϵ v 1 z n + 1 ) = v 1 2 − z n z m v 1 + z n 2 ϵ 3 ( ϵ v 1 z n + 1 ) ( ϵ 4 v 1 − z n ) = j ( 2 z n + 1 ) − 2 z n + 4 ϵ 3 ( ϵ v 1 z n + 1 ) ( ϵ 4 v 1 − z n ) = 15 z n − 10 ϵ 3 ( ϵ v 1 z n + 1 ) ( ϵ 4 v 1 − z n ) [ j ( 2 z n + 1 ) − 4 + 2 z n ] = − 25 ϵ 3 ( ϵ v 1 z n + 1 ) ( ϵ 4 v 1 − z n ) [ j ( 2 z n + 1 ) − 4 + 2 z n ] [ 15 ( 1 + z n ) + 10 ] = ( j − 1 ) ( 1 + z n ) . # Check of the above:
v_1, j, z_n = symbols("v_1 j z_n")
num = (
-(e**3)
* (e * v_1 * z_n + 1)
* (e**4 * v_1 - z_n)
* (j * (2 * z_n + 1) - 4 + 2 * z_n)
* (15 * (1 + z_n) + 10)
)
num = (
num.expand()
.subs(v_1**2, z_n**2 + 2 * z_n * j + 2 - z_n)
.subs(v_1, j + z_n)
.expand()
.subs(j**2, 2 - z_n)
.expand()
)
numdef z_simp(expr, z_n):
"""
Reduces the polynomial in z_n using the identity z_n^2 = 1-z_n.
"""
poly = Poly(expr, z_n)
coeffs = poly.all_coeffs()
while len(coeffs) > 2:
top_factor = coeffs[0]
coeffs[1] -= top_factor
coeffs[2] += top_factor
coeffs.pop(0)
return Poly.from_list(coeffs, z_n).as_expr()
e_simp(z_simp(num, z_n).subs(z_n, e**2 + e**3), e).factor()We can also compute the antipodal point v ^ 9 \hat v_9 v ^ 9 by inverting the expression
above:
v ^ 9 = − 1 v 9 = − 1 ( j − 1 ) ( 1 + z n ) = − ( 1 + j ) z n 1 − z n = − ( j + 1 ) z n ( 2 + z n ) ( 1 − z n ) ( 2 + z n ) = − ( 1 + j ) ( 1 + z n ) . \begin{aligned}
\hat v_9 &= -\frac1{v_9}= -\frac1{(j-1)(1+z_n)} \\
&=-\frac{(1+j)z_n}{1-z_n} \\
&=-\frac{(j+1)z_n(2+z_n)}{(1-z_n)(2+z_n)} \\
&=-(1+j)(1+z_n) \,.
\end{aligned} v ^ 9 = − v 9 1 = − ( j − 1 ) ( 1 + z n ) 1 = − 1 − z n ( 1 + j ) z n = − ( 1 − z n ) ( 2 + z n ) ( j + 1 ) z n ( 2 + z n ) = − ( 1 + j ) ( 1 + z n ) . Since the three pairs of antipodal points ( i , − i ) (i,-i) ( i , − i ) , ( v 1 , v ^ 1 ) (v_1, \hat v_1) ( v 1 , v ^ 1 ) and ( v 9 , v ^ 9 ) (v_9,
\hat v_9) ( v 9 , v ^ 9 ) compromise one of the five octohedra, we now have a second way to
compute the polynomial invariant t I ( u , v ) t_I(u,v) t I ( u , v ) : since pairs of real antipodal points ( z , z ^ ) (z, \hat z) ( z , z ^ )
contribute a factor ( u 2 − ( z + z ^ ) u v − v 2 ) (u^2 - (z+\hat z)uv - v^2) ( u 2 − ( z + z ^ ) uv − v 2 ) , it’s sufficient to compute the sums
v 1 + v ^ 1 = 2 z n v 9 + v ^ 9 = − 2 ( 1 + z n ) = 2 z m . \begin{aligned}
v_1 + \hat v_1 &= 2\,z_n \\
v_9 + \hat v_9 &= - 2(1+z_n) = 2\,z_m \,.
\end{aligned} v 1 + v ^ 1 v 9 + v ^ 9 = 2 z n = − 2 ( 1 + z n ) = 2 z m . Therefore, the factor for this octohedron is given as before:
t 0 ( u , v ) = ( u 2 + v 2 ) ( u 2 − 2 z n u v − v 2 ) ( u 2 − 2 z m u v − v 2 ) . t_0(u,v) = (u^2+v^2)(u^2-2z_n\,uv-v^2)(u^2-2z_m\,uv-v^2) \,. t 0 ( u , v ) = ( u 2 + v 2 ) ( u 2 − 2 z n uv − v 2 ) ( u 2 − 2 z m uv − v 2 ) . The contributions to T ( u , v ) T(u,v) T ( u , v ) from the other 24 edge midpoints can be determined
by applying successive five-fold rotations about the ζ \zeta ζ axis:
t r ( u , v ) = ϵ 15 − 3 r t 0 ( u , v ϵ r ) = ϵ 15 − 3 r u 6 + 2 ϵ 10 − 2 r u 5 v − 5 ϵ 5 − r u 4 v 2 − 5 ϵ r u 2 v 4 − 2 ϵ 2 r u v 5 + ϵ 3 r v 6 . \begin{aligned}
t_r(u,v) &= \epsilon^{15 -3r}t_0(u,v\,\epsilon^{r}) \\
&= \epsilon^{15 -3r} u^6 + 2\,\epsilon^{10 -2r}\,u^5\,v - 5\,\epsilon^{5-r}\,u^4\,v^2 - 5\,\epsilon^r \,u^2\,v^4 -2\,\epsilon^{2r}\,u\,v^5 + \epsilon^{3r}\,v^6\,.
\end{aligned} t r ( u , v ) = ϵ 15 − 3 r t 0 ( u , v ϵ r ) = ϵ 15 − 3 r u 6 + 2 ϵ 10 − 2 r u 5 v − 5 ϵ 5 − r u 4 v 2 − 5 ϵ r u 2 v 4 − 2 ϵ 2 r u v 5 + ϵ 3 r v 6 . # Check of the above
from utils import z_simp
e, r = symbols("e r")
t_0 = (
(u**2 + v**2)
* (u**2 - 2 * z_n * u * v - v**2)
* (u**2 - 2 * (-1 - z_n) * u * v - v**2)
)
t_r = simplify(z_simp((e ** (15 - 3 * r) * t_0.subs(v, v * e**r)).expand(), z_n))
t_r
e_simp(t_r.subs(r, 3).expand().coeff(v**6), e).subs(e**3, -1 - e - e**2 - e**4).equals(
e**4
)For completeness, we also record for later use the corresponding Hessian of the
octahedral vertex function t r ( u , v ) t_r(u,v) t r ( u , v ) , representing the polynomial invariant for
the faces of each of the five inscribed octahedra:
W r ( u , v ) : = − 1 400 ⋅ H e s s [ t r ( u , v ) ] = ϵ 20 − 4 r u 8 − ϵ 15 − 3 r u 7 v + 7 ϵ 10 − 2 r u 6 v 2 + 7 ϵ 5 − r u 5 v 3 − 7 ϵ r u 3 v 5 + 7 ϵ 2 r u 2 v 6 + ϵ 3 r u v 7 + ϵ 4 r v 8 . \begin{aligned}
W_r(u,v) := -\frac{1}{400}\cdot \mathrm{Hess}[t_r(u,v)] &= \epsilon^{20-4r}\,u^8
- \epsilon^{15-3r}\,u^7v+
7\,\epsilon^{10-2r}\,u^6v^2+7\,\epsilon^{5-r}\,u^5v^3 \\
&\quad -7\,\epsilon^{r}\,u^3v^5+7\,\epsilon^{2r}\,u^2v^6 + \epsilon^{3r}\,uv^7
+\epsilon^{4r}\,v^8\,.
\end{aligned} W r ( u , v ) := − 400 1 ⋅ Hess [ t r ( u , v )] = ϵ 20 − 4 r u 8 − ϵ 15 − 3 r u 7 v + 7 ϵ 10 − 2 r u 6 v 2 + 7 ϵ 5 − r u 5 v 3 − 7 ϵ r u 3 v 5 + 7 ϵ 2 r u 2 v 6 + ϵ 3 r u v 7 + ϵ 4 r v 8 . # Check of the above
from utils import hessian
W_r = simplify(hessian(t_r, u, v).expand() / (-400))
W_re_simp(reduce(lambda x, y: x * y, [t_r.subs(r, x) for x in range(5)]), e)