"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je effectuer un ajustement de courbe exponentielle et logarithmique en Python ?

Comment puis-je effectuer un ajustement de courbe exponentielle et logarithmique en Python ?

Publié le 2024-11-08
Parcourir:179

How can I perform exponential and logarithmic curve fitting in Python?

Ajustement de courbe : approches exponentielles et logarithmiques en Python

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.

Ajustement logarithmique

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

Ajustement exponentiel

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.

Utilisation scipy.optimize.curve_fit

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.

Dernier tutoriel Plus>

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