From 967d4e9ad15016fe4857b04199a3cb8b3418c7aa Mon Sep 17 00:00:00 2001
From: Patryk Zamorski
Date: Fri, 16 May 2025 19:01:31 +0200
Subject: [PATCH] Start zadania:)
---
Analityka.py | 12 ++++++
Euler.py | 24 +++++++++++
Main.py | 12 ++++++
Parametry.py | 11 +++++
README.md | 85 ++++++++++++++++++++++++++++++++++++++
Readme.txt | 1 -
Wykresy.py | 58 ++++++++++++++++++++++++++
resources/analVsEuler.png | Bin 0 -> 45317 bytes
resources/error.png | Bin 0 -> 33403 bytes
9 files changed, 202 insertions(+), 1 deletion(-)
create mode 100644 Analityka.py
create mode 100644 Euler.py
create mode 100644 Parametry.py
create mode 100644 README.md
delete mode 100644 Readme.txt
create mode 100644 Wykresy.py
create mode 100644 resources/analVsEuler.png
create mode 100644 resources/error.png
diff --git a/Analityka.py b/Analityka.py
new file mode 100644
index 0000000..e3eb7d1
--- /dev/null
+++ b/Analityka.py
@@ -0,0 +1,12 @@
+
+import numpy as np
+def analitycznePolozenie(v0, theta, h0, t):
+ # wartosc przyspieszenia ziemskiego
+ g = 9.81
+ # stopnie na radiany
+ theta_rad = np.radians(theta)
+
+ # Rownania parametryczne dla x(t) i y(t)
+ x = v0 * np.cos(theta_rad) * t
+ y = h0 + v0 * np.sin(theta_rad) * t - 0.5 * g * t**2
+ return x, y
diff --git a/Euler.py b/Euler.py
new file mode 100644
index 0000000..4c46c4f
--- /dev/null
+++ b/Euler.py
@@ -0,0 +1,24 @@
+# Rozwiazanie numeryczne przy uzyciu metody Eulera
+import numpy as np
+
+def metodaEulera(v0, theta, h0, dt):
+ # wartosc przyspieszenia ziemskiego
+ g = 9.81
+ theta_rad = np.radians(theta)
+
+ # Inicjalizacja pozycji i predkosci
+ x, y = 0.0, h0
+ vx = v0 * np.cos(theta_rad)
+ vy = v0 * np.sin(theta_rad)
+
+ # lista punktow trajektorii
+ trajektoria = [(x, y)]
+
+ # Petla obliczajaca kolejne punkty az do upadku
+ while y >= 0:
+ x += vx * dt
+ y += vy * dt
+ vy -= g * dt
+ trajektoria.append((x, y))
+
+ return np.array(trajektoria)
diff --git a/Main.py b/Main.py
index e69de29..fdbd612 100644
--- a/Main.py
+++ b/Main.py
@@ -0,0 +1,12 @@
+from Parametry import v0, theta, h0, dt, dt_list
+from Wykresy import rysujTrajektorie, analizaBledu
+
+def main():
+ # Rysowanie trajektorii dla wybranego kroku czasowego
+ rysujTrajektorie(v0, theta, h0, dt)
+
+ # Analiza wplywu kroku czasowego na dokladnosc symulacji
+ analizaBledu(v0, theta, h0, dt_list)
+
+if __name__ == "__main__":
+ main()
diff --git a/Parametry.py b/Parametry.py
new file mode 100644
index 0000000..64a9cf5
--- /dev/null
+++ b/Parametry.py
@@ -0,0 +1,11 @@
+# v0 - predkosc poczatkowa m/s
+#theta - kat rzutu
+#h0 - wysokosc poczatkowa m
+#dt - krok czasowy w sekundach do rysowania trajektori
+#dt_list - lista do analizy bledu
+# ------------------------------------------------------
+v0 = 2
+theta = 45
+h0 = 0
+dt = 0.01
+dt_list = [0.1, 0.05, 0.01, 0.005, 0.001]
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..a7b9b4f
--- /dev/null
+++ b/README.md
@@ -0,0 +1,85 @@
+
+# Symulacja i analiza rzutu ukośnego
+
+## Cel projektu
+
+Celem projektu jest stworzenie programu w Pythonie, który symuluje rzut ukośny w jednorodnym polu grawitacyjnym bez oporu powietrza. Program oblicza:
+
+- trajektorie ruchu na podstawie **dokładnego rozwiązania analitycznego**,
+- przybliżoną trajektorię metodą numeryczną – **metodą Eulera**,
+- oraz porównuje obie metody, analizując dokładność w zależności od kroku czasowego `t`.
+
+---
+
+## Wymagania
+
+Do uruchomienia projektu wymagane są biblioteki:
+
+```
+pip install numpy matplotlib
+```
+
+---
+
+## Struktura plików
+
+- `Main.py` – główny plik uruchamiający program
+- `Analityka.py` – obliczenia dokładne (analityczne) na podstawie wzorów fizycznych
+- `Euler.py` – implementacja metody Eulera
+- `Wykresy.py` – rysowanie wykresów porównawczych
+- `Parametry.py` – definiowanie parametrów początkowych (v0, kat, h0, dt)
+
+---
+
+## Uruchamianie programu
+
+Po zainstalowaniu bibliotek, uruchom program wpisując:
+
+```
+python main.py
+```
+
+---
+
+## Wygenerowane wykresy
+
+Program generuje dwa wykresy:
+
+1. Porównanie trajektorii analitycznej i numerycznej (Euler)
+2. Wykres błędu w zasięgu w zależności od wielkości kroku czasowego `t`
+
+### Wykresy:
+- Wykres 1: Trajektoria – analityczna vs Euler
+- 
+- Wykres 2: Blad zasięgu vs t
+- 
+
+---
+
+## Analiza dokładności
+
+Program analizuje, jak krok czasowy wpływa na dokładność metody Eulera:
+
+- im mniejsze t, tym mniejszy błąd w zasięgu rzutu,
+- dla zbyt dużych kroków trajektoria znacząco odbiega od wzorcowej.
+
+---
+
+## Wnioski
+
+- Metoda Eulera przy małych krokach daje zadowalającą dokładność.
+- Program pokazuje, jak ważny jest wybór kroku czasowego w metodach numerycznych.
+- Prosta implementacja pozwala zrozumieć podstawy całkowania numerycznego i ruchu w fizyce klasycznej.
+
+---
+
+## Uwagi techniczne
+
+- Symulacja zatrzymuje się automatycznie, gdy ciało spadnie na ziemię (y < 0).
+- Dla bardzo małych t program może działać wolniej (więcej iteracji).
+
+---
+
+## Autor
+
+Patryk Zamorski
diff --git a/Readme.txt b/Readme.txt
deleted file mode 100644
index 4de76dd..0000000
--- a/Readme.txt
+++ /dev/null
@@ -1 +0,0 @@
-Zainstalowac pip install numpy matplotlib
diff --git a/Wykresy.py b/Wykresy.py
new file mode 100644
index 0000000..1a4ee40
--- /dev/null
+++ b/Wykresy.py
@@ -0,0 +1,58 @@
+# wykresy.py
+# Porownanie trajektorii oraz analiza bledu metody Eulera
+
+import numpy as np
+import matplotlib.pyplot as plt
+from Analityka import analitycznePolozenie
+from Euler import metodaEulera
+
+# Funkcja rysujaca wykres porownawczy trajektorii
+def rysujTrajektorie(v0, theta, h0, dt):
+ g = 9.81
+ theta_rad = np.radians(theta)
+
+ # Czas lotu z rozwiazania analitycznego
+ t_flight = (v0 * np.sin(theta_rad) + np.sqrt((v0 * np.sin(theta_rad))**2 + 2 * g * h0)) / g
+ t_vals = np.linspace(0, t_flight, 1000)
+
+ # Obliczenie trajektorii analitycznej i numerycznej
+ x_anal, y_anal = analitycznePolozenie(v0, theta, h0, t_vals)
+ traj_num = metodaEulera(v0, theta, h0, dt)
+
+ # Rysowanie wykresu
+ plt.figure(figsize=(10, 6))
+ plt.plot(x_anal, y_anal, label="Analityczna", color='blue')
+ plt.plot(traj_num[:, 0], traj_num[:, 1], label=f"Euler (dt={dt})", color='red', linestyle='--')
+ plt.xlabel("x [m]")
+ plt.ylabel("y [m]")
+ plt.title("Porownanie trajektorii rzutu ukosnego")
+ plt.legend()
+ plt.grid()
+ plt.show()
+
+# Funkcja analizujaca blad koncowego zasiegu w zaleznosci od kroku czasowego
+def analizaBledu(v0, theta, h0, dt_values):
+ g = 9.81
+ theta_rad = np.radians(theta)
+
+ # Obliczenie analitycznego zasiegu
+ t_flight = (v0 * np.sin(theta_rad) + np.sqrt((v0 * np.sin(theta_rad))**2 + 2 * g * h0)) / g
+ t_vals = np.linspace(0, t_flight, 1000)
+ x_anal, _ = analitycznePolozenie(v0, theta, h0, t_vals)
+ x_end_anal = x_anal[-1]
+
+ errors = []
+ for dt in dt_values:
+ traj_num = metodaEulera(v0, theta, h0, dt)
+ x_end_num = traj_num[-1, 0]
+ error = abs(x_end_num - x_end_anal)
+ errors.append(error)
+
+ # Rysowanie wykresu bledu wzgledem kroku czasowego
+ plt.figure(figsize=(8, 5))
+ plt.plot(dt_values, errors, marker='o')
+ plt.xlabel("Krok czasowy t [s]")
+ plt.ylabel("Blad zasiegu [m]")
+ plt.title("Zaleznosc bledu od kroku czasowego")
+ plt.grid()
+ plt.show()
diff --git a/resources/analVsEuler.png b/resources/analVsEuler.png
new file mode 100644
index 0000000000000000000000000000000000000000..6e58f0e9292115608a67ba83dc967b03907b0875
GIT binary patch
literal 45317
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
A=>Px#
literal 0
HcmV?d00001
diff --git a/resources/error.png b/resources/error.png
new file mode 100644
index 0000000000000000000000000000000000000000..443c4db1a9872f458d062b6c756fc9a33ae9cbd3
GIT binary patch
literal 33403
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