polyroots تقرأ c[i] معاملًا للقوة xⁱ. [1] نفصل أصفار البداية عن أصفار النهاية.
اقرأ موضع المعامل أولًا
polyroots تقرأ c[i] معاملًا للقوة xⁱ. [1] نفصل أصفار البداية عن أصفار النهاية.
polytrim تحذف المعاملات الطرفية عالية الدرجة التي لا يتجاوز مقدارها tol. [2]
نستخدم هنا tol=0 وأصفارًا دقيقة. لا نقرب معاملًا صغيرًا غير صفري إلى صفر، ولا نحاول تقدير خطأ قيم الدالة من عتبة للمعاملات.
المعامل الأول للثابت؛ ترتفع القوة مع الفهرس. [1]
سؤالنا ليس هل حذف خانة داخلية يغير قيمة عند نقطة، بل كيف يختلف أثر أصفار طرفين: أحدهما يحدد عاملًا صفريًا، والآخر يطيل التخزين دون إضافة حد غير صفري.
ست خانات وثلاثة جذور مع التكرار
على NumPy 2.3.5 وCPython 3.12.14، أدخلنا c=[0,0,−6,1,0,0] من float64؛ أعادت polyroots [0.,0.,6.]، لا خمس قيم رغم أن طول c ناقص واحد يساوي 5.
import numpy as np from numpy.polynomial import polynomial as P c=np.array([0,0,-6,1,0,0],dtype=np.float64) roots=P.polyroots(c) print(len(c)-1,roots,roots.dtype)
الجدول التصاعدي للقوى هو 0 و1 و2 و3 و4 و5. المعاملان الوحيدان غير الصفريين −6 عند القوة 2 و1 عند القوة 3؛ لذلك الصيغة 0+0x−6x²+x³+0x⁴+0x⁵.
تمثل المعاملات p(x)=x³−6x²=x²(x−6). درجة المثال 3، والجذر صفر مكرر مرتين؛ أصفار القوى 4 و5 لا تضيف جذورًا.
من p(x)=x²(x−6)، تكون القيم المتميزة التي تصفره 0 و6. لكن العامل x يظهر مرتين، والعامل x−6 مرة واحدة؛ فنعد ثلاث جذور مع التكرار، مقابل قيمتين متميزتين.
تكرار الصفر مرتين ليس مستنتجًا من ظهوره مرتين في نتيجة تقريبية وحدها. أول معامل غير صفري في المثال يقع عند القوة 2، والعامل الباقي عند صفر يساوي −6 لا صفرًا؛ فلا ينقسم كثير الحدود على x³.
لدينا ست خانات، لكن الحدين المكتوبين 0x⁴ و0x⁵ صفريان. إضافتهما لا ترفع درجة p من 3 إلى 5؛ طول مصفوفة التخزين يصف الخانات، لا أعلى قوة ذات معامل غير صفري.
عند x=0، p(0)=0؛ وعند x=6، p(6)=36(6−6)=0. هذان تحققان حسابيان من التحليل، لا افتراض أن عدد الخانات يجب أن يوافق عدد القيم المعادة.
قص النهاية يختلف عن تصفية الأصفار كلها
أعادت polytrim مع tol=0 القائمة [0.,0.,−6.,1.] والجذور نفسها. أما أخذ المعاملات غير الصفرية فقط فأعطى [−6.,1.] وجذرًا واحدًا 6؛ ضاع العامل x².
trim=P.polytrim(c,tol=0) filtered=c[c!=0] print(trim,P.polyroots(trim)) print(filtered,P.polyroots(filtered))
في خرج trim بقيت الخانتان الأوليان صفريتين. المعامل −6 ما زال عند القوة 2 والمعامل 1 عند القوة 3؛ إذن الدالة ما زالت x²(x−6). المصفوفة صارت أقصر، بينما الجذور مع التكرار بقيت [0,0,6].
في filtered صار −6 المعامل الثابت وصار 1 معامل x. الدالة الجديدة q(x)=x−6، وليست كتابة مختصرة للصيغة الأولى. العلاقة p(x)=x²q(x) تشرح الجذور المفقودة.
عند صفر، q(0)=−6 بينما p(0)=0؛ فالعدد صفر لم يعد جذرًا بعد التصفية. أما 6 فيصفر الدالتين. وجود جذر مشترك لا يجعل قائمتي الجذور كاملتين متطابقتين.
وعند x=1، p(1)=q(1)=−5، لأن 1²=1. هذا فحص قد يخفي تغيير الدالة إن اكتفينا به. عند x=4، p(4)=16(−2)=−32 بينما q(4)=−2.
قص طرف القوى العالية لا يحرك فهارس المعاملات الباقية. أما حذف أصفار القوى الدنيا فيحركها ويقسم العامل الصفري في هذه العائلة؛ علينا تفسير المصفوفة الناتجة من جديد. [2]
كل أرقام المقارنة من المثال المؤلف. لا نستعمل تصفية المعاملات غير الصفرية وسيلةً لحساب جذور المدخل الأصلي؛ عرضناها لتوضيح الخطأ.

مرجع كسري وحدود الشبكة
مرت 656 مقارنة على 81 تركيبًا والمثال؛ مرجع Fraction يثبت المعاملات والجذور والقيم من التحليل. نطاقنا عوامل xᵐ(x−r) بدرجات صغيرة، دون ضمان دقة عامة للجذور المتكررة.
ألفنا p(x)=s xᵐ(x−r). اخترنا m من1 و2 و3، وr من−5 و2 و6، وs من−2 و1/2 و3. أضفنا في طرف القوى العالية 0 أو1 أو3 خانات صفرية؛ العدد 3⁴=81 تركيبًا.
المرجع التصاعدي هو m أصفار، ثم −sr ثم s، ثم أصفار الحشو. المعامل −sr غير صفري دائمًا في هذه الشبكة؛ لذلك تكرار الجذر صفر هو m بالضبط، والدرجة m+1. الجذر الآخر r بسيط ومختلف عن صفر.
المثال الرئيسي m=2 وr=6 وs=1 مع حشو خانتين مستقل عن التركيبات المذكورة؛ ليس s=1 من مقاييس الشبكة. نفذنا ثماني مجموعات له وثماني لكل تركيب: 81×8+8=656.
الفحوص: طول خرج الجذور؛ القيم مع التكرار بعد ترتيب للمقارنة؛ معاملات القص وشكله؛ جذور المقصوص؛ جذر التصفية الخاطئة ومعلومة تكرار صفر؛ قيم الأصل والمقصوص؛ قيم التصفية وعلاقة p=xᵐq؛ ثم الأنواع وثبات بايتات المدخل.
نحسب القيم المرجعية عند −3 و0 و1 و4 بالكسور من s xᵐ(x−r)، وقيم التصفية من s(x−r). لا يستدعي بناء المرجع polyroots أو polyfromroots أو polytrim أو polyval.
في التشغيل كانت مخرجات الجذور والمعاملات من float64، وبقي المدخل كما هو. قارنا الجذور بعد ترتيبها بتسامح مطلق 10⁻¹² ونسبي صفر؛ لا نجعل ترتيب النتائج المسجل أو نجاح هذه الأسرة ضمانًا لمصفوفات أخرى.
حذر توثيق polyroots من زيادة أخطاء تقدير الجذور المتكررة. [1] النتيجة الحالية سجل للعائلة المختارة، وليست وعدًا باستعادة كل تكرار من بيانات تقريبية.
لم نفحص كثير الحدود الصفري أو الثابت أو مصفوفة فارغة، أو جذورًا مركبة ومتكررة غير صفرية، أو تسامح قص غير صفري، أو درجات عالية وأداءً وتكييفًا عامًا. قبل عد الجذور، اقرأ القوى الفعلية التي تمثلها خانات المدخل.
| المعاملات | كثير الحدود | الجذور مع التكرار |
|---|---|---|
| [0,0,-6,1,0,0] | x²(x−6) | 0,0,6 |
| [0,0,-6,1] | x²(x−6) | 0,0,6 |
| [-6,1] | x−6 | 6 |
للتوسع: تحليل كثيرات الحدود.
المراجع
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
