39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
|
import matplotlib.pyplot as plt
|
||
|
import numpy as np
|
||
|
|
||
|
# Parametry ruchu liniowego
|
||
|
v = 5 # prędkość w m/s
|
||
|
s0 = 2 # początkowe położenie w m
|
||
|
|
||
|
# Funkcja liniowa: s(t) = v * t + s0
|
||
|
t = np.linspace(0, 8, 100) # dokładniejszy przedział czasu do rysowania wykresu
|
||
|
s_linear = v * t + s0 # położenie dla funkcji liniowej
|
||
|
|
||
|
# Funkcja kwadratowa: s_quad(t) = a*t^2 + b*t + c
|
||
|
a, b, c = 1, -5, 5 # dobór współczynników do uzyskania 2 punktów przecięcia
|
||
|
s_quad = a * t**2 + b * t + c # położenie dla funkcji kwadratowej
|
||
|
|
||
|
# Znajdowanie punktów przecięcia
|
||
|
intersection_points = []
|
||
|
for i in range(len(t)):
|
||
|
if np.isclose(s_linear[i], s_quad[i], atol=0.1): # tolerancja na różnice wartości
|
||
|
intersection_points.append((t[i], s_linear[i]))
|
||
|
|
||
|
# Rysowanie wykresów
|
||
|
plt.figure(figsize=(10, 6))
|
||
|
plt.plot(t, s_linear, label=f'Liniowa: s(t) = {v}*t + {s0}', color='b')
|
||
|
plt.plot(t, s_quad, label=f'Kwadratowa: s(t) = {a}*t^2 + ({b})*t + {c}', color='r')
|
||
|
plt.xlabel("Czas (s)")
|
||
|
plt.ylabel("Położenie s (m)")
|
||
|
plt.title("Wykres zależności położenia s od czasu t")
|
||
|
|
||
|
# Oznaczanie punktów przecięcia
|
||
|
for x, y in intersection_points:
|
||
|
plt.plot(x, y, 'go') # zielony punkt dla przecięć
|
||
|
plt.text(x, y, f'({x:.2f}, {y:.2f})', fontsize=9, ha='right')
|
||
|
|
||
|
plt.legend()
|
||
|
plt.grid(True)
|
||
|
plt.show()
|
||
|
|