الجزء الحقيقي للمعاملات قد يغير الجذور التي بدأنا بها.
ما الذي بنيناه؟
polyfromroots تعيد معاملات حاصل ضرب عوامل الجذور، مرتبة من الدرجة الدنيا إلى العليا. [1]
أعدادنا مؤلفة وليست بيانات قياس. نقارن كثير الحدود المنشأ مع كثير حدود آخر نأخذ له الجزء الحقيقي من كل معامل. لا نبحث عن تقريب جذور مجهولة ولا نحذف ضجيجًا عدديًا.
real تعيد الجزء الحقيقي للمدخل المركب. [2]
جذران ومعاملات مركبة
على NumPy 2.3.5 وCPython 3.12.14، اخترنا الجذرين 1.75+1.25j و2.75 من complex128؛ المعاملات [4.8125+3.4375j,-4.5-1.25j,1+0j] صفّرت الدالة عند كليهما.
من جذري المثال z=7/4+5/4j وs=11/4 نبني (x-z)(x-s). بالتوزيع، المعامل الثابت zs=77/16+55/16j، ومعامل x هو -(z+s)=-9/2-5/4j، ومعامل x² يساوي 1.
أنشأنا مصفوفة جذور جديدة لكل حالة. استعملنا الجذور نفسها للتعويض في المعاملات الأصلية ثم في الأجزاء الحقيقية. فحصنا بايتات مدخلات كل نداء مباشرة بعده؛ بقيت كما كانت.
roots=np.array([1.75+1.25j,2.75+0j],dtype=np.complex128) q=P.polyfromroots(roots) r=np.real(q) print(P.polyval(roots,q)) print(P.polyval(roots,r))
الرمز P هنا هو numpy.polynomial.polynomial، ويكتب بايثون j للوحدة التخيلية. معاملات q من complex128 بالشكل (3,)، ومعاملات r من float64 بالشكل نفسه؛ قيم التعويض من complex128 بالشكل (2,).
جذر بقي وآخر فُقد
أخذ الأجزاء الحقيقية أعطى [4.8125,-4.5,1]؛ عند الجذر الأول أصبحت القيمة -1.5625-1.25j، بينما بقيت صفرًا عند 2.75.
المعاملات الحقيقية تمثل r(x)=x²-(a+s)x+as=(x-a)(x-s)، حيث a=7/4. لذلك بقي الجذر الحقيقي s، لكن الجذر المركب z=a+bj لا يلزم أن يبقى.
بالتعويض المباشر: r(a+bj)=(bj)(a-s+bj)=-b²+b(a-s)j. عند b=5/4 وa-s=-1 نحصل على -25/16-5/4j، وهي قيمة غير صفرية. هذا حساب من أعداد المثال قبل قراءة الخرج.
نجاح التعويض عند الجذر الحقيقي وحده كان سيخفي المشكلة. بعد استخراج الأجزاء الحقيقية صارت جذور r في هذا المثال 1.75 و2.75؛ نعرف ذلك من العاملين المكتوبين، ولم نشغّل محلل جذور.

تحكم مترافق ومرجع مستقل
تحكم مستقل بجذرين مترافقين 1.75±1.25j أعاد [4.625+0j,-3.5+0j,1+0j]؛ أخذ الأجزاء الحقيقية أبقى الصفر عند كليهما.
فحصنا 62 حالة تربيعية مؤلفة، عبر 248 نداءً مسمى و620 قيمة ناتجة؛ المرجع أزواج كسور دقيقة، وأكبر فرق مرصود صفر ضمن سماحية 1e-12.
في التحكم، ضرب (x-a-bj)(x-a+bj) يعطي (x-a)²+b². مع a=7/4 وb=5/4، الحد الثابت a²+b²=37/8 ومعامل x=-7/2. الأجزاء التخيلية للمعاملات المعادة صفر هنا، ولذلك لم يتغير كثير الحدود عند أخذ الأجزاء الحقيقية.
بنى المرجع مستقلًا أزواجًا من Fraction للجزأين الحقيقي والتخيلي. ضرب زوجي الجذور أعطى المعامل الثابت، وسالب جمعهما أعطى المعامل الخطي. استخدم المرجع طريقة هورنر الكسري للتعويض، دون polyfromroots أو real أو polyval لتوليد التوقعات.
للشبكة a من -2 إلى 2 بالأعداد الصحيحة، وb من 1/2 و1 و3/2. في الحالات غير المترافقة اخترنا s من -3 و0 و3: عددها 5×3×3=45. أضفنا 5×3=15 حالة مترافقة، ثم المثال والتحكم خارج الشبكة، فأصبح العدد 62.
لكل حالة نداء polyfromroots ونداء real ونداءا polyval؛ أربعة نداءات مسماة. نعد ثلاثة معاملات مركبة وثلاثة حقيقية، ثم قيمتين لكل مسار تعويض: عشر قيم ناتجة للحالة. هذا هو حساب 248 نداءً و620 قيمة، دون عد إنشاء المصفوفات أو العمليات المساعدة.
في 46 حالة غير مترافقة لم يصفر كثير الحدود المعدل عند الجذر المركب؛ وفي 16 حالة مترافقة بقي الصفر عند الجذرين. ثبات بايتات المدخلات لا يثبت ملكية الذاكرة أو استقلال الناتج عنها؛ لم نكتب إلى المصفوفات.
اقتصر التشغيل على تربيعيات صغيرة محدودة بجذور complex128 المختارة. لم نفحص درجات أعلى أو جذورًا تقريبية أو complex64 أو NaN واللانهاية أو تنظيفًا وفق سماحية أو الأداء والتكييف العام. الصفر المرصود في مقارناتنا ليس ضمان دقة عامة للمكتبة.
| الجذران | القيمة بعد الاستخراج عند الأول | عند الثاني |
|---|---|---|
| 1.75+1.25j ; 2.75 | -1.5625-1.25j | 0 |
| 1.75+1.25j ; 1.75-1.25j | 0 | 0 |
للتوسع: الحدود والمعاملات.
المراجع
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
