Teorema di Noerther¶

da PowerShell -- jupyter nbconvert --to html notebook.ipynb

Il teorema di Noether stabilisce una connessione fondamentale tra le simmetrie continue di un sistema fisico e le leggi di conservazione. Esso rappresenta uno dei risultati più profondi della fisica teorica e della matematica applicata.

Contesto variazionale¶

Si consideri un sistema descritto da una azione: $$ S[q] = \int_{t_1}^{t_2} L(q,\dot{q},t)\, dt, $$

dove $q = (q^1, \dots, q^n)$ sono le coordinate generalizzate e $L$ è la Lagrangiana.

Le equazioni del moto sono ottenute imponendo la stazionarietà della azione: $$ \delta S = 0, $$ da cui seguono le equazioni di Eulero--Lagrange: $$ \frac{d}{dt}\left(\frac{\partial L}{\partial \dot{q}^i}\right)\frac{\partial L}{\partial q^i} = 0. $$

Simmetrie continue¶

Una trasformazione continua infinitesima: $$ q^i \rightarrow q^i + \varepsilon \,\delta q^i, \quad t \rightarrow t + \varepsilon \,\delta t, $$ è detta simmetria dell'azione se l'azione è invariata (a meno di un termine di bordo): $$ \delta S = 0. $$

Enunciato del teorema di Noether¶

Ad ogni simmetria continua della azione corrisponde una quantità conservata lungo le traiettorie che soddisfano le equazioni di Eulero--Lagrange.

Quantità di Noether¶

Se la variazione della Lagrangiana è una derivata totale: $$ \delta L = \varepsilon \frac{dF}{dt}, $$ allora la quantità: $$ Q = \sum_i \frac{\partial L}{\partial \dot{q}^i} \delta q^i\left( \sum_i \frac{\partial L}{\partial \dot{q}^i} \dot{q}^i - L \right)\delta tF $$

è conservata:

$$ \large \frac{dQ}{dt} = 0. $$

Applicazioni fondamentali¶

Traslazione temporale¶

Se la Lagrangiana è invariante per traslazioni temporali ($\partial L/\partial t = 0$), allora: $$ Q = E = \sum_i \dot{q}^i \frac{\partial L}{\partial \dot{q}^i} - L, $$ che rappresenta la energia meccanica.

Traslazione spaziale¶

La invarianza per traslazioni spaziali implica la conservazione della quantità di moto: $$ \mathbf{p} = \frac{\partial L}{\partial \dot{\mathbf{r}}}. $$

Rotazioni¶

La invarianza per rotazioni spaziali implica la conservazione del momento angolare: $$ \mathbf{L} = \mathbf{r} \times \mathbf{p}. $$

Forma locale: campi continui¶

Nel caso di teorie di campo, il teorema di Noether conduce a leggi di conservazione locali espresse da correnti: $$ \partial_\mu j^\mu = 0, $$ dove $j^\mu$ è la corrente di Noether associata a una simmetria continua.

Simmetrie globali e locali¶

  • Le simmetrie globali producono cariche conservate.
  • Le simmetrie locali (di gauge) richiedono l'introduzione di campi di connessione.

Osservazioni finali}¶

Il teorema di Noether fornisce una struttura unificante che collega:

  • principi di simmetria;
  • leggi di conservazione;
  • formulazioni variazionali della dinamica.

Esso è fondamentale in meccanica classica, relatività generale e teoria quantistica dei campi.

Moto rettilineo uniforme - Approccio simbolico¶

In [41]:
import sympy as sp

def lagrangian(q, dq, t):
    """
    Define a simple Lagrangian:
        T = 1/2 Σ dq_i^2
        V = 1/2 Σ q_i^2
    """
    # Use Python's sum(), not SymPy Sum(), to avoid generators
    T = sp.Rational(1, 2) * sum(dqi**2 for dqi in dq)
    V = sp.Rational(1, 2) * sum(qi**2 for qi in q)

    L = T - V
    return L

def conserved_quantity(L, q, dq, t, epsilon, delta_q):
    """
    Compute the conserved Noether charge for a given symmetry.
    """

    # δL = Σ ( ∂L/∂q_i * δq_i + ∂L/∂dq_i * δ(dq_i) )
    delta_L_terms = []
    for qi, dqi, deltaqi in zip(q, dq, delta_q):
        delta_L_terms.append(
            L.diff(qi) * deltaqi +
            L.diff(dqi) * sp.diff(deltaqi, t)
        )
    delta_L = sum(delta_L_terms)

    # Euler–Lagrange operator Σ (d/dt ∂L/∂dq_i − ∂L/∂q_i)
    EL_terms = []
    for qi, dqi in zip(q, dq):
        EL_terms.append(
            sp.diff(L.diff(dqi), t) - L.diff(qi)
        )
    EL_expr = sum(EL_terms)

    # Noether conserved quantity: Q = Σ p_i δq_i
    Q_terms = []
    for dqi, deltaqi in zip(dq, delta_q):
        Q_terms.append(L.diff(dqi) * deltaqi)
    Q = sum(Q_terms)

    return sp.simplify(Q)

# Define symbols
t = sp.Symbol('t')
epsilon = sp.Symbol('epsilon')
q = sp.Function('q')(t)
dq = sp.Function('dq')(t)
# Example of transformation for translational symmetry
delta_q_translational = [epsilon for _ in range(1)] # Simple translation 


# Example Lagrangian
L_expr = lagrangian([q], [dq], t)
# Compute conserved quantity from translational syrmetry
conserved_translational = conserved_quantity(L_expr, [q], [dq], t, epsilon, delta_q_translational) 
print("Lagrangian:", L_expr)
print("Conserved Quantity (Translational Symmetry):")
display(conserved_translational)
print('')
print("If mass=1 --> Linear Momentum is Conserved")
Lagrangian: dq(t)**2/2 - q(t)**2/2
Conserved Quantity (Translational Symmetry):
$\displaystyle \epsilon \operatorname{dq}{\left(t \right)}$
If mass=1 --> Linear Momentum is Conserved

Moto circolare uniforme - Approccio simbolico¶

In [84]:
import sympy as sp
from sympy.physics.mechanics import dynamicsymbols, mlatex
from IPython.display import display, Math

t = sp.Symbol('t')
epsilon = sp.Symbol('epsilon')

# Coordinates
x = sp.Function('x')(t)
y = sp.Function('y')(t)

dx = sp.diff(x, t)
dy = sp.diff(y, t)

# Rotational infinitesimal transformation
delta_x = -epsilon * y
delta_y =  epsilon * x

delta_q_rot = [delta_x, delta_y]

# Lagrangian (free particle in 2D — rotationally invariant!)
L = sp.Rational(1,2)*(dx**2 + dy**2)

q = [x, y]
dq = [dx, dy]

def conserved_quantity(L, q, dq, t, epsilon, delta_q):
    Q = sum(L.diff(dqi)*deltaqi for dqi, deltaqi in zip(dq, delta_q))
    return sp.simplify(Q)

Q_rot = conserved_quantity(L, q, dq, t, epsilon, delta_q_rot)

print("Rotational Momentum is Conserved")
display(Q_rot)

t = sp.Symbol('t')
x = dynamicsymbols('x')
y = dynamicsymbols('y')

expr = Q_rot

display(Math(mlatex(expr)))
Rotational Momentum is Conserved
$\displaystyle \epsilon \left(x{\left(t \right)} \frac{d}{d t} y{\left(t \right)} - y{\left(t \right)} \frac{d}{d t} x{\left(t \right)}\right)$
$\displaystyle \epsilon \left(x \dot{y} - y \dot{x}\right)$
In [ ]: