p30.10/py/2.py

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()