Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah saya boleh melakukan pemasangan lengkung eksponen dan logaritma dalam Python?
Walaupun pemasangan lengkung polinomial tersedia dalam Python menggunakan polyfit(), panduan ini meneroka kaedah untuk lengkung eksponen dan logaritma pemadanan.
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>
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.
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!