Ajuste de Curvas El ajuste de curvas consiste en encontrar una curva que contenga una serie de puntos y que posiblemente cumpla una serie de restricciones adicionales. Esta sección es una introducción tanto a la interpolación (cuando se espera un ajuste exacto a determinadas restricciones) y al ajuste de curvas/análisis de regresión (cuando se permite una aproximación). Sea {(xk , yk )}^N k=1 un conjunto de N puntos cuyas abscisas {xk} son todas distintas. La recta de regresión o recta óptima en (el sentido de los) mínimos cuadrados es la recta de ecuación y = f(x) = Ax + B que minimiza el error cuadrático medio E2(f). De (1), notar que E2(f) será mínima si lo es
Geométricamente es la suma de los cuadrados de las distancias verticales desde los puntos {(xk , yk )} hasta la recta y = Ax + B.
Problema: Se realizó un estudio a una mezcla de concreto, realizando diferentes mediciones a su temperatura desde el momento en que se colocó hasta que su temperatura llegó a 0°. Al hacer la primera medición, la temperatura marcó 20° (se trata de un problema planteado por mi). #Importar los módulos necesarios import numpy as np import matplotlib.pyplot as plt from scipy.optimize import curve_fit #Definimos la función def func(x, a, b, c): return a * np.exp(-b * x) + c #Definimos las dimensiones de la gráfica xdata = np.linspace(0, 10, 50) y = func(xdata, 20, 1, 0.5) np.random.seed(1234) #Metemos ruido y_noise = 1.2 * np.random.normal(size=xdata.size) ydata = y + y_noise #Calcular coeficientes popt, pcov = curve_fit(func, xdata, ydata) #Calcular coeficientes con intervalos popt, pcov = curve_fit(func, xdata, ydata, bounds=(0, [20., 1., 0.5])) #Graficado plt.plot(xdata, ydata, 'b-', label='data') plt.plot(xdata, func(xdata, *popt), 'r-', label='fit: a=%5.3f, b=%5.3f, c=%5.3f' % tuple(popt)) plt.plot(xdata, func(xdata, *popt), 'g--', label='fit: a=%5.3f, b=%5.3f, c=%5.3f' % tuple(popt))
La metodología seguida fue primero entender el problema en físico, del cual iba a hacer con los datos de las mediciones, después de comprender, fui desarrollando el código con ayuda de los links proporcionados por el maestro y buscando algunas otras cosas yo en google, haciendo las búsquedas en inglés para poder obtener más y mejor información.
Discusión Mi opinión de la investigación que hice fue que realmente no es un tema difícil, viene muchísima información a lo largo de muchos foros en internet, hay bastantes y muy buenos, si no comprendemos lo que nos quiere dar a entender es porque no queremos prácticamente.
Referencias https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curv e_fit.html#scipy.optimize.curve_fit https://lmfit.github.io/lmfit-py/model.html https://www.pybonacci.org/2013/08/15/ajuste-e-interpolacionunidimensionales-basicos-en-python-con-scipy/ http://disi.unal.edu.co/~lctorress/MetNum/MeNuCl04.pdf https://es.wikipedia.org/wiki/Ajuste_de_curvas