Maison >développement back-end >Tutoriel Python >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 ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-28 13:55:30954parcourir

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 pour les 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.

<code class="python">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</code>

Exponentiel Ajustement

Pour ajuster une 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.

<code class="python">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)")</code>

Pour mieux précision, exploitez des poids proportionnels à y à l'aide du mot-clé w dans polyfit().

<code class="python">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)")</code>

Notez que la plupart des applications de feuilles de calcul et de calculatrice scientifique utilisent une formule non pondérée pour la régression exponentielle, évitez donc les poids si la compatibilité est souhaitée.

Utiliser scipy.optimize.curve_fit

Si scipy est disponible, utilisez Curve_fit pour ajuster les modèles sans transformations.

<code class="python">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)")</code>

En fournissant une estimation initiale, Curve_fit peut atteindre le résultat souhaité minimum local pour l'ajustement exponentiel, ce qui entraîne un ajustement plus précis que la méthode polyfit transformée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn