Comment effectuer un ajustement de courbe exponentielle et logarithmique en Python au-delà de l'ajustement polynomial ?

Linda Hamilton
Libérer: 2024-11-04 02:47:29
original
371 Les gens l'ont consulté

How do you perform exponential and logarithmic curve fitting in Python beyond polynomial fitting?

Ajustement de courbe exponentielle et logarithmique en Python au-delà de l'ajustement polynomial

En plus de l'ajustement polynomial, qui a la fonction polyfit() en Python, il existe des techniques d'ajustement exponentiel et courbes logarithmiques.

Ajustement de courbe logarithmique

Pour ajuster une courbe au modèle y = A B log x, nous pouvons transformer les données en prenant le logarithme des deux côtés, ce qui donne log y = journal A B journal x. En ajustant log y contre log x à l'aide de polyfit(), nous obtenons les coefficients log A et B.

<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("Coefficients:", coeffs)
print("y ≈", coeffs[1], "+", coeffs[0], "log(x)")</code>
Copier après la connexion

Ajustement de courbe exponentielle

Pour ajuster une courbe au modèle y = Ae^ (Bx), nous pouvons prendre le logarithme des deux côtés, ce qui donne log y = log A B x. Les paramètres peuvent ensuite être déterminés en ajustant le log y par rapport à x à l'aide de polyfit().

<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("Coefficients:", coeffs)
print("y ≈", np.exp(coeffs[1]), "*", "exp(", coeffs[0], "x)")</code>
Copier après la connexion

Remarque sur le biais dans l'ajustement non pondéré

Il convient de noter que l'ajustement non pondéré (sans tenir compte des poids de les points de données) peuvent conduire à un biais vers de petites valeurs, en particulier dans l'ajustement de courbe exponentielle. Pour atténuer cela, des poids peuvent être inclus dans le processus d'ajustement, proportionnels aux valeurs y.

Utilisation de Scipy pour l'ajustement de courbe

Scipy fournit la fonction curve_fit() pour effectuer un ajustement de courbe non linéaire. Cela nous permet d'adapter n'importe quel modèle directement, sans transformations.

<code class="python">from scipy.optimize import curve_fit

# Logarithmic curve fitting
popt, pcov = curve_fit(lambda t, a, b: a + b * np.log(t), x, y)
print("Coefficients:", popt)
print("y ≈", popt[1], "+", popt[0], "log(x)")

# Exponential curve fitting
popt, pcov = curve_fit(lambda t, a, b: a * np.exp(b * t), x, y, p0=(1, 0.1))
print("Coefficients:", popt)
print("y ≈", popt[0], "*", "exp(", popt[1], "x)")</code>
Copier après la connexion

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