علوم وفضاء

polyint: هل k هو المعامل الثابت عند lbnd غير الصفر؟

قيمة الدالة عند 2 وعند صفر.
قيمة عند الحد تختلف عن المعامل الثابت.

في تكامل واحد مع scl=1، يضبط تنفيذ 2.3.5 القيمة عند lbnd؛ فلا يلزم أن يساوي k المعامل الثابت. [2]

قيمة عند حد أم معامل؟

في تكامل واحد مع scl=1، يضبط تنفيذ 2.3.5 القيمة عند lbnd؛ فلا يلزم أن يساوي k المعامل الثابت. [2]

توثيق polyint يرتب المعاملات من الدرجة الدنيا إلى العليا، ويجعل lbnd صفرًا افتراضيًا. لكن وصف k فيه يستعمل عبارة «عند الصفر»؛ لا ننقلها إلى كل حد غير صفري. [1]

في تنفيذ الإصدار 2.3.5، يصحح السطر tmp[0] += k[i] - polyval(lbnd,tmp) المعامل الثابت بعد التكامل. نقتصر هنا على تكامل واحد دون تحجيم. [2]

سنكتب الناتج كثير حدود في المتغير x نفسه، ونسأل عن قيمته عند نقطة محددة وعن معامله الثابت كلٍّ على حدة. الأعداد مؤلفة بلا وحدات، ولا تصف قياسًا تجريبيًا.

شغّل المثال وافحص الشرط

شغّلنا NumPy 2.3.5 وCPython 3.12.14: المدخل [3,2] من float64 يمثل 2x+3؛ مع k=5 وlbnd=2 أعاد [-5,3,1] بالشكل (3,).

from numpy.polynomial import polynomial as P import numpy as np c=np.array([3,2],dtype=np.float64) q=P.polyint(c,k=5,lbnd=2) print(q)

قرأنا q بالترتيب المعلن: −5 للحد الثابت، و3 لمعامل x، و1 لمعامل x². لم نحصل على عدد يمثل تكاملًا محددًا فحسب؛ الخرج في هذا التشغيل مصفوفة معاملات لدالة كاملة.

الناتج F(x)=x²+3x−5؛ إذن F(2)=5، بينما F(0)=−5، ومشتقته 2x+3.

يمكن بناء مرجع مستقل: مشتقة x²+3x+C هي 2x+3. نطلب قيمتها عند 2 مساويةً لـ5، فنحل 4+6+C=5، أي C=−5. لا نبدأ بوضع C=5؛ فهذا سيجعل قيمة الدالة عند 2 مساويةً لـ15.

المعادلة F(2)=5 تصف قيمة مجموع الحدود عند النقطة، لا قيمة حد واحد منها. لهذا لا يكفي النظر إلى العدد الأول في مصفوفة q للحكم على تحقق الشرط.

غيّر الحد والقيمة في تحكمين

تحكم lbnd=0 مع k=5 أعاد [5,3,1]؛ وتحكم k=7 مع lbnd=2 أعاد [-3,3,1].

zero=P.polyint(c,k=5,lbnd=0) higher=P.polyint(c,k=7,lbnd=2) print(zero) print(higher)

التحكم الأول يعطي x²+3x+5. عند صفر تتلاشى حدود x وx²، فتساوي قيمة الدالة معاملها الثابت 5؛ وعند 2 تصبح قيمتها 15. اتفاق k والمعامل هنا مرتبط بالحد الصفري في هذا المثال.

التحكم الثاني يعطي x²+3x−3. عند 2 نحصل على 7. مقارنةً بالناتج الأول، زاد المعامل الثابت بمقدار 2 وبقي معاملا x وx² كما هما؛ كما زادت قيمة الدالة بمقدار 2 عند كل نقطة.

بقيت بايتات المدخل c وشكله (2,) ثابتة في الاستدعاءات. هذه ملاحظة عن التشغيل المسجل، ولا تتناول الكتابة عبر ذاكرة مشتركة أو استدعاءات لم نجربها.

إسقاط المعامل الثابت وتحكم طويل.
افحص قيمة الدالة عند الحد المطلوب.

مرجع الشبكة وحدود النتيجة

مرت 567 مقارنة على 81 حالة خطية؛ تكامل واحد بإعدادات scl=1 وaxis=0. لم نفحص التكامل المتكرر أو المعاملات المركبة أو الدرجات العامة.

للمدخل f(x)=a x+b، نكتب مرجعنا الكسري على الصورة F(x)=(a/2)x²+b x+C. عند حد l وقيمة مطلوبة k، يكون C=k−b l−(a/2)l². هذا حساب جبري مستقل، لا يستدعي polyint ولا polyval.

جمعنا a من 1 و2 و3، وb من −2 و0 و3، وl من −2 و0 و2، وk من −3 و0 و5. لدينا 3⁴=81 حالة؛ لكل حالة سبعة فحوص، فالمجموع 567.

الفحوص تتناول المعاملات، والقيمة عند الحد، وخمس نقاط تقييم كسري، والمعاملات بعد اشتقاقها يدويًا، وتحكم الحد الصفري، وتحكم زيادة k بمقدار 2، والنوع والشكل وثبات بايتات المدخل. استعملنا حدًا مطلقًا 10⁻¹² دون سماح نسبي.

النطاق مدخلات خطية أحادية البعد من float64 وتكامل واحد؛ لا نعمم على الصفر المتطابق، أو التحجيم، أو الدفعات، أو الدرجات الأخرى، أو الدقة والأداء عمومًا. نفحص شرط القيمة والمعامل منفصلين، مع حفظ الحد المستعمل.

lbndkالمعامل الثابتالقيمة عند الحد
25−55
0555
27−37

للتوسع: التكامل المحدود.

المراجع

  1. NumPy polyint
  2. NumPy 2.3.5 implementation

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.