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

Linda Hamilton
Lepaskan: 2024-10-28 13:55:30
asal
845 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!