Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah anda melakukan pemasangan lengkung eksponen dan logaritma dalam Python melebihi pemasangan polinomial?

Bagaimanakah anda melakukan pemasangan lengkung eksponen dan logaritma dalam Python melebihi pemasangan polinomial?

Linda Hamilton
Linda Hamiltonasal
2024-11-04 02:47:29376semak imbas

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

Pemasangan Lengkung Eksponen dan Logaritma dalam Python Melebihi Pemasangan Polinomial

Selain pemasangan polinomial, yang mempunyai fungsi polyfit() dalam Python, terdapat teknik untuk memasang eksponen dan lengkung logaritma.

Pemasangan Lengkung Logaritma

Untuk memuatkan lengkung pada model y = A B log x, kita boleh menukar data dengan mengambil logaritma kedua-dua belah, menghasilkan log y = log A B log x. Dengan memasang log y dengan log x menggunakan polyfit(), kami memperoleh pekali log A dan 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>

Pemasangan Lengkung Eksponen

Untuk memuatkan lengkung pada model y = Ae^ (Bx), kita boleh mengambil logaritma kedua-dua belah, menghasilkan log y = log A B x. Parameter kemudiannya boleh ditentukan dengan memasang log y terhadap x menggunakan polyfit().

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

Nota tentang Bias dalam Pemasangan Tidak Berwajaran

Perlu diperhatikan bahawa pemasangan tidak berwajaran (tanpa mengambil kira berat titik data) boleh membawa kepada berat sebelah terhadap nilai kecil, terutamanya dalam pemasangan lengkung eksponen. Untuk mengurangkan perkara ini, pemberat boleh dimasukkan dalam proses pemasangan, berkadar dengan nilai-y.

Menggunakan Scipy untuk Pemasangan Lengkung

Scipy menyediakan fungsi curve_fit() untuk melaksanakan pemasangan lengkung tak linear. Ini membolehkan kami menyesuaikan mana-mana model secara langsung, tanpa transformasi.

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

Atas ialah kandungan terperinci Bagaimanakah anda melakukan pemasangan lengkung eksponen dan logaritma dalam Python melebihi pemasangan polinomial?. 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