spheres.stars.pure.spin_poly

spheres.stars.pure.spin_poly(spin, projective=False, homogeneous=False, cartesian=False, spherical=False, normalized=False, for_integration=False)[source]

Converts a spin into its Majorana polynomial, which is defined as follows:

\[p(z) = \sum_{m=-j}^{m=j} (-1)^{j+m} \sqrt{\frac{(2j)!}{(j-m)!(j+m)!}} a_{j+m} z^{j-m}\]

Here, the \(a\)’s run through the components of the spin in the \(\mid j, m\rangle\) representation. Note that \(\frac{(2j)!}{(j-m)!(j+m)!}\) amounts to: \(\binom{2j}{j+m}\), a binomial coefficient.

By default, returns the coefficients of the Majorana polynomial as an np.ndarray.

If projective=True, returns a function which takes an (array of) extended complex coordinate(s) as an argument, and which evaluates the polynomial at that/those point(s). Note that to evaluate the polynomial at \(\infty\), we flip the stereographic projection axis and evaluate the latter polynomial at 0 (and then complex conjugate). Insofar as pole flipping causes the highest degree term to become the lowest degree/constant term, evaluating at \(\infty\) amounts to returning the first coefficient.

If homogeneous=True, returns a function which takes a spinor (as an nd.array or qt.Qobj) and evaluates the (unnormalized) homogeneous Majorana polynomial:

\[p(z, w) = \sum_{m=-j}^{m=j} (-1)^{j+m} \sqrt{\frac{(2j)!}{(j-m)!(j+m)!}} a_{j+m} w^{j-m} z^{j+m}\]

If cartesian=True, returns a function with takes cartesian coordinates and evaluates the Majorana polynomial by first converting the cartesian coordinates to extended complex coordinates.

If spherical=True, returns a function with takes spherical coordinates and evaluates the Majorana polynomial by first converting the spherical coordinates to extended complex coordinates.

If normalized=True, returns the normalized versions of any of the above functions. Note that the normalized versions are no longer analytic/holomorphic. Given a extended complex coordinate \(z = re^{i\theta}\) (or \(\infty\)), the normalization factor is:

\[\frac{e^{-2ij\theta}}{(1+r^2)^j}\]

If \(z=\infty\), again since we flip the poles, we use \(z=0\).

If for_integration=True, returns normalized function that takes spherical coordinates, with an extra normalization factor of \(\sqrt{\frac{2j+1}{4\pi}}\) so that the integral over the sphere gives a normalized amplitude. Note that coordinates must be given in the form of [[\(\theta\)’s], [\(\phi\)’s]].

When normalized, evaluating the Majorana polynomial is equivalent to evaluating:

\[\langle -xyz \mid \psi \rangle\]

Where \(\mid xyz \rangle\) refers to the spin coherent state which has all its “stars” at cartesian coordinates \(x, y, z\), and \(\mid \psi \rangle\) is the spin in the \(\mid j, m\rangle\) representation. In other words, evaluating a normalized Majorana function at \(x, y, z\) is equivalent to evaluating:

spin_coherent(j, -xyz).dag()*spin

Which is the inner product between the spin and the spin coherent state antipodal to \(x, y, z\) on the sphere. Since the Majorana stars are zeros of this function, we can interpret them as picking out those directions for which there’s 0 probability that all the angular momentum is concentrated in the opposite direction. Insofar as we can think of each star as contributing a quantum of angular momentum \(\frac{1}{2}\) in that direction, naturally there’s no chance that all the angular momentum is concentrated opposite to any of those points. By the fundamental theorem of algebra, knowing these points is equivalent to knowing the entire quantum state.

Parameters
  • spin (qt.Qobj) – Spin-j state.

  • projective (bool, optional) – Whether to return Majorana polynomial as a function of an extended complex coordinate.

  • homogeneous (bool, optional) – Whether to return Majorana polynomial as a function of a spinor.

  • cartesian (bool, optional) – Whether to return Majorana polynomial as a function of cartesian coordinates on unit sphere.

  • spherical (bool, optional) – Whether to return Majorana polynomial as a function of spherical coordinates.

  • normalize (bool, optional) – Whether to normalize the above functions.

  • for_integration (bool, optional) – Extra normalization for integration.

Returns

poly – Either 2j+1 Majorana polynomial coefficients or else one of the above functions.

Return type

np.ndarray or func