% !TEX root = main.tex
\chapter{Relativitat especial}

\section{Introducció}

\begin{defi}[Sistema de Referència Inercial]
  Un \underline{sistema de referència inercial} (SRI) és un sistema de referència tal que:
  \begin{enumerate}[a)]
    \item Les relacions espacials són les de l'espai euclidià $E_3$.
    \item Hi ha un temps universal mesurat per rellotges a cada punt del SRI respecte del cual $\frac{\dif \vec{x}}{\dif t} = \text{const.}$ per partícules lliures (1a llei de Newton).
  \end{enumerate}
\end{defi}

\begin{defi}[Axiomes de la relativitat especial]
  Axiomes de la relativitat especial:
  \begin{enumerate}
    \item Les lleis de la física són les mateixes a tots els SRI.
    \item Principi de la constància de la velocitat de la llum. $\exists$ al menys 1 SRI en el qual els raigs de la llum es propagen a velocitat $c$ en moviment rectilini independentment de la direcció i velocitat de la font.
  \end{enumerate}
\end{defi}

\begin{col}
  L'espai és homogeni i isòtrop, i el temps és homogeni. A més, la llum viatja a velocitat $c$ a tots els SRI (llei d'Einstein).
\end{col}

\begin{defi}[Esdeveniment]
  Un \underline{esdeveniment} és un punt en l'espai-temps que en un sistema de referència donat té coordenades $x^\mu = (x^0, x, y, z) = (ct, x, y, z)$.
\end{defi}

\begin{prop}
  Les transformacions entre SRIs són les del \underline{grup de Poincaré}: el grup generat per:
  \begin{itemize}
    \item Translacions espacials,
    \item Rotacions espacials,
    \item Translacions temporals,
    \item Boosts de Lorentz.
  \end{itemize}
\end{prop}

\section{Boost de Lorentz}

\begin{defi}[Boost de Lorentz en configuració estàndard]
  El boost de Lorentz en configuració estàndard és la transformació:
  \[ \begin{pmatrix}
    {x^0}' \\
    x' \\
    y' \\
    z'
  \end{pmatrix} = \underbrace{\begin{pmatrix}
    \gamma & - \beta \gamma & 0 & 0 \\
    - \beta \gamma & \gamma & 0 & 0 \\
    0 & 0 & 1 & 0 \\
    0 & 0 & 0 & 1
  \end{pmatrix}}_{\Lambda} \begin{pmatrix}
    x^0 \\
    x \\
    y \\
    z
  \end{pmatrix}, \]
  que representa la transformació entre dos SRIs $S$ i $S'$ tals que:
  \begin{enumerate}[i)]
    \item $\vec{v} = (v, 0, 0)$.
    \item A $t = t' = 0$, els dos orígens coincideixen.
    \item El pla $y = 0$ coincideix amb el pla $y' = 0$, i anàlogament amb $z$ i $z'$.
    \item $x' = 0 \iff x = vt$.
    \item Sota inversions XZ la transformació segueix sent vàlida.
  \end{enumerate}
\end{defi}

\begin{defi}[Factors relativistes]
  Per conveniència, definim:
  \[ \beta := \frac{v}{c}, \qquad \gamma = \frac{1}{\sqrt{1 - \beta^2}}.\]
\end{defi}

\begin{obs}
  Per obtenir el boost en configuració estàndard invers, fem el canvi $v \rightarrow -v$ i, per tant, obtenim:
  \[ \Lambda^{-1} = \begin{pmatrix}
    \gamma & \beta \gamma & 0 & 0 \\
    \beta \gamma & \gamma & 0 & 0 \\
    0 & 0 & 1 & 0 \\
    0 & 0 & 0 & 1
  \end{pmatrix}. \]
\end{obs}

\begin{obs}
  Propietats del boost de Lorentz en configuració estàndard:
  \begin{enumerate}[a)]
    \item El límit galileà correspon a $\beta \ll 1$ i distàncies $|\Delta x| \ll |\Delta x^0|$.
    \item La simultaneitat no és absoluta.
    \item $|v| \to c \implies |\beta| \to 1 \implies \gamma \to \infty$. Així doncs, $\gamma \in [1, \infty]$.
  \end{enumerate}
\end{obs}

\subsection{Formulació hiperbòlica}
\begin{defi}
  Donat que $\beta \in (-1, 1)$, definim la \underline{rapidesa} com el valor $\phi$ tal que:
  \[ \beta = \tanh(\phi). \]
\end{defi}

\begin{obs}
  Observem que $\phi \in (- \infty, + \infty)$, i que:
  \[ \gamma = \frac{1}{\sqrt{1 - \tanh^2 \phi}} = \cosh \phi. \]
  Per tant:
  \[ \begin{pmatrix}
    \Delta {x^0}' \\
    \Delta x'
  \end{pmatrix} = \underbrace{\begin{pmatrix}
    \cosh \phi & \sinh \phi \\
    \sinh \phi & \cosh \phi
  \end{pmatrix}}_{\Lambda_\phi} \begin{pmatrix}
    \Delta x^0 \\
    \Delta x
  \end{pmatrix} \]
\end{obs}

\begin{prop}
  Si composem dues transformacions $\Lambda_{\phi_1}$, $\Lambda_{\phi_2}$, aleshores:
  \[ \Lambda_{\phi_1} \circ \Lambda_{\phi_2} = \begin{pmatrix}
    \cosh (\phi_1 + \phi_2) & \sinh (\phi_1 + \phi_2) \\
    \sinh (\phi_1 + \phi_2) & \cosh (\phi_1 + \phi_2)
  \end{pmatrix} = \Lambda_{\phi_1 + \phi_2}. \]

  A més:
  \[ \beta = \frac{\beta_1 + \beta_2}{1 + \beta_1 \beta_2}. \]
\end{prop}

\begin{obs}
  Per tant, la composició de boosts en configuració estàndard ens dona un altre boost  en configuració estàndard. Però la composició de boosts qualsevols no és un altre boost en general.
\end{obs}

\begin{defi}[Interval]
  Donats dos esdeveniments $A$, $B$, el seu \underline{interval} ve definit per:
  \[ (\Delta s)^2 := (\Delta x^0)^2 - (\Delta \vec{x})^2. \]

  Diem que:
  \begin{itemize}
    \item És de \underline{tipus temps} si $(\Delta s)^2 > 0$,
    \item És de \underline{tipus nul/llum} si $(\Delta s)^2 = 0$,
    \item És de \underline{tipus espai} si $(\Delta s)^2 < 0$.
  \end{itemize}
\end{defi}

\section{Diagrames d'espai-temps}

\begin{prop}[Contracció de longituds]
  \[ L = \frac{1}{\gamma} L_0, \]
  on $L_0$ és la longitud pròpia (al sistema $S'$).
\end{prop}

\begin{prop}[Dilatació del temps]
  \[ \Delta t = \gamma \Delta \tau, \]
  on $\Delta \tau$ és el temps propi (al sistema $S'$).
\end{prop}

\begin{prop}
  El temps propi per un rellotge amb una trajectòria donada es calcula com:
  \[ \Delta \tau = \int_A^B \frac{\dif t}{\gamma (t)}. \]
\end{prop}

\begin{obs}
  Si $\gamma < 1$, aleshores: $\Delta \tau < \Delta t$.
\end{obs}

\begin{prop}[Composició de velocitats (en 3D)]
  Siguin $S$, $S'$ SRIs tals que $S'$ es mou a velocitat $\vec{v}$ relativa a $S$. Sigui $\vec{u}$ la trivelocitat d'una partícula en $S$, i $\vec{u}'$ en $S'$. Aleshores:
  \[ c^2 - (\vec{u}')^2 = \frac{c^2}{\gamma_u^2 \gamma_v^2 \left( 1 - \frac{\vec{u} \cdot \vec{v}}{c^2} \right)^2} \implies \gamma_{u'} = \gamma_u \gamma_v \left( 1 - \frac{\vec{u} \cdot \vec{v}}{c^2} \right). \]

  La segona fórmula només és vàlida si $|| \vec{u} || < c$.
\end{prop}

\begin{prop}
  En 1 dimensió:
  \[ u = \frac{u' + v}{1 + \frac{u' v}{c^2}}; \qquad u' = \frac{u - v}{1 - \frac{u v}{c^2}}. \]
\end{prop}

\section{Òptica relativista}
\begin{prop}[Efecte Doppler]
  Siguin $S$ i $S'$ SRIs, i sigui $\vec{u}$ la velocitat d'un emissor que emet una ona de freqüència $\nu'$ a $S'$ ($\nu$ a $S$). Sigui $\hat{k}$ el vector que va de l'emissor a l'observador normalitzat. Definim $\vec{\beta}_u := \frac{1}{c} \vec{u}$.

  Aleshores, la freqüència pròpia és:
  \[ \nu' = \gamma_u (1 - \vec{\beta}_u \cdot \hat{k}) \nu. \]
\end{prop}

\begin{obs}
  En 1 dimensió, la fórmula esdevé:
  \[ \nu' = \sqrt{\frac{1 + \beta}{1 - \beta}} \nu. \]
\end{obs}

\begin{prop}[Aberració (addició de velocitats)]
  Siguin $S$, $S'$ dos SRIs de dues dimensions espacials en configuració estàndard. Sigui $\vec{u}$ la velocitat d'una partícula que es mou cap a l'orígen de $S$, on és un observador. Sigui $\alpha$ l'angle que fa la recta generada per $\vec{u}$ amb l'eix $X$, i $\alpha$ l'angle de $\langle \vec{u}' \rangle$ amb l'eix $X' = X$. Aleshores:
  \[ \tan\left( \frac{\alpha'}{2} \right) = \sqrt{\frac{1 - \beta}{1 + \beta}} \tan \left( \frac{\alpha}{2} \right). \]
\end{prop}

\begin{obs}
  Considerem alguns límits de la fórmula anterior:

  \begin{itemize}
    \item \underline{$\beta \ll 1$}: $\Delta \alpha' = - \beta \sin \alpha$.
    \item \underline{$\gamma \gg 1$}: $\tan \left( \frac{\alpha'}{2} \right) \approx \frac{1}{2 \gamma} \tan \left( \frac{\alpha}{2} \right)$.
  \end{itemize}
\end{obs}

\begin{prop}[Arrossegament de Fresnel]
  Sigui $u'$ la velocitat de la llum en aigua en repòs, i sigui $v$ la velocitat de l'aigua en un tub. Sigui $n := c/u' > 1$ l'índex de refracció. Aleshores, la velocitat d'un fotó vista des del SRI $S$ és:
  \[ u = u' + \underbrace{\left( 1 - \frac{1}{n^2} \right)}_{K} v + O(v^2), \]
  on anomenem $K$ el coeficient d'arrossegament.
\end{prop}

\section{Moviment uniformement accelerat}

En aquesta secció, considerarem un espai unidimensional.

\begin{defi}
  En el context de la relativitat especial, un \underline{moviment uniformement accelerat} és un moviment on l'acceleració pròpia és constant.

  L'\underline{acceleració pròpia} es defineix com l'acceleració de la partícula en el \underline{sistema comòbil} en cada instant de temps, és a dir, l'SRI que es mou a la mateixa velocitat que la partícula en aquest instant de temps.
\end{defi}

\begin{prop}
  Sigui $\alpha = \frac{du'}{dt'}$ l'acceleració pròpia d'una partícula en moviment uniformement accelerat (on el sistema $S'$ és el sistema comòbil en cada instant).

  Aleshores:
  \[ \alpha = \gamma_u^3 \frac{du}{dt}. \]

  A més, la trajectòria descrita per la partícula és la hipèrbola
  \[ (x - x_0)^2 - c^2 (t - t_0)^2 = \frac{c^4}{\alpha^2} =: l^2, \]
  que es pot parametritzar per:
  \[ \begin{cases}
    x^0 = ct_0 + l \sinh (c \tau / l ), \\
    x = x_0 + l \cosh (c \tau / l ).
  \end{cases} \]
\end{prop}

\begin{center}
  \begin{tikzpicture}
    \begin{axis}[
        axis lines = middle,
        xlabel = $X$,
        xlabel style = {anchor = south west},
        ylabel = $X^0$,
        ylabel style = {anchor = north west},
        xmin = 0,
        xmax = 4,
        ymin = 0,
        ymax = 3,
      ]
      \addplot[color = green, thick, dotted]{x + 0.5};
      \addplot[color = green, thick, dotted]{-x + 2.5};
      \addplot[domain = -2:2, smooth, color = red] ({1 + 0.7*cosh(x)}, {1.5 + 0.7*sinh(x)});
      \draw (axis cs:1, 1.5) -- node[below]{$l$} (axis cs:1.7, 1.5);
    \end{axis}
  \end{tikzpicture}
\end{center}

\begin{obs}
  $l$ és la distància mínima entre el centre de la hipèrbola i la hipèrbola. Quant més gran és, menor és $\alpha$. I quant més petita és, major és $\alpha$.
\end{obs}
\begin{obs}
  Paradoxa: perquè un regle no es deformi, la part de darrere ha d'accelerar més que la de davant (si acceleren iguals es deforma).
\end{obs}

\begin{center}
  \begin{tikzpicture}
    \begin{axis}[
        axis lines = middle,
        xlabel = $X$,
        xlabel style = {anchor = south west},
        ylabel = $X^0$,
        ylabel style = {anchor = north west},
        xmin = 0,
        xmax = 1.4,
        ymin = -1.4,
        ymax = 1.4,
        width = 7cm,
        height = 7cm
      ]
      \addplot[color = green, thick, dotted]{x};
      \addplot[color = green, thick, dotted]{-x};
      \addplot[domain = -2:2, smooth, color = red] ({0.5*cosh(x)}, {0.5*sinh(x)});
      \addplot[domain = -1:1, smooth, color = red] ({cosh(x)}, {sinh(x)});
    \end{axis}
  \end{tikzpicture}
\end{center}

\section{Boost de Lorentz general}
\begin{obs}
  El boost de Lorentz general és:
  \[ \begin{cases}
    \displaystyle {x^0}' = \gamma(x^0 - \vec{\beta} \cdot \vec{r}), \\[0.5em]
    \displaystyle \vec{r}' = \vec{r} + \vec{\beta} \left\{ \frac{\vec{\beta} \cdot \vec{r}}{\beta^2} (\gamma - 1) - \gamma x^0 \right\}.
  \end{cases} \]
\end{obs}

\section{Espai de Minkowski}
\begin{defi}
  L'espai de Minkowski $M^4$ és l'espai $\mathbb{R}^4$ amb la mètrica
  \[ g := \tilde{\dif x}^0 \otimes \tilde{\dif x}^0 - \tilde{\dif x} \otimes \tilde{\dif x} - \tilde{\dif y} \otimes \tilde{\dif y} - \tilde{\dif z} \otimes \tilde{\dif z}. \]
\end{defi}

\begin{defi}
  La \underline{quadrivelocitat} és un vector de l'espai de Minkowski que té components:
  \[ U^\mu := \frac{\dif x^\mu}{\dif \tau} = \gamma (c, \vec{u}). \]
\end{defi}

\begin{defi}
  La \underline{quadriacceleració} és un vector de l'espai de Minkowski amb components:
  \[ A^\mu := \frac{\dif U^\mu}{\dif \tau} = \gamma \frac{\dif U^\mu}{\dif t} = \gamma (c \dot{\gamma}, \dot{\gamma} + \gamma \vec{a}), \]
  on $\vec{a} := \frac{\dif \vec{u}}{\dif t}$.
\end{defi}

\begin{obs}
  Observem que $\dot{\gamma} = \gamma^3 \vec{u} \cdot \vec{a}$, així que:
  \[ A^\mu = 0 \iff \vec{a} = 0. \]
\end{obs}

\begin{prop}
  L'acceleració pròpia és \[ \alpha^2 = \gamma^6 \frac{(\vec{u} \cdot \vec{a})^2}{c^2} + \gamma^4 a^2 = \gamma^6 \left[ a^2 - \frac{(\vec{u} \cross \vec{a})}{c^2} \right]. \]
\end{prop}

\begin{obs}
  Considerem 2 casos específics:
  \begin{itemize}
    \item \underline{Acceleració lineal} ($\vec{u} \parallel \vec{a}$): $\alpha = \gamma^3 a$.
    \item \underline{Acceleració circular} ($\vec{u} \perp \vec{a}$): $\alpha = \gamma^2 a$.
  \end{itemize}
\end{obs}

\begin{prop}
  $U \cdot A = 0$ (sota el producte escalar de l'espai de Minkowski).
\end{prop}

\begin{prop}[Producte escalar de quadrivelocitats]
  Siguin $U_1$, $U_2$ dues quadrivelocitats (de 2 partícules en l'espai de Minkowski). Aleshores:
  \[ \frac{U_1 \cdot U_2}{c^2} = \gamma = \cosh \phi. \]
\end{prop}

\section{Dinàmica relativista}
Per desenvolupar la dinàmica relativista tenim en compte 2 postulats:
\begin{enumerate}
  \item Les lleis han de ser vàlides en tot SRI.
  \item En el límit $\beta \ll 1$ hem de recuperar les lleis newtonianes.
\end{enumerate}

\subsection{Teoria de co\lgem isions}
\begin{defi}
  El \underline{quadrimoment} és:
  \[ P^\mu := m \gamma (c, \vec{u}) = (p^0, \vec{p}), \]
  on $\vec{p} = m \gamma \vec{u}$.
\end{defi}

\begin{prop}
  $P \cdot P \equiv P^2$ és invariant.
\end{prop}

\begin{prop}
  El \underline{principi de conservació de l'energia} és:
  \begin{enumerate}[a)]
    \item $E = m \gamma c^2$,
    \item $\sum^* P_r^\mu = 0$, on $\sum^* = \sum_r^{(in)} - \sum_r^{(out)}$.
  \end{enumerate}
\end{prop}

\begin{col}
  El quadrimoment per tant es pot expressar com:
  \[ P^\mu = \left( \frac{E}{c}, \vec{p} \right). \]
\end{col}

\begin{obs}
  Quan $\gamma \approx 1$, $E \approx mc^2$.
\end{obs}

\begin{defi}
  Definim l'\underline{energia cinètica} com:
  \[ T := mc^2 (\gamma - 1). \]
\end{defi}

\subsection{Sistema aïllat de partícules}
Sigui $P_{tot}^\mu = \sum_a P_a^\mu$. Aleshores, definim:
\[ \vec{v}_{cm} := \frac{\vec{P}_{tot}}{P^0_{tot}} \]
Si $P_{tot}^\mu = M_{tot} \cdot V_{cm}^\mu$, aleshores:
\[ V_{cm}^\mu = \gamma_{cm} (c, \vec{v}_{cm}) \implies M_{tot} = \frac{P_{tot}^0}{\gamma_{cm} \cdot c}. \]

En el SRI del CM $S'$, tindrem:
\[ \left. \begin{array}{r}
  V_{cm}^{\mu'} = (c, \vec{0}) \\
  P_{tot}^{0'} = \sum_a m_a \gamma_a' c
\end{array} \right\} \implies M_{tot} = \frac{P_{tot}^{0'}}{c} = \sum_a m_a \gamma_a'. \]

\subsection{Boosts en una direcció arbitrària}

\begin{prop}
  L'energia d'una partícula de quadrimoment $P$ vista per un observador amb quadrivelocitat $V$ és:
  \[ E' = V_\mu P^\mu = V \cdot P. \]
\end{prop}

\subsection{Partícules sense massa}
\begin{defi}
  El \underline{quadrimoment} d'una partícula sense massa és:
  \[ K^\mu = \frac{E}{c} (1, \hat{k}), \]
  on $\hat{k} := \vec{u}/c$. Observem $K^2 = 0$.
\end{defi}

\begin{prop}[Efecte Doppler]
  Sigui $E = h \nu$ l'energia d'un fotó. Aleshores:
  \[ \nu' = \gamma (1 - \vec{\beta} \cdot \hat{k}) \nu. \]
\end{prop}

\begin{prop}[Aberració en configuració estàndard]
  Tenim:
  \[ \hat{\beta} \hat{k}' = \frac{\hat{\beta} \hat{k} - \beta}{1 - \vec{\beta} \hat{k}}. \]
\end{prop}

\subsection{Efecte Compton}
L'efecte Compton descriu col·lisions del tipus $e^- + \gamma \rightarrow e^- + \gamma$. Ens diu que la diferència de les longituds d'ona sortint i entrant és:
\[ \Delta \lambda = (\lambda_2 - \lambda_1) = \underbrace{\frac{h}{m_e c}}_{\lambda_C} (1 - \cos \theta), \]
on $\lambda_C$ s'anomena la longitud d'ona Compton.
