Variational Principles in Field Theory¶
da PowerShell -- jupyter nbconvert --to html notebook.ipynb
Tabella di traduzione indici → forma esplicita¶
| Derivate | Forma estesa | Denominazione |
|---|---|---|
| $\partial_\mu \phi$ | $\left(\dfrac{\partial \phi}{\partial t},\nabla\phi\right)$ | variazione del campo |
| $\partial^\mu \phi$ | $\left(\dfrac{\partial \phi}{\partial t},-\nabla\phi\right)$ | cambia segno nello spazio |
| $\partial_\mu \partial^\mu \phi$ | $\dfrac{\partial^2 \phi}{\partial t^2}-\nabla^2\phi$ | operatore d’onda |
| $\nabla^2\phi$ | $\dfrac{\partial^2\phi}{\partial x^2}+\dfrac{\partial^2\phi}{\partial y^2}+\dfrac{\partial^2\phi}{\partial z^2}$ | langrangiana |
Termini tipici di Lagrangiana¶
| Con indici | Forma esplicita |
|---|---|
| $\partial_\mu\phi,\partial^\mu\phi$ | $\left(\dfrac{\partial\phi}{\partial t}\right)^2$ |
| $\frac{1}{2}\partial_\mu\phi,\partial_\mu\phi$ | energia cinetica del campo |
| $V(\phi)$ | potenziale del campo |
Equazioni del moto (campo scalare)¶
| Con indici | Forma esplicita |
|---|---|
| $\partial_\mu\partial^\mu\phi=0$ | $\dfrac{\partial^2\phi}{\partial t^2}-\nabla^2\phi=0$ |
| $\partial_\mu\partial^\mu\phi+m^2\phi=0$ | equazione di Klein–Gordon |
Tensore elettromagnetico¶
| Con indici | Forma esplicita |
|---|---|
| $F_{\mu\nu}$ | contiene $\mathbf{E}$ e $\mathbf{B}$ |
| $F_{0i}$ | $E_i$ |
| $F_{ij}$ | $\epsilon_{ijk}B_k$ |
Lagrangiana EM¶
| Con indici | Forma esplicita |
|---|---|
| $-\frac{1}{4}F_{\mu\nu}F^{\mu\nu}$ | $\frac{1}{2}(E^2-B^2)$ |
Equazioni di Maxwell¶
| Con indici | Forma esplicita |
|---|---|
| $\partial_\mu F^{\mu\nu}=J^\nu$ | Maxwell con sorgenti |
| $\partial_\mu J^\mu=0$ | conservazione della carica |
Dato $\Phi$ trovo numericamente $\Phi^*$ che rende stazionaria l'azione¶
Flusso logico dell’esercizio variazionale numerico¶
Dati iniziali¶
Si assumono come dati iniziali: $$\large \Bigl\{ \Phi^{(0)}(x,t),\; \mathscr{L}(\phi, \partial_\mu \phi),\; \mathcal{G} = \{x_i, t_j\} \Bigr\}, $$
dove $\Phi^{(0)}$ è una configurazione iniziale del campo, $\mathscr{L}$ è la densità lagrangiana del sistema e $\mathcal{G}$ è una griglia spaziotemporale discretizzata.
Discretizzazione dello spaziotempo¶
Lo spaziotempo continuo viene discretizzato come: $$\large (x,t) \longrightarrow (x_i, t_j), \qquad \Delta x,\; \Delta t, $$
e il campo scalare diventa: $$\large \phi(x,t) \longrightarrow \phi_{i,j}. $$
Discretizzazione delle derivate¶
Le derivate spaziotemporali sono approssimate tramite differenze finite: $$\large \partial_x \phi(x,t) \longrightarrow \frac{\phi_{i+1,j} - \phi_{i-1,j}}{2\Delta x}, \qquad \partial_t \phi(x,t) \longrightarrow \frac{\phi_{i,j+1} - \phi_{i,j-1}}{2\Delta t}. $$
Lagrangiana discretizzata¶
La densità lagrangiana discreta è definita come: $$\large \mathscr{L}_{i,j} = \mathscr{L} \bigl( \phi_{i,j}, (\nabla_x \phi)_{i,j}, (\nabla_t \phi)_{i,j} \bigr). $$
Azione discretizzata¶
L’azione continua viene approssimata da una somma discreta: $$\large S[\phi] = \int \mathscr{L}\,\mathrm{d}x\,\mathrm{d}t \;\longrightarrow\; S_{\mathrm{disc}}[\phi] = \sum_{i,j} \mathscr{L}_{i,j}\,\Delta x\,\Delta t. $$
Variazione discreta dell’azione¶
Si considera una variazione locale del campo: $$\large \phi_{i,j} \longrightarrow \phi_{i,j} + \varepsilon\,\eta_{i,j}, $$
e si calcola la variazione discreta dell’azione: $$\large \delta S_{\mathrm{disc}} = \frac{\partial S_{\mathrm{disc}}}{\partial \phi_{i,j}}. $$
Equazioni di Eulero--Lagrange discrete¶
La condizione di stazionarietà dell’azione conduce alle equazioni: $$\large \frac{\partial \mathscr{L}{i,j}}{\partial \phi{i,j}}\nabla_\mu^{\mathrm{disc}} \left( \frac{\partial \mathscr{L}{i,j}} {\partial (\nabla\mu \phi)_{i,j}} \right) = 0, $$
che definiscono l’operatore discreto delle equazioni del moto: $$\large \mathcal{E}_{i,j}[\phi] = 0. $$
Metodo iterativo variazionale¶
Il sistema discreto viene risolto tramite un’iterazione di rilassamento: $$\large \phi^{(n+1)}{i,j} = \phi^{(n)}{i,j} -\alpha \mathcal{E}_{i,j}[\phi^{(n)}], $$
dove $\alpha$ è il passo di aggiornamento.
Convergenza¶
L’iterazione viene arrestata quando vale la condizione: $$\large \|\phi^{(n+1)} - \phi^{(n)}\| < \varepsilon, $$
ottenendo una configurazione convergente: $$\large \Phi^*_{i,j}. $$
Interpretazione della soluzione¶
La configurazione finale soddisfa: $$\large \Phi^*_{i,j} \longleftrightarrow \Phi^*(x,t), $$
ed è interpretata come soluzione classica delle equazioni del moto,
ovvero come punto stazionario dell’azione discretizzata.
Analisi successive¶
A partire dalla soluzione $\Phi^*$ è possibile studiare: $$\large \Phi^* \Rightarrow \begin{cases} \text{stabilità rispetto a fluttuazioni}, \\ \text{correnti di Noether}, \\ \text{limite continuo}, \\ \text{approssimazione semiclassica}. \end{cases} $$
import numpy as np
def action_integral(L, phi, d_phi, spacetime_vol):
'''
Compute the action integral for a field.
:param L: Lagrangian density function.
:param phi: Field values.
:param d_phi: Spacetime derivative of field values.
:param sp acetime _v ol: Volume element d^x over spacetime.
:return:
Action value.
'''
return np.sum(L(phi, d_phi) * spacetime_vol)
def euler_lagrange_equation(L, phi, d_phi):
'''
Compute the Euler-Lagrange equation for fields.
Implementa ∂_μ∂^μ(ϕ)+ϕ=0
:param L: Lagrangian density function.
:param phi: Field values.
:param d_phi: Spacetime derivative of field values.
:return:
Euler-Lagrange equation function.
'''
dphi_dx, dphi_dt = d_phi
# L = 1/2 (∂μφ ∂^μφ) - 1/2 φ^2
dL_dphi = -phi
dL_ddphi_x = dphi_dx
dL_ddphi_t = dphi_dt
ddx = np.gradient(dL_ddphi_x, axis=0)
ddt = np.gradient(dL_ddphi_t, axis=1)
return dL_dphi - (ddx + ddt)
def electromagnetic_lagrangian(F, A, j):
'''
Lagrangian density for electromagnetic field.
:param F: Electromagnetic field tensor.
:param A: Vector potential.
:param j: Current density.
:return:
Electromagnetic Lagrangian density.
'''
return -0.25 * np.sum(F**2) + np.dot(j, A)
def noether_current(L, phi, psi):
'''
Compute Noether current based on symmetry transformation.
:param L: Lagrangian density function.
:param phi: Field configuration.
:param psi: Symmetry variation.
:return:
Noether current.
'''
dL_ddphi = np.gradient(L(phi, np.gradient(phi)))
return dL_ddphi * psi
def iterative_solution(initial_phi, L, spacetime_grid, max_iter=1000, tol=1e-6):
'''
Iteratively solve for field configuration minimizing the action.
:param initial_phi: Initial field configuration.
:param L: Lagrangian density function.
:param spacetime_grid: Grid representing spacetime.
:param max_iter: Maximum number of iterations.
:param tol: Convergence tolerance.
:return:
Field configuration minimizing the action.
'''
phi = initial_phi
dx = spacetime_grid[1] - spacetime_grid[0]
dt = dx # stessa discretizzazione
for _ in range(max_iter):
d_phi = np.gradient(phi, dx, dt) # <-- FIX
delta_phi = -euler_lagrange_equation(L, phi, d_phi)
phi_new = phi + 0.01 * delta_phi
if np.linalg.norm(phi_new - phi) < tol:
break
phi = phi_new
return phi
# Example usage
L_example = lambda phi, d_phi: (0.5 * (d_phi[0]**2 + d_phi[1]**2) - 0.5 * phi**2)
initial_phi = np.random.rand(10, 10) # matrice 10x10 di random tra 0 e 1
spacetime_grid = np.linspace(0, 1, 10) # 10 numeri equisoaziati tra 0 e 1
phi_solution = iterative_solution(initial_phi, L_example, spacetime_grid)
print("Field configuration minimizing the action:", phi_solution)
Field configuration minimizing the action: [[-2874966.85528487 -2176788.15363693 -1490641.48067622 -799730.45941436
-119400.22660278 569884.05211262 1251314.98185759 1944809.66504631
2634125.66852995 3337160.06628992]
[-1493836.15356277 -1057328.40599249 -627114.8263703 -193560.39928535
234459.02939942 668757.19752021 1098947.13928367 1537596.40383627
1974059.7268027 2420142.63673672]
[ -129629.49702703 48953.04654783 226910.48797319 406808.38472109
586156.57586354 769151.63012063 951738.67792511 1139239.13114222
1326522.48866001 1519393.1646815 ]
[ 1248985.65211868 1167140.25880744 1090397.8357555 1014183.55803142
942456.75703877 871722.54459956 804319.05944199 738252.88525369
673958.95403356 611185.75675904]
[ 2612718.04563629 2273738.67279 1945529.84535616 1616457.17470367
1296855.96272574 975631.25656991 661436.52465076 345054.46497082
32412.97645019 -282715.84940467]
[ 4003529.5475316 3402712.59589219 2818444.66097082 2231898.49604451
1659905.29217564 1083630.41647627 518157.1442914 -53084.8087183
-618579.34854808 -1190633.79015288]
[ 5383294.66333193 4523084.99764908 3685157.917281 2843553.30325326
2021543.66588639 1192622.52605138 378245.31084701 -445443.74641621
-1261394.14302598 -2087933.57570484]
[ 6799543.36317546 5673603.84131223 4575829.88334261 3472948.91099179
2394836.31983843 1307125.68124529 237798.80883867 -844459.47787623
-1916935.966922 -3004117.51773161]
[ 8209914.40371097 6819545.91103439 5463202.0685978 4100329.75662517
2767378.21990997 1422157.173915 99144.14111525 -1240399.55679385
-2568126.6177034 -3914651.65737306]
[ 9661773.04527922 7999769.24964147 6377819.09335295 4747884.69627932
3153172.87850518 1543455.5964503 -40118.52924825 -1643909.4622579
-3233789.91232739 -4846660.06740832]]
Interpretazione della soluzione classica¶
Una volta determinata numericamente una configurazione del campo $$\large \Phi^*(x,t), $$
essa va interpretata come una configurazione che rende stazionaria l’azione del sistema. In questo senso, $\Phi^*$ rappresenta una soluzione classica delle equazioni di Eulero--Lagrange associate al funzionale d’azione $$\large S[\phi] = \int \mathcal{L}(\phi, \partial_\mu \phi)\, \mathrm{d}^{d}x. $$
Verifica della stazionarietà dell’azione¶
Il primo passo concettuale consiste nel verificare che la configurazione trovata soddisfi effettivamente le equazioni del moto: $$\large \left.\frac{\delta S}{\delta \phi}\right|_{\phi=\Phi^*} = 0. $$
Se questa condizione è soddisfatta, la configurazione $\Phi^*$ è fisicamente ammessa e non rappresenta un semplice artefatto numerico.
Interpretazione fisica della soluzione¶
La struttura spaziotemporale della soluzione fornisce indicazioni sulla sua interpretazione fisica. In particolare, si può stabilire se la configurazione è:
- statica, nel caso in cui $\partial_t \Phi^* \simeq 0$,
- oscillante, come nel caso dei modi normali di un campo libero,
- localizzata nello spazio, suggerendo una soluzione di tipo solitonico,
- sensibile alle condizioni al contorno, indicando possibili problemi di consistenza del modello numerico.
Stabilità e fluttuazioni¶
Per analizzare la stabilità della soluzione, si considerano piccole fluttuazioni attorno alla configurazione classica: $$\large \phi = \Phi^* + \eta. $$
Espandendo l’azione in serie funzionale attorno a $\Phi^*$ si ottiene $$\large S[\phi] = S[\Phi^*] + \frac{1}{2} \int \eta \, \hat{O} \, \eta \, \mathrm{d}^dx + \dots $$
dove $\hat{O}$ è l’operatore delle fluttuazioni. Il segno degli autovalori di tale operatore determina la stabilità della soluzione.
Simmetrie e correnti di Noether¶
Nel caso in cui il Lagrangiano presenti simmetrie continue, è possibile costruire le corrispondenti correnti di Noether. Valutando tali correnti sulla soluzione $\Phi^*$, si possono identificare quantità conservate come energia, impulso o cariche associate alle simmetrie del sistema.
Limite continuo¶
Infine, è necessario verificare che la soluzione numerica sia stabile rispetto alla discretizzazione dello spaziotempo. In particolare, si richiede che nel limite di passo di griglia $\Delta x \to 0$ la configurazione numerica converga a una soluzione ben definita del problema continuo: $$\large \Phi^*_{\Delta x} \longrightarrow \Phi^*(x,t). $$
Interpretazione semiclassica¶
Nel contesto della teoria quantistica dei campi, la configurazione $\Phi^*$ può essere interpretata come un campo classico di background. Le fluttuazioni $\eta$ vengono quantizzate e il contributo dominante all’integrale funzionale è fornito dal punto di sella associato a $\Phi^*$, realizzando un’approssimazione semiclassica.