7Консервативные системы с одной степенью свободы

7.1Отступление: уравнения в Гамильтоновой форме

Определение 1. Пусть — какая-то гладкая функция, . Система
называется системой в гамильтоновой форме. Функция называется функцией Гамильтона

Утверждение 1. Функция является первым интегралом системы (7.1)

Доказательство. Посчитаем производную функции вдоль векторного поля
Имеем:
Иными словами, скорость изменения функции при движении вдоль решений дифференциального уравнения (7.1) равна нулю, то есть — первый интеграл. (См. утверждение 2 из главы 6).

Функция Гамильтона является аналогом полной энергии — которая, как известно, сохраняется. (Слово «консервативные» в заголовке лекции означает, что что-то сохраняется.) Конечно, не всякая система, обладающая первым интегралом, является гамильтоновой. Однако, если вам дали функцию и попросили придумать систему, для которой эта функция является первым интегралом, то вы можете смело использовать гамильтонову форму.

7.2Уравнение Ньютона

Рассмотрим уравнение
Оно задает поведение частицы с единичной массой, движущейся в одномерном фазовом пространстве под действием силы , которая зависит только от положения частицы.
import matplotlib.pyplot as plt
import numpy as np
import qqmbr.odebook as ob
# see https://github.com/ischurov/qqmbr/blob/master/qqmbr/odebook.py

plt.figure(figsize=(3,1))
plt.axis([-6,6,-1,2])
plt.axis('off')
plt.arrow( -5, 0, 10, 0, fc="k", ec="k", head_width=.5, head_length=1  )
plt.plot([0],[0],'o',linewidth=1)
plt.arrow( 0, 1, -1, 0, fc="k", ec="k", head_width=.5, head_length=.5)
plt.text(-1,1.6,"$F(x)$",fontsize=16)
plt.text(4.5, 1, "$x$", fontsize=16)
Рис. 7.1: На точечное тело с координатой действует сила
Перепишем уравнение (7.2) в виде системы:
Можно найти фазовые кривые этого уравнения Введём следующие функции:
  • — потенциальная энергия.
  • — кинетическая энергия.
  • — полная энергия.

Утверждение 2. Функция является первым интегралом системы (7.3).

Доказательство. Во-первых, это следует из (7.7). Во-вторых, можно заметить, что система (7.3) — гамильтонова. Наконец, можно явно посчитать производную вдоль векторного поля:
Утверждение доказано.

Итак, полная энергия системы является первым интегралом. Это позволяет нам рисовать фазовые кривые любых уравнений вида (7.2)

Пример 1. Уже знакомое нам уравнение осциллятора.
Его потенциальная энергия: , полная энергия . Построим график полной энергии:
import plotly
import plotly.graph_objs as go
from plotly.offline import iplot as plot
from plotly.offline import init_notebook_mode

init_notebook_mode()

import numpy as np

X, Y = np.mgrid[-2:2:100j, -2:2:100j]
Z = X**2/2 + Y**2/2

data = go.Surface(x = X, y = Y, z = Z)
plot([data])
Рис. 7.2: График полной энергии гармонического осциллятора

И его линии уровня (они же — фазовые кривые):

import matplotlib.pyplot as plt
import numpy as np
import qqmbr.odebook as ob
# see https://github.com/ischurov/qqmbr/blob/master/qqmbr/odebook.py

plt.figure(figsize=(6,6))
ob.axes4x4(labels=('x','y'))
F = lambda x, y: y**2 / 2 + x**2 / 2
ob.mcontour(np.linspace(-5,5,300),np.linspace(-5,5,300),F, 
         levels=[0.01,-0.5,0.5,0,-3,3,6,-6,12],linewidths=2,
         vmin=0,vmax=25,cmap=plt.cm.coolwarm)
ob.vectorfield(np.arange(-4,4,0.5),np.arange(-4,4,0.5), lambda x, y: (y, -x))
Рис. 7.3: Линии уровня функции полной энергии гармонического осциллятора
Заметим, что тут есть единственная особая точка (положение равновесия), где правая часть системы (7.3) равна нулевому вектору — это точка .

Пример 2. «Перевернутый маятник» вблизи положения равновесия.
Здесь сила пропорциональна отклонению и действует в сторону увеличения отклонения.

Потенциальная энергия , полная энергия . Как и в предыдущем примере, построим график и линии уровня полной энергии.

import plotly
import plotly.graph_objs as go
from plotly.offline import iplot as plot
from plotly.offline import init_notebook_mode

init_notebook_mode()

import numpy as np

X, Y = np.mgrid[-2:2:100j, -2:2:100j]
Z = -X**2/2 + Y**2/2

data = go.Surface(x = X, y = Y, z = Z)
plot([data])