Además del ajuste polinómico, que tiene la función polyfit() en Python, existen técnicas para ajustar exponenciales y curvas logarítmicas.
Para ajustar una curva al modelo y = A B log x, podemos transformar los datos tomando el logaritmo de ambos lados, lo que da como resultado log y = log A B log x. Al ajustar log y contra log x usando polyfit(), obtenemos los coeficientes log A y B.
import numpy as np
x = np.array([1, 7, 20, 50, 79])
y = np.array([10, 19, 30, 35, 51])
coeffs = np.polyfit(np.log(x), y, 1)
print("Coefficients:", coeffs)
print("y ≈", coeffs[1], " ", coeffs[0], "log(x)")
Para ajustar una curva al modelo y = Ae^(Bx), podemos tomar el logaritmo de ambos lados, lo que da como resultado log y = log A B x. Luego, los parámetros se pueden determinar ajustando log y contra x usando polyfit().
x = np.array([10, 19, 30, 35, 51])
y = np.array([1, 7, 20, 50, 79])
coeffs = np.polyfit(x, np.log(y), 1)
print("Coefficients:", coeffs)
print("y ≈", np.exp(coeffs[1]), "*", "exp(", coeffs[0], "x)")
Vale la pena señalar que el ajuste no ponderado (sin considerar los pesos de los puntos de datos) puede generar un sesgo hacia valores pequeños, particularmente en el ajuste de curvas exponenciales. Para mitigar esto, se pueden incluir pesos en el proceso de ajuste, proporcionales a los valores de y.
Scipy proporciona la función curve_fit() para realizar un ajuste de curvas no lineal. Esto nos permite ajustar cualquier modelo directamente, sin transformaciones.
from scipy.optimize import curve_fit
# Logarithmic curve fitting
popt, pcov = curve_fit(lambda t, a, b: a b * np.log(t), x, y)
print("Coefficients:", popt)
print("y ≈", popt[1], " ", popt[0], "log(x)")
# Exponential curve fitting
popt, pcov = curve_fit(lambda t, a, b: a * np.exp(b * t), x, y, p0=(1, 0.1))
print("Coefficients:", popt)
print("y ≈", popt[0], "*", "exp(", popt[1], "x)")
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3