Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah saya boleh melakukan pemasangan lengkung eksponen dan logaritma dalam Python?

Bagaimanakah saya boleh melakukan pemasangan lengkung eksponen dan logaritma dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-10-28 13:55:30954semak imbas

How can I perform exponential and logarithmic curve fitting in Python?

Pemasangan Lengkung: Pendekatan Eksponen dan Logaritma dalam Python

Walaupun pemasangan lengkung polinomial tersedia dalam Python menggunakan polyfit(), panduan ini meneroka kaedah untuk lengkung eksponen dan logaritma pemadanan.

Pemasangan Logaritma

Untuk memuatkan garisan dalam bentuk y = A B log x, hanya lakukan padanan polinomial y terhadap 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>

Eksponen Memasang

Untuk memuatkan garisan dalam bentuk y = Ae^{Bx}, ambil logaritma kedua-dua belah dan lakukan padanan polinomial log y melawan 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>

Untuk lebih baik ketepatan, memanfaatkan pemberat berkadar dengan y menggunakan kata kunci w dalam 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>

Perhatikan bahawa kebanyakan aplikasi hamparan dan kalkulator saintifik menggunakan formula tidak berwajaran untuk regresi eksponen, jadi elakkan pemberat jika keserasian dikehendaki.

Menggunakan scipy.optimize.curve_fit

Jika scipy tersedia, gunakan curve_fit untuk model pemasangan tanpa transformasi.

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

Dengan memberikan tekaan awal, curve_fit boleh mencapai yang dikehendaki minimum tempatan untuk pemasangan eksponen, menghasilkan padanan yang lebih tepat daripada kaedah polyfit yang diubah.

Atas ialah kandungan terperinci Bagaimanakah saya boleh melakukan pemasangan lengkung eksponen dan logaritma dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn