Маятники

Колебательные процессы появляютя при наличии в системе положения устойчивого равновесия. Механическим примером таких систем являются маятники - тела, подвешенные в поле силы тяжести. Уравнение движения такой системы в простейшем случае имеет вид: \(J\frac{d^2\phi}{dt^2}=-M(\phi)\), где J - момент инерции системы, M - момент сил, возвращающих систему в положение равновесия.

Математический маятник

В случае математического маятника длины l \(J=m \cdot l^2\), \(M = gl \cdot sin(\phi)\), что дает уравнение движения \(\frac{d^2\phi}{dt^2}+ \frac{g}{l} \phi=0\).

Для его решения воспользуемся функцией odeint() модуля scipy.integrate.

  • Задаем функцию, возвращающую столбец правых частей системы уравнений:

    def force_math(f,t):
        """ The dynamical flow of the system """
        return f[1],-g/L*sin(f[0]) # f[0] is fi, angle# f[0] is fi, angle
    

    Используется стандартный вид функции, принимающий координаты точки (данном случае значение угла и его первой производной) и время, возвращающий значения производных от каждой компоненты вектора.

  • Задаем моменты времени, для которых вычисляется положения маятника:

    # Times at which we want the integrator to return the positions:
    N=10000
    t = np.linspace(0, 50, N)
    
  • Решаем систему, получаем доступ к массиву координат,находим декартовые координаты маятника, строим графики:

    # Initial conditions
    R0 = np.array([np.pi*0.99, 0.])
    
    R = integr.odeint(force_math, R0, t)
    
    phi, phi_dot, = R.T
    x = L*np.sin(phi)
    y = -L*np.cos(phi)
    
    py.plot(t, x)
    py.plot(t, y)
    py.show()
    
    

Маятник Капицы

Рассмотрим математический маятник, точка подвеса которого совершает гармонические колебания погармоническому закону: \(y_o(t)=a*cos(\gamma t)\). Уравнение движения такого маятника имеет вид \(\frac{d^2\phi}{dt^2}+ (\frac{g}{l}+\frac{a \gamma^2}{l} cos(\gamma t)) \cdot sin(\phi)=0\)

Для решения уравнения зададим новую функцию, возвращающую столбец правых частей интегрального уравнения:

def force_kapitsa(f,t):
    return f[1],-(g/L+a/L*gamma**2*cos(gamma*t))*sin(f[0])

Решение проводим по алгортму, описанному выше.

Задайте частоту внешней силы в 10 раз больже частоты собственных колебаний.

Попробуйте установить амплитуду выдуждающие силы больше \(\sqrt{2gl/ \gamma^2}\). Что происходит, если маятник запускать из положения близкого к 180 градусам?

Выполнить описанный пример