"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como você executa o ajuste de curva exponencial e logarítmica em Python além do ajuste polinomial?

Como você executa o ajuste de curva exponencial e logarítmica em Python além do ajuste polinomial?

Publicado em 2024-11-20
Navegar:310

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

Ajuste de curva exponencial e logarítmica em Python além do ajuste polinomial

Além do ajuste polinomial, que tem a função polyfit() em Python, existem técnicas para ajuste exponencial e curvas logarítmicas.

Ajuste de curva logarítmica

Para ajustar uma curva ao modelo y = A B log x, podemos transformar os dados tomando o logaritmo de ambos os lados, resultando em log y = log A B log x. Ajustando log y contra log x usando polyfit(), obtemos os coeficientes log A e 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)")

Ajuste de curva exponencial

Para ajustar uma curva ao modelo y = Ae^(Bx), podemos pegar o logaritmo de ambos os lados, resultando em log y = log A B x. Os parâmetros podem então ser determinados ajustando log y contra x usando 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)")

Nota sobre polarização no ajuste não ponderado

Vale a pena notar que o ajuste não ponderado (sem considerar os pesos dos pontos de dados) pode levar a um viés para valores pequenos, especialmente no ajuste de curva exponencial. Para mitigar isso, pesos podem ser incluídos no processo de ajuste, proporcionais aos valores de y.

Usando Scipy para ajuste de curva

Scipy fornece a função curve_fit() para realizar ajuste de curva não linear. Isso nos permite ajustar qualquer modelo diretamente, sem transformações.

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)")
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3