Gebruikersavatar
ukster
Artikelen: 0
Berichten: 4.909
Lid geworden op: za 28 nov 2015, 10:42

Re: Projectielbaan

Da's een hoop werk geweest. Dank voor deze inspanning.
Even met de gebruikelijke definitie van k:
k-factor
k-factor 1239 keer bekeken
Met m'n pyhon code kom ik dan op L=224m ,H=59,5m xA=114m
(Jij komt op L=232m, H=60,95m en xA=119,1m)
projectile trajectory
voor L is dat toch een verschil van zo'n 8m,voor xA 5m en voor de max hoogte 1,5m
Er zal ergens een foutje in m'n Pythoncode zitten, al weet ik niet waar. misschien zie jij het!

Code: Selecteer alles

import numpy as np
import matplotlib.pyplot as plt
M=4.084070444       #massa (kg)
g=9.81      #gravity (m/s^2]
v=50        #initiele snelheid [m/s]
ang=45      #hoek [degr] met de x-as
k=0.002431593  #drag factor

vx=[v*np.cos(ang/180*np.pi)]
vy=[v*np.sin(ang/180*np.pi)]

#drag Force
F=k*v**2

#calculate initial acceleration component ax and ay
ax=[-(F*np.cos(ang/180*np.pi))/M]
ay=[-g-(F*np.sin(ang/180*np.pi))/M]

#calculate for time value on the object
t=[0]
counter=0
dt=0.01
x=[0]
y=[0]

while(y[counter]>=0):
    t.append(t[counter]+dt)
    vx.append(vx[counter]+dt*ax[counter])
    vy.append(vy[counter]+dt*ay[counter])
    x.append(x[counter]+dt*vx[counter])
    y.append(y[counter]+dt*vy[counter])
       
    #calculatie magnitude of new velocity
    vel=np.sqrt(vx[counter+1]**2+vy[counter+1]**2)
    F=k*vel**2
    ax.append(-(F*np.cos(ang/180*np.pi))/M)
    ay.append(-g-(F*np.sin(ang/180*np.pi))/M)
    counter=counter+1
  
    plt.plot(x,y)
    plt.ylabel("Y [m]")
    plt.xlabel("X (m)")
    plt.show()
Gebruikersavatar
Rik Speybrouck
Artikelen: 0
Berichten: 892
Lid geworden op: do 06 aug 2015, 10:32

Re: Projectielbaan

ukster schreef: za 30 okt 2021, 12:18 Da's een hoop werk geweest. Dank voor deze inspanning.
Even met de gebruikelijke definitie van k:
k-factor.png
Met m'n pyhon code kom ik dan op L=224m ,H=59,5m xA=114m
(Jij komt op L=232m, H=60,95m en xA=119,1m)
projectile trajectory.png
voor L is dat toch een verschil van zo'n 8m,voor xA 5m en voor de max hoogte 1,5m
Er zal ergens een foutje in m'n Pythoncode zitten, al weet ik niet waar. misschien zie jij het!

Code: Selecteer alles

import numpy as np
import matplotlib.pyplot as plt
M=4.084070444       #massa (kg)
g=9.81      #gravity (m/s^2]
v=50        #initiele snelheid [m/s]
ang=45      #hoek [degr] met de x-as
k=0.002431593  #drag factor

vx=[v*np.cos(ang/180*np.pi)]
vy=[v*np.sin(ang/180*np.pi)]

#drag Force
F=k*v**2

#calculate initial acceleration component ax and ay
ax=[-(F*np.cos(ang/180*np.pi))/M]
ay=[-g-(F*np.sin(ang/180*np.pi))/M]

#calculate for time value on the object
t=[0]
counter=0
dt=0.01
x=[0]
y=[0]

while(y[counter]>=0):
    t.append(t[counter]+dt)
    vx.append(vx[counter]+dt*ax[counter])
    vy.append(vy[counter]+dt*ay[counter])
    x.append(x[counter]+dt*vx[counter])
    y.append(y[counter]+dt*vy[counter])
       
    #calculatie magnitude of new velocity
    vel=np.sqrt(vx[counter+1]**2+vy[counter+1]**2)
    F=k*vel**2
    ax.append(-(F*np.cos(ang/180*np.pi))/M)
    ay.append(-g-(F*np.sin(ang/180*np.pi))/M)
    counter=counter+1
  
    plt.plot(x,y)
    plt.ylabel("Y [m]")
    plt.xlabel("X (m)")
    plt.show()
natuurlijk blijven opletten met k ik zit met 0.000595.....
Gebruikersavatar
ukster
Artikelen: 0
Berichten: 4.909
Lid geworden op: za 28 nov 2015, 10:42

Re: Projectielbaan

Ja dat begrijp ik

jouw k is mijn k gedeeld door de massa M

De dragforce is dan ook anders gedefinieerd

in mijn geval: Fd=kv2
in jouw geval: Fd=mkv2

maar dat moet in de berekeningen dan toch verder niet uitmaken?
Gebruikersavatar
Rik Speybrouck
Artikelen: 0
Berichten: 892
Lid geworden op: do 06 aug 2015, 10:32

Re: Projectielbaan

ukster schreef: za 30 okt 2021, 12:39 Ja dat begrijp ik

jouw k is mijn k gedeeld door de massa M

De dragforce is dan ook anders gedefinieerd

in mijn geval: Fd=kv2
in jouw geval: Fd=mkv2

maar dat moet in de berekeningen dan toch verder niet uitmaken?
in de meeste publicaties zie je de k uitgedrukt zoals in mijn berekeningsblad. Je kan in de file natuurlijk deze waarde even overtypen met jouw voorstel. Dit is dan wel de waarde die wordt meegetrokken in heel de berekening. Je kan daarna de voorgestelde waarde herstellen.. Mijn k is duidelijk de balistiche coeficient waar geen verdere parameters meer moeten aan toegevoegd worden.
Gebruikersavatar
ukster
Artikelen: 0
Berichten: 4.909
Lid geworden op: za 28 nov 2015, 10:42

Re: Projectielbaan

Dit kan toch niet?
projectile trajectory
ziet iemand een fout in de code?

Code: Selecteer alles

import matplotlib.pyplot as plt
M=1  #massa (kg)
g=9.81   #gravity (m/s^2]
v=450    #initiele snelheid [m/s]
ang=80 #hoek [degr] met de x-as
k=0.002  #drag factor

vx=[v*np.cos(ang/180*np.pi)]
vy=[v*np.sin(ang/180*np.pi)]

        #drag Force
F=k*v**2

        #calculate initial acceleration component x and y
ax=[-(F*np.cos(ang/180*np.pi))/M]
ay=[-g-(F*np.sin(ang/180*np.pi))/M]
       
        #calculate for time value on the object
t=[0]
counter=0
dt=0.05
x=[0]
y=[0]

while(y[counter]>=0):
    t.append(t[counter]+dt)
    vx.append(vx[counter]+dt*ax[counter])
    vy.append(vy[counter]+dt*ay[counter])
    x.append(x[counter]+dt*vx[counter])
    y.append(y[counter]+dt*vy[counter])
       
        #calculatie magnitude of new velocity
    vel=np.sqrt(vx[counter+1]**2+vy[counter+1]**2)
    F=k*vel**2
    ax.append(-(F*np.cos(ang/180*np.pi))/M)
    ay.append(-g-(F*np.sin(ang/180*np.pi))/M)
    counter=counter+1
  
    plt.plot(x,y)
    plt.ylabel("Y [m]")
    plt.xlabel("X (m)")
    plt.show()
Gebruikersavatar
Rik Speybrouck
Artikelen: 0
Berichten: 892
Lid geworden op: do 06 aug 2015, 10:32

Re: Projectielbaan

ik ken niets van zulke dingen, mijn uitwerking is helemaal met pen en papier en excel
Gebruikersavatar
Xilvo
Moderator
Artikelen: 0
Berichten: 10.699
Lid geworden op: vr 30 mar 2018, 16:51

Re: Projectielbaan

ukster schreef: za 30 okt 2021, 18:27 Dit kan toch niet?

ziet iemand een fout in de code?
Ik zie in ieder geval dat de hoek ang nergens ge-update wordt.

Ben je net met Python begonnen?
Gebruikersavatar
ukster
Artikelen: 0
Berichten: 4.909
Lid geworden op: za 28 nov 2015, 10:42

Re: Projectielbaan

Sorry Rik, dit slaat niet op jouw excelfile...die is perfect
ik probeerde wat dingen uit in pythoncode en kreeg dit plaatje te zien..
Mijn gevoel zegt dat zo'n traject omogelijk is, dus moet er een foutje in de code zitten
Gebruikersavatar
ukster
Artikelen: 0
Berichten: 4.909
Lid geworden op: za 28 nov 2015, 10:42

Re: Projectielbaan

Xilvo schreef: za 30 okt 2021, 18:42
ukster schreef: za 30 okt 2021, 18:27 Dit kan toch niet?

ziet iemand een fout in de code?
Ik zie in ieder geval dat de hoek ang nergens ge-update wordt.

Ben je net met Python begonnen?
Dat zal het zijn!

Spider IDE
deze code kwam ik tegen op youtube
zelf geen programmeerervaring
Gebruikersavatar
ukster
Artikelen: 0
Berichten: 4.909
Lid geworden op: za 28 nov 2015, 10:42

Re: Projectielbaan

Het gaat misschien wat ver, maar het zou me niet verbazen als met opzet 'cruciale code' ontbreekt in zo'n youtubevideo
Gebruikersavatar
Xilvo
Moderator
Artikelen: 0
Berichten: 10.699
Lid geworden op: vr 30 mar 2018, 16:51

Re: Projectielbaan

ukster schreef: za 30 okt 2021, 18:59 Het gaat misschien wat ver, maar het zou me niet verbazen als met opzet 'cruciale code' ontbreekt in zo'n youtubevideo
Komt die code uit een YT filmoje?
Gebruikersavatar
Xilvo
Moderator
Artikelen: 0
Berichten: 10.699
Lid geworden op: vr 30 mar 2018, 16:51

Re: Projectielbaan

Hier de code wat netter gemaakt.

Het enige essentiële verschil is de regel waarin de hoek angr opnieuw berekend wordt (angr=np.arctan(vy/vx))

Code: Selecteer alles

import matplotlib.pyplot as plt
M=1  #massa (kg)
g=9.81   #gravity (m/s^2]
v=450    #initiele snelheid [m/s]
ang=80 #hoek [degr] met de x-as
k=0.002  #drag factor

angr=np.deg2rad(ang) # hoek in rad
vx=v*np.cos(angr)
vy=v*np.sin(angr)

        #drag Force
F=k*v**2

        #calculate initial acceleration component x and y
ax=-(F*np.cos(angr))/M
ay=-g-(F*np.sin(angr))/M
       
        #calculate for time value on the object
t=0
tr=[0]
counter=0
dt=0.05
x=0
y=0
xr=[x]
yr=[y]
while(y>=0):
    vel=np.sqrt(vx**2+vy**2) # worteltrekken is overbodig, hierna 
    F=k*vel**2 #calculatie magnitude of new velocity
    ax=-F*np.cos(angr)/M
    ay=-g-F*np.sin(angr)/M
    vx+=dt*ax
    vy+=dt*ay
    x+=dt*vx
    y+=dt*vy       
    t+=dt
    tr.append(t)
    xr.append(x)
    yr.append(y)
    angr=np.arctan(vy/vx)
    counter=counter+1
  
plt.plot(xr,yr)
plt.ylabel("Y [m]")
plt.xlabel("X (m)")
plt.show()
Gebruikersavatar
ukster
Artikelen: 0
Berichten: 4.909
Lid geworden op: za 28 nov 2015, 10:42

Re: Projectielbaan

projectile trajectory
Dat ziet er meteen een stuk geloofwaardiger uit..
Dank daarvoor
Gebruikersavatar
Rik Speybrouck
Artikelen: 0
Berichten: 892
Lid geworden op: do 06 aug 2015, 10:32

Re: Projectielbaan

ukster schreef: za 30 okt 2021, 19:19 projectile trajectory.png
Dat ziet er meteen een stuk geloofwaardiger uit..
Dank daarvoor
er moet een kleine correctie gebeuren aan de excel file maar deze is alleen maar van toepassing wanneer je met een beginhoogte werkt. cel b 54 is een optelling en aftrekking van waarden. Je moet er cel b53 (beginhoogte deze is gelinkt aan cel b6) aan toevoegen in +
Gebruikersavatar
ukster
Artikelen: 0
Berichten: 4.909
Lid geworden op: za 28 nov 2015, 10:42

Re: Projectielbaan

Testje om jouw excelcorrectie te checken..
onder dezelfde condities:
beginhoogte =100m
horizontaal afschieten met 50m/s
Volgens het pythonprogramma land het projectiel op x=215,8m
test
test 1054 keer bekeken

Terug naar “Klassieke mechanica”