"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 effectuer un ajustement de courbe exponentielle et logarithmique en Python au-delà de l'ajustement polynomial ?

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

Publié le 2024-11-20
Parcourir:321

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 = log A B log x. En ajustant le log y au log x à l'aide de polyfit(), nous obtenons les coefficients log A et B.

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)")

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 à x à l'aide de polyfit().

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)")

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

Il convient de noter qu'un ajustement non pondéré (sans tenir compte des poids des points de données) peut conduire à un biais en faveur 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'ajuster n'importe quel modèle directement, sans transformations.

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)")
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