Si bien el ajuste de curvas polinómicas está disponible en Python usando polyfit(), esta guía explora métodos para curvas exponenciales y logarítmicas ajuste.
Para ajustar una línea de la forma y = A B log x, simplemente realizar un ajuste polinomial de y contra log x.
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("y ≈", coeffs[1], "log(x) ", coeffs[0]) # y ≈ 8.46 log(x) 6.62
Para ajustar un recta de la forma y = Ae^{Bx}, toma el logaritmo de ambos lados y realiza un ajuste polinómico de log y contra x.
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("y ≈ exp(", coeffs[1], ") * exp(", coeffs[0], " * x) = 0.670 * exp(0.105 * x)")
Para una mayor precisión , aproveche los pesos proporcionales a y usando la palabra clave w en polyfit().
coeffs = np.polyfit(x, np.log(y), 1, w=np.sqrt(y))
print("y ≈ exp(", coeffs[1], ") * exp(", coeffs[0], " * x) = 4.12 * exp(0.0601 * x)")
Tenga en cuenta que la mayoría Las aplicaciones de hojas de cálculo y calculadoras científicas utilizan una fórmula no ponderada para la regresión exponencial, así que evite las ponderaciones si desea compatibilidad.
Si scipy está disponible, use curve_fit para ajustar modelos sin transformaciones.
from scipy.optimize import curve_fit
# Logarithmic fitting
coeffs, _ = curve_fit(lambda t, a, b: a b * np.log(t), x, y)
print("y ≈", coeffs[1], "log(x) ", coeffs[0]) # y ≈ 6.62 8.46 log(x)
# Exponential fitting with initial guess
coeffs, _ = curve_fit(lambda t, a, b: a * np.exp(b * t), x, y, p0=(4, 0.1))
print("y ≈", coeffs[0], "exp(", coeffs[1], " * x) = 4.88 exp(0.0553 x)")
Al proporcionar una suposición inicial, curve_fit puede alcanzar el mínimo local deseado para el ajuste exponencial, lo que da como resultado un ajuste más preciso que el método polifit transformado.
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