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

Linda Hamilton
Lepaskan: 2024-11-04 02:47:29
asal
370 orang telah melayarinya

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

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

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

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!

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