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(conjuntos_fuerzas, conjuntos_desplazamientos):
    # Crear la gráfica
    plt.figure(figsize=(10, 6))
    
    colores = ['red', 'blue', 'green', 'purple', 'orange']
    
    for i in range(len(conjuntos_fuerzas)):
        fuerzas = conjuntos_fuerzas[i]
        desplazamientos = conjuntos_desplazamientos[i]
        
        # 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)]
        
        plt.plot(desplazamientos, constantes_hooke, 'o', color=colores[i], label=f'n_eff {i+1}')
        
        # 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, '-', color=colores[i])
   
    
    plt.title('Resorte 2. Fuerza elástica vs. Elongación')
    plt.xlabel('Longitud de onda (µm)')  # Aquí se cambió 'nm' por 'µm'
    plt.ylabel('Fuerza elástica (N)')
    plt.grid(True)
    plt.legend()
    plt.show()

# Ejemplo de uso:
conjuntos_fuerzas = [[-0.496,-.911,-2.604,-4.586], [-0.3, -0.6, -0.9, -1.2], [-0.2, -0.4, -0.6, -0.8], [-0.1, -0.2, -0.3, -0.4], [-0.05, -0.1, -0.15, -0.2]]  # en Newtons
conjuntos_desplazamientos = [[0.001,0.002,.077,.172], [0.001, 0.002, 0.003, 0.004], [0.001, 0.002, 0.003, 0.004], [0.001, 0.002, 0.003, 0.004], [0.001, 0.002, 0.003, 0.004]]  # en metros

graficar_constante_hooke(conjuntos_fuerzas, conjuntos_desplazamientos)

Embed on website

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