scipy.integrate --- التكامل العددي

توفر الوحدة الفرعية scipy.integrate إجراءات تكامل عددي للدوال أحادية المتغير ذات القيم الحقيقية. والخوارزميات ليست منقولة من scipy.integrate الخاصة بـ CPython بل مشتقة من التنفيذ المرجعي الموجود على https://www.genivia.com/qthsh.html.

يعمل التكامل العددي على أفضل وجه عند تفعيل حساب float64. ومع حساب float32 تظل الإجراءات تعمل لكن بدقة منخفضة. ويمكن تحديد تفاوت الخطأ المطلوب عبر الوسيط المفتاحي eps؛ والقيمة الافتراضية هي قيمة etolerance المحدَّدة وقت الترجمة (1e-14 لـ fp64 و1e-8 لـ fp32). الأعداد المركّبة غير مدعومة.

الدوال

scipy.integrate.quad(f: Callable[[float], float], a: float, b: float, *, order: int = 5, eps: float = etolerance) tuple[float, float]

تكامل f من a إلى b باستخدام تربيع Gauss-Kronrod التكيفي (G10, K21). وهذا هو المُكامِل العام المُوصى به.

المعاملات:
  • f -- دالة قابلة للاستدعاء تأخذ قيمة float واحدة وتُعيد float.

  • a -- حد التكامل الأدنى.

  • b -- حد التكامل الأعلى.

  • order -- رتبة التكامل (الافتراضي 5).

  • eps -- تفاوت الخطأ (الافتراضي etolerance).

يُعيد:

صفيفة ثنائية (result, error) من الأعداد العشرية تعطي قيمة التكامل وتقديرًا للخطأ.

scipy.integrate.romberg(f: Callable[[float], float], a: float, b: float, *, steps: int = 100, eps: float = etolerance) float

تكامل f من a إلى b باستخدام طريقة Romberg، وهي صيغة Newton-Cotes تُقيّم المُكامَل عند نقاط متباعدة بالتساوي. وهي الأنسب للمُكامَلات ذات المشتقات المتصلة. لاحظ أن scipy.integrate.romberg صار مهملًا في CPython منذ SciPy 1.12.0؛ ففضّل quad() للشيفرة الجديدة.

المعاملات:
  • f -- دالة قابلة للاستدعاء تأخذ قيمة float واحدة وتُعيد float.

  • a -- حد التكامل الأدنى.

  • b -- حد التكامل الأعلى.

  • steps -- عدد الخطوات (الافتراضي 100).

  • eps -- تفاوت الخطأ (الافتراضي etolerance).

يُعيد:

قيمة التكامل بوصفها float.

scipy.integrate.simpson(f: Callable[[float], float], a: float, b: float, *, steps: int = 100, eps: float = etolerance) float

تكامل f من a إلى b باستخدام قاعدة Simpson التكيفية. وخلافًا لـ scipy.integrate.simpson الخاصة بـ CPython تأخذ هذه الدالة دالة قابلة للاستدعاء وتختار تباعد العينات داخليًا بدلًا من أخذ مصفوفة من قيم الدالة المحسوبة مسبقًا.

المعاملات:
  • f -- دالة قابلة للاستدعاء تأخذ قيمة float واحدة وتُعيد float.

  • a -- حد التكامل الأدنى.

  • b -- حد التكامل الأعلى.

  • steps -- عدد الخطوات (الافتراضي 100).

  • eps -- تفاوت الخطأ (الافتراضي etolerance).

يُعيد:

قيمة التكامل بوصفها float.

scipy.integrate.tanhsinh(f: Callable[[float], float], a: float, b: float, *, levels: int = 6, eps: float = etolerance) tuple[float, float]

تكامل f من a إلى b باستخدام عائلة تربيع Tanh-Sinh وSinh-Sinh وExp-Sinh (الأسّي المزدوج). وهو الإجراء الذي يُستخدم عندما يكون للمُكامَل تفردات أو مشتقات لا نهائية عند النقاط الطرفية، وهو الإجراء الوحيد في هذه الوحدة الفرعية الذي يقبل حدود تكامل لا نهائية (مثل -np.inf وnp.inf).

المعاملات:
  • f -- دالة قابلة للاستدعاء تأخذ قيمة float واحدة وتُعيد float.

  • a -- حد التكامل الأدنى؛ قد يكون -np.inf.

  • b -- حد التكامل الأعلى؛ قد يكون np.inf.

  • levels -- عدد مستويات التنقيح (الافتراضي 6).

  • eps -- تفاوت الخطأ (الافتراضي etolerance).

يُعيد:

صفيفة ثنائية (result, error) من الأعداد العشرية تعطي قيمة التكامل وتقديرًا للخطأ.