import matplotlib.pyplot as plt
import numpy as np

def calcular_constante_hooke(F, x):
    # La constante de Hooke (k) es la relación entre la fuerza (F) y el desplazamiento (x)
    k = F / x
    return k

def graficar_constante_hooke(fuerzas, desplazamientos):
    # Calcular las constantes de Hooke para cada par de fuerza y desplazamiento
    constantes_hooke = [calcular_constante_hooke(F, x) for F, x in zip(fuerzas, desplazamientos)]
    
    # Crear la gráfica
    plt.figure(figsize=(10, 6))
    plt.plot(desplazamientos, constantes_hooke, 'o')
    
    # Añadir la ecuación a la gráfica
    for i in range(len(fuerzas)):
        plt.text(desplazamientos[i], constantes_hooke[i], f'k = {constantes_hooke[i]:.2f} N/m', fontsize=10)
    
    # Calcular y dibujar la línea de mejor ajuste
    coeficientes = np.polyfit(desplazamientos, constantes_hooke, 1)
    polinomio = np.poly1d(coeficientes)
    xs = np.linspace(min(desplazamientos), max(desplazamientos), 1000)
    ys = polinomio(xs)

    plt.plot(xs, ys, '-')
    
    # Imprimir la ecuación de la línea de mejor ajuste
    print(f'La ecuación de la línea de mejor ajuste es: y = {coeficientes[0]:.2f}x + {coeficientes[1]:.2f}')
    
    plt.title('Resorte 2. Fuerza elástica vs. Elongación')
    plt.xlabel('Desplazamiento (m)')
    plt.ylabel('Fuerza elástica (N)')
    plt.grid(True)
    plt.show()

# Ejemplo de uso:
fuerzas = [-0.496,-.911,-2.604,-4.586]  # en Newtons
desplazamientos = [0.001,0.002,.077,.172]  # en metros

graficar_constante_hooke(fuerzas, desplazamientos)

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: