Inclinedthrow.gif(400 × 288 piksèl, gwosè fichye a : 374 kio, tip MIME li ye : image/gif, en boucle, 102 trames, 10 s)

Fichye sa a sòti nan Wikimedia Commons e ka sèvi nan lòt pwojè. Desktripsyon ki sou paj li file description page ekri anba a.

Rezime

Deskripsyon
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.
Dat
Sous Travay pèsonèl
Kreyatè AllenMcC.
Autres versions Inclinedthrow2.gif
GIF information
InfoField
 
Cette représentation graphique a été créée avec Matplotlib
Code source
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)

Kondisyon itlizasyon

Moi, en tant que détenteur des droits d’auteur sur cette œuvre, je la publie sous la licence suivante :
w:fr:Creative Commons
Rekonèt avèk non otè Enfòmasyon sa yo ka pataje
Fichye sa a distribiye selon lisans Creative Commons.
Ou gen dwa:
  • pou pataje – pou kopye, distribiye epi difize ouvraj la
  • pou remiks – pou adapte ouvraj la
Selon kondisyon sa a yo:
  • Rekonèt avèk non otè – Ou dwe bay enfòmasyon apwopriye sou otè a, bay yon lyen pou lisans lan, epi endike si te gen chanjman ki fèt. Ou ka fè sa nan nenpòt fason rezonab, men okenn fason ki sijere ke otè a soutni oswa apwouve itilizasyon ou an.
  • Enfòmasyon sa yo ka pataje – Si ou fè rekopye, transfòme, oswa baze sou materyèl sa, ou dwe distribye kontribisyon ou anba menm oswa yon lisans konpatib avèk orijinal la.

Légendes

Ajoutez en une ligne la description de ce que représente ce fichier

Éléments décrits dans ce fichier

dépeint français

créé par français

Valeur sans élément de Wikidata

15 desanm 2008

Istorik fichye a

Klike sou yon dat/yon lè pou wè fichye a jan li te ye nan moman sa a.

Dat ak lèMinyatiGrandè yoItilizatèKomantè
Kounye a21 oktòb 2020 à 16:10Minyati pou vèsyon 21 oktòb 2020 à 16:10400 × 288 (374 kio)Geek3adjusted friction coefficients such to make terminal velocity of both trajectories equal. In this case, the Newton projectile moves further.
21 oktòb 2009 à 12:57Minyati pou vèsyon 21 oktòb 2009 à 12:57400 × 288 (453 kio)AllenMcC.added Newton drag
22 desanm 2008 à 00:40Minyati pou vèsyon 22 desanm 2008 à 00:40400 × 299 (393 kio)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
18 desanm 2008 à 20:12Minyati pou vèsyon 18 desanm 2008 à 20:12400 × 299 (393 kio)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
15 desanm 2008 à 04:07Minyati pou vèsyon 15 desanm 2008 à 04:07700 × 519 (636 kio)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

paj sa a itilize fichye sa a:

Itilizasyon global fichye a

Wiki sa a yo sèvi ak fichye sa a:

Gade plis itilizasyon global fichye sa a.