Rotating square root cuts#
Show code cell content
import os
from typing import Any
import matplotlib.pyplot as plt
import numpy as np
import plotly.graph_objects as go
import sympy as sp
from ampform.io import aslatex
from ampform.sympy import unevaluated
from IPython.display import Image, Math, display
from ipywidgets import FloatSlider, VBox, interactive_output
from plotly.colors import DEFAULT_PLOTLY_COLORS
from plotly.subplots import make_subplots
STATIC_WEB_PAGE = {"EXECUTE_NB", "READTHEDOCS"}.intersection(os.environ)
See also
Lecture 17 on collision theory of the STRONG2020 HaSP School by Miguel Albaladejo.
There are multiple solutions for \(x\) to the equation \(y^2 = x\). The fact that we usually take \(y = \sqrt{x}\) with \(\sqrt{-1} = i\) to be ‘the’ solution to this equation is just a matter of convention. It would be more complete to represent the solution as a set of points in the complex plane, that is, the set \(S = \left\{\left(z, w\right)\in\mathbb{C}^2 | w^2=z\right\}\). This is set forms a Riemann surface in \(\mathbb{C}^2\) space.
In the figure below we see the Riemann surface of a square root in \(\mathbb{C}^2\) space. The \(xy\) plane forms the complex domain \(\mathbb{C}\), the \(z\) axis indicates the imaginary part of the Riemann surface and the color indicates the real part.
Show code cell source
resolution = 30
R, Θ = np.meshgrid(
np.linspace(0, 1, num=resolution),
np.linspace(-np.pi, +np.pi, num=resolution),
)
X = R * np.cos(Θ)
Y = R * np.sin(Θ)
Z = X + Y * 1j
T = np.sqrt(Z)
style = lambda t: dict(
cmin=-1,
cmax=+1,
colorscale="RdBu_r",
surfacecolor=t.real,
)
fig = go.Figure([
go.Surface(x=X, y=Y, z=+T.imag, **style(+T), name="+√z"),
go.Surface(x=X, y=Y, z=-T.imag, **style(-T), name="-√z", showscale=False),
])
fig.update_traces(selector=0, colorbar=dict(title="Re ±√z"))
fig.update_layout(
height=550,
margin=dict(l=0, r=0, t=30, b=0, pad=0),
title_text="Riemann surface of a square root",
title_x=0.5,
)
fig.update_scenes(
camera_center=dict(z=-0.1),
camera_eye=dict(x=1.4, y=1.4, z=1.4),
xaxis_title="Re z",
yaxis_title="Im z",
zaxis_title="Im ±√z",
)
fig.show()