نضيف ثابتًا إلى كثير حدود تربيعي، ونقارن مسارين عند ثلاث نقاط.
الثابت ودرجات المعاملات
polyadd تجمع المعاملات بحسب الدرجة؛ add تجمع العناصر بالبث. [1] [2]
الترتيب ثابت ثم خطي ثم تربيعي؛ d=[0.75] يمثل ثابتًا. [1]
يقيّم polyval مصفوفة المعاملات التصاعدية على صورة مجموع c[i]*x**i؛ في استعمالنا ذي البعد الواحد، شكل قيم الخرج يوافق شكل النقاط. [3]
الشكل واحد في مثالنا؛ نراجع معنى كل قائمة قبل قيمتها.
ثلاثة معاملات تغيرت بدل معامل واحد
على NumPy 2.3.5، أعطى c=[1.25,-1.75,2.25] وd=[0.75] مجموعين: add=[2,-1,3] وpolyadd=[2,-1.75,2.25].
شغلنا NumPy 2.3.5 على CPython 3.12.14. المدخلات من float64؛ c شكلها (3,) وd شكلها (1,). الأعداد مؤلفة لهذا الفحص، وليست معاملات أخذناها من مثال وثائقي.
import numpy as np from numpy.polynomial import polynomial as P c=np.array([1.25,-1.75,2.25],dtype=np.float64) d=np.array([0.75],dtype=np.float64) x=np.array([-0.75,0.25,0.75],dtype=np.float64) ordinary=np.add(c,d) polynomial=P.polyadd(c,d) print(ordinary,polynomial) print(P.polyval(x,ordinary)) print(P.polyval(x,polynomial))
قبل الجمع نكتب p(x)=5/4−7x/4+9x²/4. الطلب p(x)+3/4 يعطي 2−7x/4+9x²/4، وهي قراءة معاملات polyadd المشاهدة. أما معاملات add فتقرأ 2−x+3x²؛ زاد معامل x بمقدار 3/4 وكذلك معامل x².
عند x=0.25، أعاد تقييم معاملات add القيمة 1.9375؛ أعاد تقييم معاملات polyadd القيمة 1.703125. الشكل في المسارين (3,) للمعاملات.
حسبنا القيمة المطلوبة عند x=1/4 بالكسور: 2−7/16+9/64=109/64=1.703125. القراءة الأخرى تعطي 2−1/4+3/16=31/16=1.9375. الفرق 15/64=0.234375، دون الحاجة إلى تفسيره بخطأ تقريب.
عند x=−0.75، كانت قيمة add هي 4.4375 وقيمة polyadd هي 4.578125. وعند x=0.75 كانتا 2.9375 و1.953125. سجلنا النوع float64 والشكل (3,) لكل مصفوفة قيم؛ القيم الثلاث تخص نقاطنا الثلاث.
صفران يغيران معنى الجمع العنصري
في تحكم مستقل، استبدلنا d بالمصفوفة [0.75,0,0]؛ اتفقت معاملات المسارين وقيمهما عند النقاط الثلاث.
أنشأنا c جديدة بالقيم نفسها وd جديدة من float64 بالشكل (3,)، وقيمها [0.75,0,0]. أعادت العمليتان [2,-1.75,2.25]، وقيم [4.578125,1.703125,1.953125] عند [-0.75,0.25,0.75].
الصفران يحفظان المعاملين الآخرين؛ المصفوفة المفردة زادت كل معامل عند add في المثال. [1] [2]
بالتوزيع اليدوي في الحالة المفردة، الفرق بين كثيري الحدود الناتجين هو d*(x+x²). عند x=0 يتفقان مهما كانت قيمة d المحددة في هذه المعادلة، وكذلك عند x=−1. لذلك لا نختار نقطة الاتفاق وحدها برهانًا على صحة جمع المعاملات.
في نقاطنا الثلاث لا يساوي x+x² صفرًا؛ يفسر ذلك اختلاف قيم المثال الرئيسي كلها. أما التحكم فيضيف كثير الحدود الثابت نفسه بالطريقتين؛ لم نغير النقاط أو معاملات c أو ترتيب القوى.

مرجع كسري وحدود الفحص
مرت 83 حالة و332 نداءً مسمى و960 عنصر خرج أمام مرجع كسري مستقل؛ اتفقت القيم بين المسارين في 28 حالة واختلفت في 55.
اخترنا معاملات c الثلاثة من {-2,0,3}، والثابت المفرد من {-1,0,2}. العدد 3³*3=81 حالة شبكة، ثم أضفنا المثال الرئيسي والتحكم ذي الصفرين. المعاملات الكسرية في المثالين خارج اختيارات الشبكة؛ لم نعدهما داخل 81.
أربع نداءات لكل حالة: add وpolyadd، ثم polyval لمعاملات كل مسار عند النقاط الثلاث. العدد 83*4=332؛ لا يدخل جمع الكسور أو قواها في عدد نداءات المكتبة.
حمل خرج add مجموع 249 معاملًا عبر الحالات، وخرج polyadd مجموع 213 معاملًا، ثم 498 قيمة تقييم؛ الإجمالي 249+213+498=960. شاهدنا أطوالًا من واحد إلى ثلاثة لمعاملات polyadd في الشبكة، لا طول ثلاثة في كل حالة.
كتب المرجع المستقل معاملات الطلب بجمع الدرجات المقابلة، ومعاملات البث بإضافة الثابت إلى كل موضع في الحالة المفردة. قيم المرجع مجموع كسري مباشر للقوى؛ لا تنتج دالة NumPy القيمة المتوقعة في الاختبار.
قارن الفحص كل معامل وكل قيمة بحد مطلق 10⁻¹²؛ أكبر فرق مرصود عن المرجع صفر في الأعداد المختارة. من حالات الشبكة 27 ثابتُها صفر، فاتفقت القيم؛ أضاف التحكم حالة اتفاق أخرى، وصار العدد 28 مقابل 55 حالة مختلفة.
أنشأنا مصفوفات c وd وx جديدة لكل حالة، وأعدنا استخدامها داخل نداءاتها الأربعة. حفظنا بايتات المدخلات وفحصنا بقاءها بعد كل نداء؛ لم نقس على حدة تغير القيمة أو النوع أو الشكل، ولم نختبر مشاركة الذاكرة.
النطاق معاملات منتهية من float64 في بعد واحد، حتى الدرجة الثانية وثلاث نقاط كسرية ثابتة. لم نفحص معاملات مركبة، أو قيمًا غير منتهية، أو درجات أعلى، أو محاور إضافية، أو الأداء، أو إصدارًا آخر. فحصنا الطلب الذي كتبناه، دون ضمان دقة عام للمكتبة.
| النقطة | جمع عناصر المعاملات | جمع كثيري الحدود |
|---|---|---|
| -0.75 | 4.4375 | 4.578125 |
| 0.25 | 1.9375 | 1.703125 |
| 0.75 | 2.9375 | 1.953125 |
للتوسع: الحدود والمعاملات.
المراجع
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
