首頁  >  文章  >  後端開發  >  除了多項式擬合之外,如何在 Python 中執行指數和對數曲線擬合?

除了多項式擬合之外,如何在 Python 中執行指數和對數曲線擬合?

Linda Hamilton
Linda Hamilton原創
2024-11-04 02:47:29316瀏覽

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

Python 中的指數和對數曲線擬合超越多項式擬合

除了多項式擬合(Python 中具有polyfit() 函數)之外,還存在指數擬合技術和對數曲線。

對數曲線擬合

為了將曲線擬合到模型y = A B log x,我們可以透過取兩邊的對數來轉換數據,得到log y =對數A B 對數x。透過使用 polyfit() 來擬合 log y 與 log x,我們得到係數 log A 和 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>

指數曲線擬合

將曲線擬合到模型 y = Ae^ (Bx) 兩邊取對數,得到 log y = log A B x。然後可以透過使用 polyfit() 對 x 擬合 log y 來確定參數。

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

關於未加權擬合中偏差的注意

值得注意的是,未加權擬合(不考慮數據點)可能會導致對小值的偏差,特別是在指數曲線擬合中。為了緩解這種情況,可以在擬合過程中包含與 y 值成比例的權重。

使用 Scipy 進行曲線擬合

Scipy 提供 curve_fit() 函數來執行非線性曲線擬合。這使我們能夠直接擬合任何模型,無需轉換。

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

以上是除了多項式擬合之外,如何在 Python 中執行指數和對數曲線擬合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn