WPROWADZENIE

Rzucaj膮c pi艂k膮 zastanawiamy si臋 jak daleko poleci oraz na jak膮 wysoko艣膰 si臋 wzniesie. Zar贸wno odleg艂o艣膰 jak i wysoko艣膰 zale偶膮 od wielu czynnik贸w, np:

  • pr臋dko艣膰 pocz膮tkowa,
  • przyspieszenie grawitacyjne,
  • k膮t rzutu,
  • op贸r powietrza,
  • si艂a i kierunek wiatru.

Je艣li pominiemy wiele czynnik贸w oraz przyjmiemy do艣膰 uproszczony model, b臋dziemy mogli przeprowadzi膰 eksperyment.

Je艣li we藕miemy pod uwag臋 jedynie:

  • przyspieszenie ziemskie jako sta艂膮 grawitacyjn膮 $g=9,8 \frac{m}{s^2}$,
  • pr臋dko艣膰 pocz膮tkow膮 (pr臋dko艣膰, z kt贸r膮 pi艂ka jest wyrzucana) w m/s,
  • k膮t rzutu w stopniach

to mo偶emy:

  1. ze wzoru $s=\frac{v^2 \cdot sin 2\alpha}{g}$ wyznaczy膰 odleg艂o艣膰 rzutu,
  2. ze wzoru聽 $h=\frac{v^2 \cdot sin^2 \alpha}{2g}$ wyznaczy膰 maksymaln膮 wysoko艣膰 jak膮 osi膮gnie pi艂ka.

gdzie:

  • $v$ – pr臋dko艣膰 pocz膮tkowa
  • $\alpha$ – k膮t rzutu (w radianach)
  • $g$ – sta艂a grawitacyjna – przyspieszenie ziemskie

Mo偶emy przeprowadzi膰 symulacj臋, jak b臋dzie zmienia膰 si臋 odleg艂o艣膰 i wysoko艣膰 rzutu, je艣li b臋dziemy zmienia膰 k膮t rzutu. 

Oczywistym jest, 偶e je艣li:

  • k膮t pocz膮tkowy jest ma艂y, to zar贸wno wysoko艣膰, jak i odleg艂o艣膰 jest niewielka – rzucamy prawie p艂asko, wi臋c pi艂ka nie wzniesie si臋 wysoko oraz nie poleci daleko,
  • k膮t pocz膮tkowy jest du偶y (rzucamy prawie pionowo), to mo偶e i wysoko艣膰 b臋dzie du偶a, ale odleg艂o艣膰 ma艂a.

Jak wi臋c dobra膰 k膮t, 偶eby odleg艂o艣膰 by艂a najwi臋ksza?


KOD W J臉ZYKU PYTHON

import math
g=9.81
def oblicz_odleglosc_rzutu(predkosc_poczatkowa, kat):
    kat_rad = math.radians(kat)
    odleglosc = (predkosc_poczatkowa**2 * math.sin(2 * kat_rad)) / g
    return odleglosc

def oblicz_wysokosc_rzutu(predkosc_poczatkowa, kat):
    kat_rad = math.radians(kat)
    wysokosc = (predkosc_poczatkowa**2 * math.sin(kat_rad)**2) / (2 * g)
    return wysokosc

predkosc = float(input("Podaj pr臋dko艣膰 pocz膮tkow膮 w m/s: "))
odleglosci = []
wysokosci = []

for kat in range(5, 81, 5):
    odleglosc_rzutu = oblicz_odleglosc_rzutu(predkosc, kat)
    wysokosc_rzutu = oblicz_wysokosc_rzutu(predkosc, kat)
    odleglosci.append(odleglosc_rzutu)
    wysokosci.append(wysokosc_rzutu)

print("K膮t (stopnie)\tOdleg艂o艣膰 (m)\tMaks. wysoko艣膰 (m)")
print("-----------------------------------------------")
for i in range(len(odleglosci)):
    odleglosc_format = '{:.2f}'.format(odleglosci[i]).replace('.', ',')
    wysokosc_format = '{:.2f}'.format(wysokosci[i]).replace('.', ',')
    print(f"{(i+1)*5}\t{odleglosc_format}\t{wysokosc_format}")

猬嗭笍猬嗭笍猬嗭笍 Zobacz w Google Colaboratory


JAK DZIA艁A PROGRAM?

  1. Importuje modu艂 math, kt贸ry jest potrzebny do wykonywania operacji matematycznych.
  2. Definiuje dwie funkcje:
  3. oblicz_odleglosc_rzutu(predkosc_poczatkowa, kat): Oblicza odleg艂o艣膰 rzutu dla podanej pr臋dko艣ci pocz膮tkowej i k膮ta rzutu. Wykorzystuje wz贸r d = (v^2 * sin(2胃)) / g, gdzie v to pr臋dko艣膰 pocz膮tkowa, 胃 to k膮t w radianach, a g to przyspieszenie ziemskie.
  4. oblicz_wysokosc_rzutu(predkosc_poczatkowa, kat): Oblicza maksymaln膮 wysoko艣膰 osi膮gni臋t膮 podczas rzutu dla podanej pr臋dko艣ci pocz膮tkowej i k膮ta rzutu. Wykorzystuje wz贸r h = (v^2 * sin(胃)^2) / (2 * g), gdzie v to pr臋dko艣膰 pocz膮tkowa, 胃 to k膮t w radianach, a g to przyspieszenie ziemskie.
  5. Pobiera od u偶ytkownika pr臋dko艣膰 pocz膮tkow膮 w metrach na sekund臋.
  6. Inicjalizuje puste listy odleglosci i wysokosci, kt贸re b臋d膮 przechowywa膰 obliczone odleg艂o艣ci i wysoko艣ci dla r贸偶nych k膮t贸w.
  7. Iteruje po k膮tach od 5 do 80 (w艂膮cznie) z krokiem 5:
  8. Oblicza odleg艂o艣膰 rzutu i maksymaln膮 wysoko艣膰 dla ka偶dego k膮ta, korzystaj膮c z odpowiednich funkcji.
  9. Dodaje obliczone warto艣ci do odpowiednich list.
  10. Wy艣wietla nag艂贸wek tabeli, kt贸ry zawiera nazwy kolumn: „K膮t (stopnie)”, „Odleg艂o艣膰 (m)”, „Maks. wysoko艣膰 (m)”.
  11. Iteruje po indeksach element贸w list odleglosci i wysokosci przy u偶yciu funkcji range i len, aby okre艣li膰 liczb臋 element贸w:
  12. Formatuje ka偶d膮 odleg艂o艣膰 i wysoko艣膰 do dw贸ch miejsc po przecinku i zamienia kropk臋 na przecinek.
  13. Wy艣wietla ka偶dy k膮t, odleg艂o艣膰 i wysoko艣膰 w odpowiednim formacie, u偶ywaj膮c odpowiednich odst臋p贸w i tabulacji.
  14. Program ko艅czy dzia艂anie, a na ekranie zostaje wy艣wietlona tabela z k膮tami, odleg艂o艣ciami i maksymalnymi wysoko艣ciami, na podstawie wprowadzonej przez u偶ytkownika pr臋dko艣ci pocz膮tkowej.