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

Linda Hamilton
Libérer: 2024-10-28 13:55:30
original
845 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!