Файл:Inclinedthrow.gif — Википедия

Inclinedthrow.gif (400 × 288 пкс, размер файла: 374 КБ, MIME-тип: image/gif, закольцованный, 102 фрейма, 10 с)

Краткое описание

Описание
English: Trajectories of three objects thrown at the same angle (70°). The black object doesn't experience any form of drag and moves along a parabola. The blue object experiences Stokes' drag, and the green object Newton drag.
Дата
Источник Собственная работа
Автор AllenMcC.
Другие версии Inclinedthrow2.gif
GIF‑разработка
InfoField
 
Это plot было создано с помощью Matplotlib
Исходный код
InfoField

Python code

#!/usr/bin/python3 # -*- coding: utf8 -*-  import os import inspect from math import * import numpy as np from scipy.integrate import odeint from scipy.optimize import newton import matplotlib as mpl import matplotlib.pyplot as plt from matplotlib import animation  # settings mpl.rcParams['path.snap'] = False fname = 'inclinedthrow' size = 400, 288 l, w, b, h = 22.5/size[0], 1-23/size[0], 22.5/size[1], 1-23/size[1] nframes = 102 delay = 8 lw = 1. ms = 6 c1, c2, c3 = "#000000", "#0000ff", "#007100"  def projectile_motion(g, mu, pot, xy0, vxy0, tt):     # use a four-dimensional vector function vec = [x, y, vx, vy]     def dif(vec, t):         # time derivative of the whole vector vec         v = hypot(vec[2], vec[3])         vxrel, vyrel = vec[2] / v, vec[3] / v         return [vec[2], vec[3], -mu * v**pot * vxrel, -g - mu * v**pot * vyrel]      # solve the differential equation numerically     vec = odeint(dif, [xy0[0], xy0[1], vxy0[0], vxy0[1]], tt)     return vec[:, 0], vec[:, 1], vec[:, 2], vec[:, 3]  # return x, y, vx, vy  g = 1. theta  = radians(70) v0 = sqrt(g/sin(2*theta)) vinf = 2.1 # use identical terminal velocity vinf for both types of friction mu_stokes = g / vinf**1 mu_newton = g / vinf**2 x0, y0 = 0.0, 0.0 vx0, vy0 = v0 * cos(theta), v0 * sin(theta)  T = newton(lambda t: projectile_motion(g, 0, 0, (x0, y0), (vx0, vy0), [0, t])[1][1], 2*vy0/g) nsub = 10 tt = np.linspace(0, T * nframes / (nframes - 1), (nframes - 1) * nsub + 1)  traj_free = projectile_motion(g, 0, 0, (x0, y0), (vx0, vy0), tt) traj_stokes = projectile_motion(g, mu_stokes, 1, (x0, y0), (vx0, vy0), tt) traj_newton = projectile_motion(g, mu_newton, 2, (x0, y0), (vx0, vy0), tt)  def animate(nframe, saveframes=False):     print(nframe, '/', nframes)     t = T * float(nframe) / nframes          plt.clf()     fig.gca().set_position((l, b, w, h))     fig.gca().set_aspect("equal")     plt.xlim(0, 1)     plt.ylim(0, (h*size[1]) / (w*size[0]))     plt.xticks([]), plt.yticks([])     plt.xlabel('Distance', size=12)     plt.ylabel('Height', size=12)          plt.plot(traj_free[0][:nframe*nsub+1], traj_free[1][:nframe*nsub+1],         '-', lw=lw, color=c1)     plt.plot(traj_free[0][nframe*nsub], traj_free[1][nframe*nsub],         'ok', color=c1, markersize=ms, markeredgewidth=0)          plt.plot(traj_stokes[0][:nframe*nsub+1], traj_stokes[1][:nframe*nsub+1],         '-', lw=lw, color=c2)     plt.plot(traj_stokes[0][nframe*nsub], traj_stokes[1][nframe*nsub],         'ok', color=c2, markersize=ms, markeredgewidth=0)          plt.plot(traj_newton[0][:nframe*nsub+1], traj_newton[1][:nframe*nsub+1],         '-', lw=lw, color=c3)     plt.plot(traj_newton[0][nframe*nsub], traj_newton[1][nframe*nsub],         'ok', color=c3, markersize=ms, markeredgewidth=0)          if saveframes:         # export frame         dig = int(ceil(log10(nframes)))         fsavename = ('frame{:0' + str(dig) + '}.svg').format(nframe)         fig.savefig(fsavename)         with open(fsavename) as f: content = f.read()         content = content.replace('pt"', 'px"').replace('pt"', 'px"')         with open(fsavename, 'w') as f: f.write(content)  fig = plt.figure(figsize=(size[0]/72., size[1]/72.))  os.chdir(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))) for i in range(nframes):     animate(i, True) os.system('convert -loop 0 -delay ' + str(delay) + ' frame*.svg +dither ' + fname + '.gif') # keep last frame for two seconds os.system('gifsicle -k32 --color-method blend-diversity -b ' + fname + '.gif -d' + str(delay) + ' "#0-' + str(nframes-2) + '" -d200 "#' + str(nframes-1) + '"') for i in os.listdir('.'):     if i.startswith('frame') and i.endswith('.svg'):         os.remove(i) 

Лицензирование

Я, владелец авторских прав на это произведение, добровольно публикую его на условиях следующей лицензии:
w:ru:Creative Commons
атрибуция распространение на тех же условиях
Этот файл доступен по лицензии Creative Commons Attribution-Share Alike 3.0 Unported.
Вы можете свободно:
  • делиться произведением – копировать, распространять и передавать данное произведение
  • создавать производные – переделывать данное произведение
При соблюдении следующих условий:
  • атрибуция – Вы должны указать авторство, предоставить ссылку на лицензию и указать, внёс ли автор какие-либо изменения. Это можно сделать любым разумным способом, но не создавая впечатление, что лицензиат поддерживает вас или использование вами данного произведения.
  • распространение на тех же условиях – Если вы изменяете, преобразуете или создаёте иное произведение на основе данного, то обязаны использовать лицензию исходного произведения или лицензию, совместимую с исходной.

Краткие подписи

Добавьте однострочное описание того, что собой представляет этот файл

Элементы, изображённые на этом файле

изображённый объект

У этого свойства есть некоторое значение без элемента в

История файла

Нажмите на дату/время, чтобы посмотреть файл, который был загружен в тот момент.

Дата/времяМиниатюраРазмерыУчастникПримечание
текущий16:10, 21 октября 2020Миниатюра для версии от 16:10, 21 октября 2020400 × 288 (374 КБ)Geek3adjusted friction coefficients such to make terminal velocity of both trajectories equal. In this case, the Newton projectile moves further.
12:57, 21 октября 2009Миниатюра для версии от 12:57, 21 октября 2009400 × 288 (453 КБ)AllenMcC.added Newton drag
00:40, 22 декабря 2008Миниатюра для версии от 00:40, 22 декабря 2008400 × 299 (393 КБ)AllenMcC.== Summary == {{Information |Description={{en|1=Trajectories of two objects thrown at the same angle. The blue object doesn't experience any drag and moves along a parabola. The black object experiences Stokes' drag.}} |Source=Own work by uploader |Author
20:12, 18 декабря 2008Миниатюра для версии от 20:12, 18 декабря 2008400 × 299 (393 КБ)AllenMcC.== Summary == {{Information |Description={{en|1=Trajectories of two objects thrown at the same angle. The blue object doesn't experience any drag and moves along a parabola. The black object experiences Stokes' drag.}} |Source=Own work by uploader |Author
04:07, 15 декабря 2008Миниатюра для версии от 04:07, 15 декабря 2008700 × 519 (636 КБ)AllenMcC.{{Information |Description={{en|1=Trajectories of two objects thrown at the same angle. The blue object doesn't experience friction and moves along a parabola. The black object experiences Stokes friction.}} |Source=Own work by uploader |Author=[[User:All

Следующие 3 страницы используют этот файл:

Глобальное использование файла

Данный файл используется в следующих вики:

Просмотреть глобальное использование этого файла.