Датотека:Inclinedthrow.gif

Inclinedthrow.gif(400 × 288 пиксела, величина датотеке: 374 kB, 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 genesis
InfoField
This plot was created with Matplotlib.
Изворни код
InfoField

Python code

#!/usr/bin/python3# -*- coding: utf8 -*-import osimport inspectfrom math import *import numpy as npfrom scipy.integrate import odeintfrom scipy.optimize import newtonimport matplotlib as mplimport matplotlib.pyplot as pltfrom matplotlib import animation# settingsmpl.rcParams['path.snap'] = Falsefname = 'inclinedthrow'size = 400, 288l, w, b, h = 22.5/size[0], 1-23/size[0], 22.5/size[1], 1-23/size[1]nframes = 102delay = 8lw = 1.ms = 6c1, 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, vyg = 1.theta  = radians(70)v0 = sqrt(g/sin(2*theta))vinf = 2.1# use identical terminal velocity vinf for both types of frictionmu_stokes = g / vinf**1mu_newton = g / vinf**2x0, y0 = 0.0, 0.0vx0, 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 = 10tt = 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 secondsos.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:sr:Creative Commons
ауторство делити под истим условима
Ова датотека је доступна под лиценцом Creative Commons Ауторство-Делити под истим условима 3.0 Unported.
Дозвољено је:
  • да делите – да умножавате, расподељујете и преносите дело
  • да прерађујете – да прерадите дело
Под следећим условима:
  • ауторство – Морате да дате одговарајуће заслуге, обезбедите везу ка лиценци и назначите да ли су измене направљене. Можете то урадити на било који разуман манир, али не на начин који предлаже да лиценцатор одобрава вас или ваше коришћење.
  • делити под истим условима – Ако измените, преобразите или доградите овај материјал, морате поделити своје доприносе под истом или компатибилном лиценцом као оригинал.

Натписи

Укратко шта ова датотека представља/приказује

Ставке приказане у овој датотеци

приказује

Нека вредност без ставке на Википодаци

15. децембар 2008

Историја датотеке

Кликните на датум/време да бисте видели тадашњу верзију датотеке.

Датум/времеМинијатураДимензијеКорисникКоментар
тренутна18:10, 21. октобар 2020.Минијатура за верзију на дан 18:10, 21. октобар 2020.400 × 288 (374 kB)Geek3adjusted friction coefficients such to make terminal velocity of both trajectories equal. In this case, the Newton projectile moves further.
14:57, 21. октобар 2009.Минијатура за верзију на дан 14:57, 21. октобар 2009.400 × 288 (453 kB)AllenMcC.added Newton drag
02:40, 22. децембар 2008.Минијатура за верзију на дан 02:40, 22. децембар 2008.400 × 299 (393 kB)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
22:12, 18. децембар 2008.Минијатура за верзију на дан 22:12, 18. децембар 2008.400 × 299 (393 kB)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
06:07, 15. децембар 2008.Минијатура за верзију на дан 06:07, 15. децембар 2008.700 × 519 (636 kB)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

2 следеће странице користе ову датотеку:

Глобална употреба датотеке

Други викији који користе ову датотеку:

Још глобалног коришћења ове датотеке.