Спасет Ли Вас Python От Казни?

Добрый день! При просмотре боевиков (фильмов с хорошо проработанными динамическими сценами) иногда в голову закрадывается: а неужели это реально? Например, могла ли машина перевернуться на небольшой скорости, как быстро можно перемахнуть на веревке без начальной скорости над пропастью.



Спасет ли вас Python от казни?

Что на это говорит физика? Интересно написать на бумажке, а потом хвастаться бумажкой с формулами и парочкой векторов? Давайте сделаем это безопасно и четко.

Начнем с обычного математический маятник :

Спасет ли вас Python от казни?



Спасет ли вас Python от казни?



Спасет ли вас Python от казни?

Кстати, даже если в качестве аргумента принять синус, эксперименты с измерением периода маятника дают хорошие результаты для g. Но чтобы любоваться большими углами, нам нужно честно решить уравнение, особенно если scipy предоставляет такую возможность.

Разделим уравнение на два уравнения первого порядка и запишем его в стандартной форме

Спасет ли вас Python от казни?

И теперь мы можем смело кормить этим нашу змею (подробнее о scipy.integrate.odeint увы, в оригинале).

  
   

t = linspace(0,15,100) G = 9.8 L = 1.0 def diffeq(state, t): th, w = state return [w, -G/L*sin(th)] dt = 0.05 t = np.arange(0.0, 20, dt) th1 = 179.0 w1 = 0.0 state = np.radians([th1, w1]) y = odeint(diffeq, state, t)

На первом курсе в лаборатории механики были маятники; возможности каждого из них были практически исчерпаны рабочим заданием.

Но с одним было что-то не так, потому что это было невозможно сделать, привлекло больше всего внимания маятник Обербека : «Что произойдет, если вы не закрепите гириЭ» И вот, спустя N лет, я увидел в фильме (очередные Пираты Карибского моря), что будет! Хмммм, это действительно правда? Для этого достаточно написать всего два уравнения, первое из которых записано в системе покоя направляющей лопатки с учетом переноса и ускорения Кориолиса.



Спасет ли вас Python от казни?

Куда делась масса гильотины? Как и в большинстве задач без трения, оно было и справа, и слева от равенства, и ни на что не влияет. Наслаждаемся результатами:

Спасет ли вас Python от казни?



Спасет ли вас Python от казни?

Если начальная скорость велика, то этот «аттракцион» безопасен после прохождения горизонтального положения.



import matplotlib.animation as animation from pylab import * from scipy.integrate import * import matplotlib.pyplot as plt t = linspace(0,15,100) G = 9.8 L = 10.0 def derivs(state, t): th, w, r, v = state if 0.<r<L or w**2*r>G*cos(th): return [w, -G/r*sin(th), -v, (-w**2*r-G*cos(th)-G*sin(th)-2*w*v)] elif w**2*r<G*cos(th): return [w,-G/r*sin(th),-v, w**2*r-G*cos(th)] return [w,-G/r*sin(th), 0,0] dt = 0.01 t = np.arange(0.0, 20, dt) th1 = 180.0 w1 = 50. r1 = L*0.9 v1 = 0.0 state = np.radians([th1, w1]) state = np.append(state, [r1, v1]) y = odeint(derivs, state, t) x1 = L*sin(y[:, 0]) y1 = -L*cos(y[:, 0]) x2 = (y[:,2].

clip(min = 0, max = L))*sin(y[:, 0]) y2 = -(y[:,2].

clip(min = 0, max = L))*cos(y[:, 0]) fig = plt.figure() ax = fig.add_subplot(111, autoscale_on=False, xlim=(-L-0.2, L+0.2), ylim=(-L-0.2, L+0.2)) ax.grid() line, = ax.plot([], [], '-', lw=2) point, = ax.plot(0,0,'o', lw=2) extra, = ax.plot(x1/L*r1,y1/L*r1,'o', lw=2) time_template = 'time = %.

1fs' time_text = ax.text(0.05, 0.9, '', transform=ax.transAxes) def init(): line.set_data([], []) point.set_data(0,0) time_text.set_text('') extra.set_data(x1/L*r1,y1/L*r1) return line, time_text, point, extra def animate(i): thisx = [0, x1[i]] thisy = [0, y1[i]] thisx2 = x2[i] thisy2 = y2[i] point.set_data(thisx[0],thisy[0]) line.set_data(thisx, thisy) time_text.set_text(time_template % (i*dt)) extra.set_data([thisx2,thisy2]) return line, time_text, point, extra ani = animation.FuncAnimation(fig, animate, np.arange(1, len(y)), interval=25, blit=True, init_func=init, repeat = False) show()

P.S. Здесь начал копать.

P.S.S. Играя с начальными параметрами (при малых углах отклонения от вертикали или малых начальных угловых скоростях), можно прийти к «плоскому» пониманию устойчивости гироскопов.

Лучше нам быть добрыми и не попасть под гильотину! Теги: #физика движения #моделирование #кинематика твердого тела #дифференциальные уравнения #маятник Обербека #python #программирование #математика

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.