Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah anda melakukan 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.
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>
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>
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.
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!