Automatický výpočet Hamiltonových rovnic z lagranžiánu v pythonu pomocí sympy - vyzkoušené příklady.

Tento jednoduchý skript řeší poměrně otravný problém, který je však snadno algoritmizovatelný. Jsou to jen opakované parciální derivace, jejichž výsledky jsou dosazovány do daných výrazů. Protože se přitom člověk snadno splete (hlavně ve znaménku), je lepší to nechat na programu. Stačí nadefinovat potřebné symboly pro konstanty a časově závislé proměnné (zobecněné souřadnice), pomocí nich pak vyjádřit lagranžián a o zbytek se postará python.


Řešený problém : Railgun

1.1. Zadaný lagranžián :

\[L = \frac{m \left(\dot{x}\right)^{2}}{2} + \frac{\mu \left(\dot{Q}\right)^{2}}{2} x - \frac{Q^{2}}{2 C}\]

1.2. Lagrangeovy rovnice :

\[\left [ m \ddot{x} - \frac{\mu \left(\dot{Q}\right)^{2}}{2} = 0, \quad \mu x \ddot{Q} + \mu \dot{Q} \dot{x} + \frac{Q}{C} = 0\right ]\]

1.3. Hamiltonova funkce :

\[H = \frac{p^{2}_{Q}}{2 \mu x} + \frac{p^{2}_{x}}{2 m} + \frac{Q^{2}}{2 C}\]

1.4. Hamiltonovy kanonické rovnice :

\[\dot{x}=\frac{p_{x}}{m}\qquad\] \[\dot{p}_{x}=\frac{p^{2}_{Q}}{2 \mu x^{2}}\qquad\]
\[\dot{Q}=\frac{p_{Q}}{\mu x}\qquad\] \[\dot{p}_{Q}=- \frac{Q}{C}\qquad\]

Řešený problém : Pohyb planety

2.1. Zadaný lagranžián :

\[L = \frac{G M}{r} m + \frac{m}{2} \left(r^{2} \left(\dot{\phi}\right)^{2} + \left(\dot{r}\right)^{2}\right)\]

2.2. Lagrangeovy rovnice :

\[\left [ \frac{G M}{r^{2}} - r \left(\dot{\phi}\right)^{2} + \ddot{r} = 0, \quad r^{2} \ddot{\phi} + 2 r \dot{\phi} \dot{r} = 0\right ]\]

2.3. Hamiltonova funkce :

\[H = - \frac{G M}{r} m + \frac{p^{2}_{\phi}}{2 m r^{2}} + \frac{p^{2}_{r}}{2 m}\]

2.4. Hamiltonovy kanonické rovnice :

\[\dot{r}=\frac{p_{r}}{m}\qquad\] \[\dot{p}_{r}=- \frac{G M}{r^{2}} m + \frac{p^{2}_{\phi}}{m r^{3}}\qquad\]
\[\dot{\phi}=\frac{p_{\phi}}{m r^{2}}\qquad\] \[\dot{p}_{\phi}=0\qquad\]

Řešený problém : Harmonický oscilátor

3.1. Zadaný lagranžián :

\[L = - \frac{m \omega^{2}}{2} x^{2} + \frac{m \left(\dot{x}\right)^{2}}{2}\]

3.2. Lagrangeovy rovnice :

\[\left [ \omega^{2} x + \ddot{x} = 0\right ]\]

3.3. Hamiltonova funkce :

\[H = \frac{m \omega^{2}}{2} x^{2} + \frac{p^{2}_{x}}{2 m}\]

3.4. Hamiltonovy kanonické rovnice :

\[\dot{x}=\frac{p_{x}}{m}\qquad\] \[\dot{p}_{x}=- m \omega^{2} x\qquad\]