Liczby i Podstawowe Operacje Matematyczne w Pythonie
Podczas planowania misji kosmicznych i analizowania danych astronomicznych, matematyka jest naszym najbardziej niezawodnym narzędziem. Python, dzięki swojej intuicyjnej składni i potężnym możliwościom numerycznym, stał się preferowanym językiem programowania agencji kosmicznych i astronomów na całym świecie. W tym artykule poznamy, jak Python obsługuje liczby i podstawowe operacje matematyczne — wiedzę niezbędną dla każdego zainteresowanego nauką o kosmosie i programowaniem.
Typy Liczb w Pythonie
Python oferuje kilka typów numerycznych, które są kluczowe dla różnych obliczeń, od obliczania czasu trwania misji po analizę odczytów z czujników.
Liczby Całkowite (int)
Liczby całkowite w Pythonie mogą mieć dowolną długość, ograniczoną jedynie pamięcią komputera. Jest to szczególnie przydatne przy operowaniu odległościami astronomicznymi lub odczytami z czujników statków kosmicznych:
# Odległość do Księżyca w metrach
distance_to_moon = 384400000
# Typowa wysokość orbity satelity w metrach
low_earth_orbit = 408000
# Używanie podkreśleń dla czytelności dużych liczb
jupiter_diameter = 142_984_000 # metry
Liczby Zmiennoprzecinkowe (float)
Do precyzyjnych obliczeń, takich jak obliczanie prędkości czy temperatur w przestrzeni kosmicznej, używamy liczb zmiennoprzecinkowych:
# Prędkość statku kosmicznego w km/s
spacecraft_velocity = 7.67
# Odczyty temperatury w Kelwinach
external_temperature = 294.15
# Notacja naukowa dla bardzo dużych liczb
distance_to_mars = 2.25e8 # 225 milionów kilometrów
Podstawowe Operacje Matematyczne w Pythonie
Dodawanie i Odejmowanie
# Obliczanie całkowitego czasu misji (dni)
travel_time = 150
surface_operations = 30
return_time = 150
total_mission_time = travel_time + surface_operations + return_time
print(f"Całkowity czas misji na Marsa: {total_mission_time} dni")
# Obliczanie pozostałego paliwa (litry)
initial_fuel = 1000000
used_fuel = 850000
remaining_fuel = initial_fuel - used_fuel
print(f"Pozostałe paliwo: {remaining_fuel} litrów")
Mnożenie i Dzielenie
# Obliczanie siły ciągu rakiety (F = m * a)
mass = 1000 # kg
acceleration = 9.81 # m/s²
thrust_force = mass * acceleration
print(f"Siła ciągu: {thrust_force} Newtonów")
# Obliczanie czasu podróży (odległość/prędkość)
distance = 100000 # km
speed = 25 # km/h
time = distance / speed
print(f"Czas podróży: {time} godzin")
Dzielenie Całkowite i Modulo
Python oferuje dwa typy dzielenia:
# Zwykłe dzielenie (zwraca float)
mission_hours = 100
days = mission_hours / 24
print(f"Czas trwania misji: {days} dni")
# Dzielenie całkowite (zwraca int)
days_on_mars = 365
weeks = days_on_mars // 7
remaining_days = days_on_mars % 7
print(f"Długość misji na Marsie: {weeks} tygodni i {remaining_days} dni")
Kolejność Działań w Pythonie
Python przestrzega standardowej kolejności działań (PEMDAS):
- Nawiasy (Parentheses)
- Potęgi (Exponents)
- Mnożenie i Dzielenie (od lewej do prawej)
- Dodawanie i Odejmowanie (od lewej do prawej)
# Przykład kolejności działań
thrust = 1000
weight = 300
gravity = 9.81
# Bez nawiasów - nieprawidłowe obliczenie
incorrect_force = thrust - weight * gravity
print(f"Nieprawidłowe obliczenie siły: {incorrect_force}")
# Z nawiasami - prawidłowe obliczenie
correct_force = thrust - (weight * gravity)
print(f"Prawidłowe obliczenie siły: {correct_force}")
Popularne Operacje i Ich Symbole
- Dodawanie:
+ - Odejmowanie:
- - Mnożenie:
* - Dzielenie:
/ - Dzielenie całkowite:
// - Modulo (reszta z dzielenia):
% - Potęgowanie:
**
# Przykłady podstawowych operacji
thrust = 5000
atmospheric_drag = 500
net_thrust = thrust - atmospheric_drag # Odejmowanie
rocket_stages = 3
engines_per_stage = 4
total_engines = rocket_stages * engines_per_stage # Mnożenie
solar_panel_power = 2 ** 10 # 2 do potęgi 10
print(f"Moc wyjściowa paneli słonecznych: {solar_panel_power} watów")
Wskazówki Dotyczące Pracy z Liczbami
1. Używaj podkreśleń w dużych liczbach dla zwiększenia czytelności:
orbital_distance = 384_400_000 # Bardziej czytelne niż 384400000
2. Uważaj na typy dzielenia:
# Zwykłe dzielenie (zwraca float)
thrust_ratio = 1000 / 300 # 3.333...
# Dzielenie całkowite (zwraca int)
crew_supplies = 100 // 3 # 33
3. Używaj nawiasów w razie wątpliwości co do kolejności działań:
total_mass = (fuel_mass + tank_mass) * safety_factor
Co Dalej
Te podstawowe operacje numeryczne w Pythonie stanowią fundament dla bardziej zaawansowanych obliczeń związanych z przestrzenią kosmiczną. Gdy opanujesz te podstawy, możesz przejść do:
- Pracy z bardziej złożonymi operacjami matematycznymi
- Używania wbudowanych funkcji matematycznych Pythona
- Wykonywania konwersji jednostek
- Analizowania danych z misji kosmicznych
Ćwiczenia
Spróbuj rozwiązać te ćwiczenia, aby przetestować swoje zrozumienie operacji na liczbach w Pythonie:
1. Kalkulator Czasu Misji
Misja na Marsa składa się z:
- 180 dni podróży na Marsa
- 215 dni na powierzchni
- 180 dni podróży powrotnej
Oblicz całkowity czas misji w:
- Dniach
- Tygodniach (użyj dzielenia całkowitego)
- Miesiącach (zakładając 30 dni na miesiąc, użyj zwykłego dzielenia)
2. Zużycie Paliwa
Statek kosmiczny startuje z 25000 litrów paliwa. Zużywa:
- 8000 litrów na start
- 4500 litrów na manewry orbitalne
- 7500 litrów na lądowanie
Oblicz:
- Ile paliwa pozostało
- Jaki procent początkowego paliwa pozostał (wskazówka: pomnóż przez 100 dla uzyskania procentów)
3. Komunikacja Satelitarna
Satelita wysyła 15 pakietów danych na minutę. Oblicz, ile pakietów wyśle w:
- 1 godzinę
- 24 godziny
Użyj podkreśleń, aby liczby były czytelne.
4. Konwersja Temperatury
Temperatura w bazie księżycowej wynosi 22°C. Przelicz ją na Kelwiny używając wzoru:
- Kelwin = Celsjusz + 273.15
Następnie oblicz temperaturę, gdy spadnie o 15 stopni.
5. Moc Paneli Słonecznych
Statek kosmiczny ma 12 paneli słonecznych. Każdy panel produkuje 150 watów mocy. Oblicz:
- Całkowitą produkcję mocy
- Ile komputerów może działać, jeśli każdy potrzebuje 100 watów
- Pozostałe waty po zasileniu komputerów
Użyj operatora modulo (%) do znalezienia pozostałych watów.
Photo by Kier in Sight Archives on Unsplash
# Odległość do Księżyca w metrach
distance_to_moon = 384400000
# Typowa wysokość orbity satelity w metrach
low_earth_orbit = 408000
# Używanie podkreśleń dla czytelności dużych liczb
jupiter_diameter = 142_984_000 # metry
# Prędkość statku kosmicznego w km/s
spacecraft_velocity = 7.67
# Odczyty temperatury w Kelwinach
external_temperature = 294.15
# Notacja naukowa dla bardzo dużych liczb
distance_to_mars = 2.25e8 # 225 milionów kilometrów
# Obliczanie całkowitego czasu misji (dni)
travel_time = 150
surface_operations = 30
return_time = 150
total_mission_time = travel_time + surface_operations + return_time
print(f"Całkowity czas misji na Marsa: {total_mission_time} dni")
# Obliczanie pozostałego paliwa (litry)
initial_fuel = 1000000
used_fuel = 850000
remaining_fuel = initial_fuel - used_fuel
print(f"Pozostałe paliwo: {remaining_fuel} litrów")
# Obliczanie siły ciągu rakiety (F = m * a)
mass = 1000 # kg
acceleration = 9.81 # m/s²
thrust_force = mass * acceleration
print(f"Siła ciągu: {thrust_force} Newtonów")
# Obliczanie czasu podróży (odległość/prędkość)
distance = 100000 # km
speed = 25 # km/h
time = distance / speed
print(f"Czas podróży: {time} godzin")
# Zwykłe dzielenie (zwraca float)
mission_hours = 100
days = mission_hours / 24
print(f"Czas trwania misji: {days} dni")
# Dzielenie całkowite (zwraca int)
days_on_mars = 365
weeks = days_on_mars // 7
remaining_days = days_on_mars % 7
print(f"Długość misji na Marsie: {weeks} tygodni i {remaining_days} dni")
# Przykład kolejności działań
thrust = 1000
weight = 300
gravity = 9.81
# Bez nawiasów - nieprawidłowe obliczenie
incorrect_force = thrust - weight * gravity
print(f"Nieprawidłowe obliczenie siły: {incorrect_force}")
# Z nawiasami - prawidłowe obliczenie
correct_force = thrust - (weight * gravity)
print(f"Prawidłowe obliczenie siły: {correct_force}")
# Przykłady podstawowych operacji
thrust = 5000
atmospheric_drag = 500
net_thrust = thrust - atmospheric_drag # Odejmowanie
rocket_stages = 3
engines_per_stage = 4
total_engines = rocket_stages * engines_per_stage # Mnożenie
solar_panel_power = 2 ** 10 # 2 do potęgi 10
print(f"Moc wyjściowa paneli słonecznych: {solar_panel_power} watów")
# Używanie podkreśleń dla czytelności
orbital_distance = 384_400_000 # Bardziej czytelne niż 384400000
# Zwykłe dzielenie (zwraca float)
thrust_ratio = 1000 / 300 # 3.333...
# Dzielenie całkowite (zwraca int)
crew_supplies = 100 // 3 # 33