# -*- coding: utf-8 -*- """ Created on Thu May 9 08:14:51 2019 @author: Publico """ #Ajuste de curva con una función lineal import scipy.optimize as scop import numpy as np """Primero definen la función "modelo" con la que van a querer ajustar sus datos, una lineal en este caso""" def funcion_lineal(x,a,b): return a*x + b """Los datos están representados por mediciones de período y de la longitud. Aquella configuración de datos que quieren corroborar si sigue un régimen lineal es aquella donde grafican T² vs L o al revés, dependiendo de cuál magnitud tiene mayor error relativo. Ya que cuadrados mínimos sólo tiene en cuenta los errores en el eje y""" """Voy a suponer que las longitudes están en el eje x y los períodos al cuadrado en el eje y, pero de nuevo, depende de dónde tienen su error relativo. """ data_x = longitudes data_y = periodos_cuadrado """Por otro lado, supongo que ya tienen calculados los errores del eje y, llamo a esos datos "errores_y" """ p_opt,cov = scop.curve_fit(data_x,data_y,sigma = errores_y) """Encuentran los parámetros óptimos para la pendiente, y la ordenada (a_opt y b_opt, respectivamente)""" p_opt[0] = a_opt p_opt[1] = b_opt errores_parametros = np.sqrt(np.diag(cov)) """Acá obtienen un vector con los errores de la pendiente y ordenada, en primer y segundo lugar, respectivamente""" error_a = errores_parametros[0] errpr_b = eroores_parametros[1] """Ahora grafican los datos y el ajuste obtenido""" plt.figure() plt.plot(data_x,data_y) plt.plot(data_x,funcion_lineal(data_x,a_opt,b_opt)) plt.errobar(data_x,data_y,errores_y) plt.show() """Esta es la idea general, ustedes pongan los gráficos presentables para el informe"""