Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # lentorataparaabelin kaaren laskentaa
- # Juhani Kaukoranta 9.10.2023
- from scipy.integrate import quad # kaaren pituuden laskemista varten
- from scipy.optimize import fsolve # derivaatan nollakohdan laskemista varten
- from numpy import sqrt, pi, sin,cos,tan
- import numdifftools as nd # numeerinen derivaatta
- g = 1.622 # putouskiihtyvyys
- v0 = 10 # alkunopeus m/s
- def kaari(θ): # tapa 1. paraabelikaaren pituus
- def integrand(x):
- return sqrt(v0**2-2*g*v0*sin(θ)*x+g**2*x**2)
- I = quad(integrand,0,2*v0*sin(θ)/g) # lentokaaren integrointia
- return I[0]
- def ala(θ): # paraabelikaaren ja vaakatason välinen pinta-ala
- x1 = v0**2*sin(2*θ)/g
- return tan(θ)*x1**2/2-g*x1**3/(6*(v0*cos(θ))**2)
- f = nd.Derivative(kaari) # derivaatan nollakohtaa varten
- thetarad = fsolve(f,1)[0] # derivaatan nollakohta antaa maksimikohdan
- f = nd.Derivative(ala) # derivaatan nollakohtaa varten
- thetamaxala = fsolve(f,1)[0] # derivaatan nollakohta antaa maksimikohdan
- print("heittoliike, kun kaasukehän vastus on olemattoman pieni:")
- print("lähtönopeus = ",v0," m/s")
- print("putouskiihtyvyys g = ",g," m/s2")
- print("lentorata on paraabeli")
- print("maksimiparaabelikaaren pituus = ",round(kaari(thetarad),2)," m")
- print("maksimiparaabelikaari saadaan kulmalla ",round(thetarad*180/pi,2)," astetta")
- print("tällöin kaaren korkeus = ",round(v0**2*(sin(thetarad))**2/(2*g),2)," m")
- print("tällöin kaaren vaakakantama = ",round(2*v0*sin(thetarad)/g,2)," m")
- print("tällöin kaaren lentoaika = ",round(2*v0*sin(thetarad)/g,2)," s")
- print("pisin kantama saadaa kulmalla 45° = ",round(v0**2/g,2))
- print("kaaren korkeus kulmalla 45° = ",round((v0*sin(pi/4))**2/(2*g),2)," m")
- print("kulmalla 45° lentoaika = ",round(2*v0*sin(pi/4)/g,2), " s")
- print("paraabelialueen maksimipinta-ala saadaan kulmalla ",round(thetamaxala*180/pi,2)," astetta")
- print("paraabelinalueen maksimipinta-ala = ",round(ala(thetamaxala),2))
- print("maksimipinta-alaa vastaava kantama = ",round(v0**2*sin(2*thetamaxala)/g,2)," m")
- print("maksimipinta-alaa vastaava korkeus = ",round((v0*sin(thetamaxala))**2/(2*g),2)," m")
- print("maksimipinta-alaa vastaava lentoaika = ",round(2*v0*sin(thetamaxala)/g,2)," s")
- print("maksimikorkeuden ",round(v0**2/(2*g),3)," m tuottaa lähtökulma 90° = pystysuora")
- print("tällöin pystysuoran heiton vaakakantama on 0 m ja lentoaika ", round(2*v0/g,2)," s")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement