"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنك إجراء تركيب منحنى أسي ولوغاريتمي في بايثون بما يتجاوز تركيب متعدد الحدود؟

كيف يمكنك إجراء تركيب منحنى أسي ولوغاريتمي في بايثون بما يتجاوز تركيب متعدد الحدود؟

تم النشر بتاريخ 2024-11-20
تصفح:109

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

تركيب المنحنى الأسي واللوغاريتمي في بايثون ما وراء تركيب متعدد الحدود

بالإضافة إلى تركيب متعدد الحدود، الذي يحتوي على وظيفة polyfit () في بايثون، توجد تقنيات لتركيب الأسي والمنحنيات اللوغاريتمية.

تركيب المنحنى اللوغاريتمي

لتناسب المنحنى مع النموذج y = A B log x، يمكننا تحويل البيانات عن طريق أخذ اللوغاريتم من كلا الجانبين، مما يؤدي إلى log y = سجل A B سجل x. من خلال مطابقة log y مع log x باستخدام polyfit()، نحصل على المعاملات log A وB.

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

تركيب المنحنى الأسي

لتناسب المنحنى مع النموذج y = Ae^(Bx)، يمكننا أخذ اللوغاريتم لكلا الجانبين، مما يؤدي إلى log y = log A B x. يمكن بعد ذلك تحديد المعلمات عن طريق ملاءمة السجل y مع x باستخدام polyfit().

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

ملاحظة حول الانحياز في التركيب غير الموزون

تجدر الإشارة إلى أن الملاءمة غير الموزونة (دون النظر في أوزان نقاط البيانات) يمكن أن تؤدي إلى الانحياز نحو القيم الصغيرة، خاصة في ملاءمة المنحنى الأسي. للتخفيف من ذلك، يمكن تضمين الأوزان في عملية الملاءمة، بما يتناسب مع قيم y.

استخدام Scipy لتركيب المنحنى

يوفر Scipy وظيفة curve_fit () لإجراء ملاءمة المنحنى غير الخطية. وهذا يتيح لنا ملاءمة أي نموذج بشكل مباشر، دون الحاجة إلى تحويلات. # تركيب المنحنى اللوغاريتمي popt، pcov = curve_fit(lambda t, a, b: a b * np.log(t), x, y) طباعة ("المعاملات:"، بوبت) طباعة ("y ≈"، popt[1]، " "، popt[0]، "log(x)") # تركيب المنحنى الأسي popt, pcov = curve_fit(lambda t, a, b: a * np.exp(b * t), x, y, p0=(1, 0.1)) طباعة ("المعاملات:"، بوبت) طباعة ("y ≈"، popt[0]، "*"، "exp("، popt[1]، "x)")

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3