Hamilton's Principle¶

Il Principio di Hamilton, noto anche come Principio dell’Azione Stazionaria, costituisce uno dei fondamenti della meccanica analitica e fornisce una formulazione variazionale delle leggi del moto.

Si definisce l’azione $\mathcal{S}$ associata a un sistema meccanico come $$ \mathcal{S}[q] = \int_{t_1}^{t_2} \mathcal{L}(q,\dot{q},t)\,dt, $$ dove $\mathcal{L}(q,\dot{q},t)$ è la lagrangiana del sistema, $q(t)$ rappresenta l’insieme delle coordinate generalizzate e $\dot{q}(t)$ le rispettive velocità.

Il Principio di Hamilton afferma che il moto reale del sistema tra due istanti $t_1$ e $t_2$ rende stazionaria l’azione $\mathcal{S}$ rispetto a tutte le variazioni ammissibili delle coordinate generalizzate, cioè $$ \delta \mathcal{S} = 0, $$ con le condizioni ai bordi $$ \delta q(t_1) = \delta q(t_2) = 0. $$

Consideriamo una variazione infinitesima della traiettoria $$ q(t) \rightarrow q(t) + \varepsilon \eta(t), $$ dove $\eta(t)$ è una funzione arbitraria che si annulla agli estremi temporali e $\varepsilon$ è un parametro infinitesimo.

La variazione dell’azione è $$ \delta \mathcal{S} = \int_{t_1}^{t_2} \left( \frac{\partial \mathcal{L}}{\partial q},\delta q\frac{\partial \mathcal{L}}{\partial \dot{q}},\delta \dot{q}\right) dt. $$

Integrando per parti il termine contenente $\delta \dot{q}$ e imponendo le condizioni al contorno, si ottiene $$ \delta \mathcal{S} = \int_{t_1}^{t_2} \left[ \frac{\partial \mathcal{L}}{\partial q}>\frac{d}{dt}\left( \frac{\partial \mathcal{L}}{\partial \dot{q}} \right) \right] \delta q , dt. $$

Poiché la variazione $\delta q(t)$ è arbitraria, la condizione $\delta \mathcal{S} = 0$ implica l’equazione di Eulero--Lagrange: $$ \frac{d}{dt} \left( \frac{\partial \mathcal{L}}{\partial \dot{q}} \right)\frac{\partial \mathcal{L}}{\partial q} = 0. $$ Nel caso di un sistema conservativo con lagrangiana $$\mathcal{L} = T - V, $$

dove $T$ è l’energia cinetica e $V$ il potenziale, il Principio di Hamilton è equivalente alle leggi di Newton, ma fornisce una formulazione più generale e potente.

Uno degli aspetti più importanti del Principio di Hamilton è la sua indipendenza dal sistema di coordinate utilizzato. Questo rende il formalismo lagrangiano particolarmente adatto allo studio di sistemi vincolati, sistemi con più gradi di libertà e teorie fisiche avanzate.

Infine, il Principio di Hamilton costituisce il punto di partenza naturale per:

  • la meccanica hamiltoniana,
  • la teoria dei campi classici,
  • la meccanica quantistica (formulazione integrale di cammino),
  • la relatività generale.

In questo senso, il Principio dell’Azione Stazionaria rappresenta un principio unificante dell’intera fisica teorica.

Approccio simbolico¶

In [15]:
import sympy as sp 

def compute_euler_lagrange(L, q, q_dot, t):
    """
    Compute Euler-Lagrange equation based on the Lagrangian.
        :param L: Lagrangian function L(q, q_dot, t).
        :param q: Generalized coordinate q(t).
        :param q_dot: Generalized velocity q'(t).
        :param t: Time variable.
    :return: 
        Euler—Lagrange equation as a symbolic expression.
    """
    dL_dq = sp.diff(L, q)
    dL_dq_dot = sp.diff(L, q_dot)
    d_dt_dL_dq_dot = sp.diff(dL_dq_dot, t)
    euler_lagrange_eq = d_dt_dL_dq_dot - dL_dq
    return euler_lagrange_eq

# Define symbols
t = sp.Symbol('t')
x = sp.Function('x')(t)
x_dot = sp.Derivative(x, t)
m, k = sp.symbols('m k') # mass and spring constant

# Define Lagrangian for a simple harmonic oscillator
L = (1/2) * m * x_dot**2 - (1/2) * k * x**2
# Compute Euler-Lagrange equation
euler_lagrange_eq = compute_euler_lagrange(L, x, x_dot, t)
print("Euler-Lagrange Equation:")
display(euler_lagrange_eq.simplify())
Euler-Lagrange Equation:
$\displaystyle 1.0 k x{\left(t \right)} + 1.0 m \frac{d^{2}}{d t^{2}} x{\left(t \right)}$

Oscillatore armonico¶

Approccio numerico¶

In [17]:
import numpy as np
from scipy.integrate import solve_ivp

def solve_harmonic_oscillator(m_value, k_value, initial_conditions, t_span):
    """
    Solve the harmonic oscillator problem numerically.
    """

    def equation_system(t, y):
        x, v = y
        dxdt = v
        dvdt = -(k_value / m_value) * x
        return [dxdt, dvdt]

    t_eval = np.linspace(t_span[0], t_span[1], 100)

    sol = solve_ivp(equation_system, t_span, initial_conditions, t_eval=t_eval)
    return sol

# Example usage
m_val = 1.0
k_val = 1.0
initial_cond = (1.0, 0.0)
time_span = (0, 10)

solution = solve_harmonic_oscillator(m_val, k_val, initial_cond, time_span)

import matplotlib.pyplot as plt
plt.figure(figsize=(6,3))
plt.plot(solution.t, solution.y[0], label='Position (x)')
plt.plot(solution.t, solution.y[1], label='Velocity (v)')
plt.xlabel('Time')
plt.ylabel('Values')
plt.title('Harmonic Oscillator')
plt.legend()
plt.show()

a=1
No description has been provided for this image
In [ ]: