Bien que l'ajustement de courbe polynomiale soit facilement disponible en Python à l'aide de polyfit(), ce guide explore les méthodes d'ajustement des courbes exponentielles et logarithmiques. ajustement.
Pour ajuster une ligne de la forme y = A B log x, effectuez simplement un ajustement polynomial de y par rapport au 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
Pour ajuster un ligne de la forme y = Ae^{Bx}, prenez le logarithme des deux côtés et effectuez un ajustement polynomial du log y par rapport 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)")
Pour une meilleure précision , exploitez des poids proportionnels à y en utilisant le mot-clé w dans 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)")
Notez que la plupart Les applications de tableur et de calculatrice scientifique utilisent une formule non pondérée pour la régression exponentielle. Évitez donc les pondérations si la compatibilité est souhaitée.
Si scipy est disponible, utilisez curve_fit pour ajuster les modèles sans transformations.
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)")
En fournissant une estimation initiale, curve_fit peut atteindre le minimum local souhaité pour l'ajustement exponentiel, ce qui entraîne un ajustement plus précis que la méthode polyfit transformée.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3