Advertisement
jukaukor

lentorataparaabeli.py

Oct 3rd, 2023 (edited)
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.35 KB | None | 0 0
  1. # lentorataparaabelin kaaren laskentaa
  2. # Juhani Kaukoranta 9.10.2023
  3. from scipy.integrate import quad # kaaren pituuden laskemista varten
  4. from scipy.optimize import fsolve # derivaatan nollakohdan laskemista varten
  5. from numpy import sqrt, pi, sin,cos,tan
  6. import numdifftools as nd # numeerinen derivaatta
  7. g = 1.622 # putouskiihtyvyys
  8. v0 = 10 # alkunopeus m/s
  9. def kaari(θ): # tapa 1. paraabelikaaren pituus
  10. def integrand(x):
  11. return sqrt(v0**2-2*g*v0*sin(θ)*x+g**2*x**2)
  12. I = quad(integrand,0,2*v0*sin(θ)/g) # lentokaaren integrointia
  13. return I[0]
  14. def ala(θ): # paraabelikaaren ja vaakatason välinen pinta-ala
  15. x1 = v0**2*sin(2*θ)/g
  16. return tan(θ)*x1**2/2-g*x1**3/(6*(v0*cos(θ))**2)
  17.  
  18. f = nd.Derivative(kaari) # derivaatan nollakohtaa varten
  19. thetarad = fsolve(f,1)[0] # derivaatan nollakohta antaa maksimikohdan
  20. f = nd.Derivative(ala) # derivaatan nollakohtaa varten
  21. thetamaxala = fsolve(f,1)[0] # derivaatan nollakohta antaa maksimikohdan
  22. print("heittoliike, kun kaasukehän vastus on olemattoman pieni:")
  23. print("lähtönopeus = ",v0," m/s")
  24. print("putouskiihtyvyys g = ",g," m/s2")
  25. print("lentorata on paraabeli")
  26. print("maksimiparaabelikaaren pituus = ",round(kaari(thetarad),2)," m")
  27. print("maksimiparaabelikaari saadaan kulmalla ",round(thetarad*180/pi,2)," astetta")
  28. print("tällöin kaaren korkeus = ",round(v0**2*(sin(thetarad))**2/(2*g),2)," m")
  29. print("tällöin kaaren vaakakantama = ",round(2*v0*sin(thetarad)/g,2)," m")
  30. print("tällöin kaaren lentoaika = ",round(2*v0*sin(thetarad)/g,2)," s")
  31. print("pisin kantama saadaa kulmalla 45° = ",round(v0**2/g,2))
  32. print("kaaren korkeus kulmalla 45° = ",round((v0*sin(pi/4))**2/(2*g),2)," m")
  33. print("kulmalla 45° lentoaika = ",round(2*v0*sin(pi/4)/g,2), " s")
  34. print("paraabelialueen maksimipinta-ala saadaan kulmalla ",round(thetamaxala*180/pi,2)," astetta")
  35. print("paraabelinalueen maksimipinta-ala = ",round(ala(thetamaxala),2))
  36. print("maksimipinta-alaa vastaava kantama = ",round(v0**2*sin(2*thetamaxala)/g,2)," m")
  37. print("maksimipinta-alaa vastaava korkeus = ",round((v0*sin(thetamaxala))**2/(2*g),2)," m")
  38. print("maksimipinta-alaa vastaava lentoaika = ",round(2*v0*sin(thetamaxala)/g,2)," s")
  39. print("maksimikorkeuden ",round(v0**2/(2*g),3)," m tuottaa lähtökulma 90° = pystysuora")
  40. print("tällöin pystysuoran heiton vaakakantama on 0 m ja lentoaika ", round(2*v0/g,2)," s")
  41.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement