Hamiltonian Mechanics in Special Relatitvity¶
da PowerShell -- jupyter nbconvert --to html notebook.ipynb
Particella carica in presenza di un campo elettromagnetico¶
L'esercizio implementa alcuni concetti fondamentali della $\textbf{meccanica relativistica}$ utilizzando il $\textbf{formalismo hamiltoniano}$. In particolare, vengono analizzate l'energia, l'Hamiltoniana e le equazioni del moto di una particella libera e di una particella carica in presenza di un campo elettromagnetico.
Energia relativistica¶
A partire dal momento relativistico $p$, dalla massa a riposo $m$ e dalla velocità della luce $c$, l'energia totale relativistica della particella è calcolata tramite la relazione fondamentale $$\large E = \sqrt{p^2 c^2 + m^2 c^4}, $$ che esprime l'invariante relativistico energia--impulso.
Hamiltoniana di una particella libera¶
Per una particella libera, l'Hamiltoniana relativistica coincide con l'energia totale del sistema ed è data da $$\large H(p) = c \sqrt{p^2 + m^2 c^2}. $$ Questa funzione genera l'evoluzione temporale del sistema nello spazio delle fasi.
Equazioni di Hamilton¶
Il codice introduce le equazioni di Hamilton nella forma $$\large \dot{q} = \frac{\partial H}{\partial p}, \qquad \dot{p} = - \frac{\partial H}{\partial q}, $$ che rappresentano le equazioni fondamentali del moto nel formalismo canonico. Nel caso di una particella libera, l'Hamiltoniana non dipende esplicitamente dalla coordinata $q$, per cui il momento risulta costante nel tempo.
Evoluzione temporale nello spazio delle fasi¶
Viene inoltre introdotto il concetto di evoluzione temporale di una funzione $f(q,p)$ nello spazio delle fasi, descritta dal $\textbf{bracket di Poisson}$: $$\large \frac{df}{dt} = \{ f, H \} = \frac{\partial f}{\partial q} \frac{\partial H}{\partial p}\frac{\partial f}{\partial p} \frac{\partial H}{\partial q}. $$ Questa relazione consente di studiare l'evoluzione di qualunque osservabile dinamica del sistema.
Interazione elettromagnetica¶
Infine, l'esercizio estende l'Hamiltoniana relativistica al caso di una particella carica immersa in un campo elettromagnetico, utilizzando il principio di accoppiamento minimo. L'Hamiltoniana assume la forma $$\large H = c \sqrt{(\mathbf{p} - q \mathbf{A})^2 + m^2 c^2}\; q \phi,$$ dove $\mathbf{A}$ è il potenziale vettore e $\phi$ il potenziale scalare.
Conclusione¶
L'esercizio mostra come il formalismo hamiltoniano relativistico permetta di descrivere in modo compatto ed elegante l'energia, le equazioni del moto e l'interazione elettromagnetica, evidenziando il legame tra invarianti relativistici e dinamica canonica.
import numpy as np
def dH_dp(p, m, c):
return c * p / np.sqrt(p**2 + m**2 * c**2)
def hamilton_equations_free(q, p, m, c):
dq_dt = dH_dp(p, m, c) # velocità relativistica
dp_dt = 0.0 # particella libera
return dq_dt, dp_dt
def relativistic_energy(p, m, c):
"""
Calculate the relativistic energy of a particle.
:param p: Relativistic momentum.
:param m: Rest mass.
:param c: Speed of light.
:return:
Total energy.
"""
return np.sqrt(p**2 * c**2 + m**2 * c**4)
def hamiltonian_free_particle(p, m, c):
"""
Compute the Hamiltonian for a free particle in special
relativity.
:param p: Relativistic momentum.
:param m: Rest mass.
:param c: Speed of light.
:return:
Hamiltonian.
"""
return c * np.sqrt(p**2 + m**2 * c**2)
def hamilton_equation_of_motion(q, p, H_func, partial_H_partial_p):
"""
Hamilton's equations of motion in a relativistic framework.
:param q: Position.
:param p: Momentum.
:param H_func: Hamiltonian function.
:param partial_H_partial_p: Derivative of Hamiltonian w.r.t
momentum.
:return:
Time derivatives (dq/dt, dp/dt).
"""
dq_dt = partial_H_partial_p(p)
dp_dt = -1 * np.gradient(H_func, q)[0]
return dq_dt, dp_dt
def time_evolution(q0, p0, m, c, dt, steps):
"""
:param q0: Canonical coordinate - initial value.
:param p0: Canonical momentum - initial value.
:param q: Canonical coordinate.
:param p: Canonical momentum.
:param dt: Temporal step.
:param steps: Number of temporal steps
:return:
p(t), q(t) = trajectory.
"""
q = q0
p = p0
trajectory = []
for _ in range(steps):
dq_dt, dp_dt = hamilton_equations_free(q, p, m, c)
q += dq_dt * dt
p += dp_dt * dt
trajectory.append((q, p))
return trajectory
def hamiltonian_with_em_interaction(p, A, m, c, q, phi):
"""
Hamiltonian for a particle in electromagnetic fields.
:param c: Speed of light.
:param q: Charge.
:param phi: Scalar potential.
:return:
Hamiltonian with electromagnetic interaction.
"""
return c * np.sqrt((p - q * A)**2 + m**2 * c**2) + q * phi # Example values for demonstration
c = 2.99792458e8 # velocità della luce (m/s)
m = 9.109e-31 # massa dell'elettrone (kg)
v = 0.1 * c
gamma = 1 / np.sqrt(1 - (v/c)**2)
p = gamma * m * v
q = -1.602e-19 # carica dell'elettrone (C)
A = np. array ([0.1, 0.1, 0.1]) # Example vector potential
phi = 0.1 # Example scalar potential energy = relativistic_energy(p, m, c)
energy = relativistic_energy(p, m, c)
hamiltonian = hamiltonian_free_particle(p, m, c)
hamiltonian_em = hamiltonian_with_em_interaction(p, A, m, c, q, phi)
print("Relativistic Energy:", energy)
print("Hamiltonian (Free Particle):", hamiltonian)
print("Hamiltonian with EM Interaction:", hamiltonian_em)
print('')
# ----------------------------------------------------------------------------
q0 = 0.0
dt = 1e-9
steps = 5
p0 = gamma * m * v
traj = time_evolution(q0, p0, m, c, dt, steps)
for i, (q, p) in enumerate(traj):
print(f"t = {i*dt:.1e} s | q = {q:.3e} m | p = {p:.3e} kg m/s")
print("q evolve, mentre il momento q rimane invariato")
Relativistic Energy: 8.228004312215654e-14 Hamiltonian (Free Particle): 8.228004312215654e-14 Hamiltonian with EM Interaction: [4.81159969e-12 4.81159969e-12 4.81159969e-12] t = 0.0e+00 s | q = 2.998e-02 m | p = 2.745e-23 kg m/s t = 1.0e-09 s | q = 5.996e-02 m | p = 2.745e-23 kg m/s t = 2.0e-09 s | q = 8.994e-02 m | p = 2.745e-23 kg m/s t = 3.0e-09 s | q = 1.199e-01 m | p = 2.745e-23 kg m/s t = 4.0e-09 s | q = 1.499e-01 m | p = 2.745e-23 kg m/s q evolve, mentre il momento q rimane invariato