Análisis experimental de un MRU
Python
import matplotlib.pyplot as plt
import numpy as np
# Datos proporcionados
tiempos = np.array([0, 3.22, 5.87, 8.83, 11.63, 14.39, 17.19, 19.76, 22.94, 25.92, 29.13, 32.17])
distancias = np.array([0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44])
# Calcular las velocidades promedio por tramo
velocidades = (distancias[1:] - distancias[:-1]) / (tiempos[1:] - tiempos[:-1])
# Velocidad promedio
velocidad_promedio = np.mean(velocidades)
# Error estándar de la velocidad promedio (SEM)
sem = np.std(velocidades, ddof=1) / np.sqrt(len(velocidades))
# Tiempos intermedios
tiempos_intermedios = (tiempos[1:] + tiempos[:-1]) / 2
# Ajuste lineal con matriz de covarianza
coeficientes, covarianza = np.polyfit(tiempos, distancias, 1, cov=True)
m, b = coeficientes
error_m = np.sqrt(covarianza[0, 0])
error_b = np.sqrt(covarianza[1, 1])
# Crear la recta ajustada
tiempos_ajuste = np.linspace(min(tiempos), max(tiempos), 100)
distancias_ajuste = m * tiempos_ajuste + b
# Coeficiente de determinación R^2
y_pred = m * tiempos + b
ss_total = np.sum((distancias - np.mean(distancias))**2)
ss_residual = np.sum((distancias - y_pred)**2)
r2 = 1 - (ss_residual / ss_total)
# Función para graficar distancia vs tiempo
def graficar_distancia_tiempo():
plt.figure(figsize=(10, 5))
plt.title('Ajuste Lineal de Distancia vs. Tiempo', fontsize=18)
plt.scatter(tiempos, distancias, color='blue', s=50)
plt.plot(tiempos_ajuste, distancias_ajuste, color='orange', linestyle='--', label=f'Ajuste lineal: $y = {m:.3f}x + {b:.3f}$\n$R^2 = {r2:.3f}$')
plt.xlabel('Tiempo $(s)$', fontsize=16)
plt.ylabel('Distancia $(m)$', fontsize=16)
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)
plt.grid(True)
plt.legend(fontsize=12)
plt.tight_layout()
plt.show()
# Función para graficar velocidad vs tiempo
def graficar_velocidad_tiempo():
plt.figure(figsize=(10, 5))
plt.title('Velocidad vs. Tiempo', fontsize=18)
plt.scatter(tiempos_intermedios, velocidades, color='red', s=50)
plt.axhline(np.mean(velocidades), color='blue', linestyle='--', label=f'Velocidad media: {np.mean(velocidades):.3f} m/s')
plt.xlabel('Tiempo $(s)$', fontsize=16)
plt.ylabel('Velocidad $(m/s)$', fontsize=16)
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)
plt.xlim(0, np.max(tiempos))
plt.legend(fontsize=12)
plt.grid(True)
plt.tight_layout()
plt.show()
# Tabla con tiempos, posiciones y velocidades promedio, por tramo.
print("\nTiempos, Posiciones y Velocidades Promedio, por tramo:")
print("="*70)
print(f"{'Tramo':<8}{'ti(s)':<12}{'ti+1(s)':<12}{'xi(m)':<12}{'xi+1(m)':<12}{'vi(m/s)':<12}")
print("="*70)
for i, (t1, t2, x1, x2, v) in enumerate(zip(tiempos[:-1], tiempos[1:], distancias[:-1], distancias[1:], velocidades)):
print(f"{i+1:<8}{t1:<12.3f}{t2:<12.3f}{x1:<12.3f}{x2:<12.3f}{v:<12.3f}")
print("="*70)
#Resultados del ajuste linea Distancia Vs tiempo
print("\nResultados del ajuste lineal - Distancia vs. Tiempo")
print("="*60)
print(f" Pendiente o velocidad (m/s): {m:.3f} ± {error_m:.3f} m/s")
print(f" Ordenada al origen (b): {b:.3f} ± {error_b:.3f} m")
print(f" Coeficiente de determinación R²: {r2:.3f}")
print("="*60)
#Resultados del ajuste uniforme Velocidad Vs tiempo
print("\nResultados del ajuste uniforme - Velocidad vs. Tiempo")
print("="*60)
print(f" Error estadístico (SEM) de la velocidad promedio: {sem:.3f} m/s")
print(f" Velocidad promedio: {velocidad_promedio:.3f} ± {sem:.3f} m/s")
print("="*60)
# Llamado a las funciones
graficar_distancia_tiempo()
graficar_velocidad_tiempo()
Output
Embed on website
To embed this program on your website, copy the following code and paste it into your website's HTML:
Comments
This comment belongs to a banned user and is only visible to admins.
This comment belongs to a deleted user and is only visible to admins.