علوم وفضاء

polyfromroots: هل تستعيد المعامل الرئيس من الجذور؟

الجذران ومعاملات دالتين مختلفتين.
اتفاق الجذور مع اختلاف قيمة الدالة.

polyfromroots تبني كثير حدود معامله الرئيس 1 من الجذور المعطاة، وتعيد معاملاته من الدرجة الدنيا إلى العليا. [1]

ما المعلومة التي تدخل إلى البناء؟

polyfromroots تبني كثير حدود معامله الرئيس 1 من الجذور المعطاة، وتعيد معاملاته من الدرجة الدنيا إلى العليا. [1]

إذا تكرر جذر، نكرره في قائمة المدخل بالعدد نفسه؛ ويمكن أن تظهر الجذور بأي ترتيب. [1]

نختار الجذرين 2 و5. حاصل ضرب العاملين q(x)=(x−2)(x−5)=x²−7x+10، لذلك تمثل [10,−7,1] الثابت ومعامل x ثم معامل x². الأعداد مؤلفة وبلا وحدات أو بيانات قياس.

لا نعطي الاستدعاء المعامل الرئيس للدالة التي نحاول استعادتها. سنقارن q بدالة محددة f(x)=3x²−21x+30، ثم نوضح ما الذي تضيفه قيمة خارج الجذور. نفترض أن الجذرين هما القائمة الكاملة لتربيعية، ولا نسمح بإضافة عوامل أخرى.

الجذور نفسها والقيم مختلفة

شغّلنا NumPy 2.3.5 وCPython 3.12.14: الجذران [2,5] من float64 أعطيا [10.,−7.,1.]، أي q(x)=x²−7x+10.

import numpy as np from numpy.polynomial import polynomial as P roots=np.array([2,5],dtype=np.float64) q=P.polyfromroots(roots) f=3*q print(q,f) print(P.polyval(roots,q),P.polyval(roots,f)) print(P.polyval(3,q),P.polyval(3,f))

المطلوب المؤلف f(x)=3q(x) له المعاملات [30,−21,3]. الدالتان تصفران عند 2 و5؛ لكن q(3)=−2 وf(3)=−6، فلا يثبت اتفاق الجذور استعادة الدالة الأصلية.

بالتوزيع اليدوي، ضرب x−2 في x−5 يعطي x²−5x−2x+10. ثم ضرب المعاملات الثلاثة في 3 يعطي 3x²−21x+30. إعادة ترتيب الجذرين لا تدخل العدد 3 إلى هذا البناء؛ قرأنا من المدخل [5,2] الخرج نفسه.

في التشغيل، التعويض بالجذرين أعطى [0.,0.] للدالتين. وعند x=3، يعطي المرجع q(3)=9−21+10=−2 وf(3)=27−63+30=−6. الفارق هنا في عامل مضروب في الدالة كلها؛ لا يزول بفحص مواقع الصفر.

وعند x=0 كانت القيمتان 10 و30، وهما الحدّان الثابتان في هذا المثال. لم نقارن الجذور تقريبيًا بمحلل جذور آخر؛ أدخلنا الجذرين الصحيحين المؤلفين وفحصنا التعويض والمعاملات مباشرة.

قيمة خارج الجذور تختار العامل

داخل عائلة f=Aq ذات A غير صفري، معرفة f(3)=−6 تحدد A=(−6)/(−2)=3. أما معرفة f(2)=0 فلا تحدد A، لأن q(2)=0 لكل مضاعف في العائلة.

في العائلة التي ثبتناها، f(x)=Aq(x)، نعرف q كاملة ويبقى عدد واحد A. إذا عُرفت قيمة f(t) عند نقطة تحقق q(t)≠0، نحل المعادلة العددية A=f(t)/q(t). هذا برهان للعائلة المعلنة، وليس ضمان تفرد بين كل كثيرات الحدود الممكنة.

للقيمة المؤلفة f(3)=−6، نقسم على q(3)=−2، فنحصل على A=3. ضرب المصفوفة التي بنيناها في هذا العامل أعاد [30.,−21.,3.]؛ وراجعنا القيم عند الجذرين وعند النقطة 3.

أما عند t=2، فالمعلومة f(2)=0 تتحول إلى 0=A×0. العامل 2 يعطي معاملات [20,−14,2]، والعامل 3 يعطي [30,−21,3]؛ كلاهما يوافق الصفر عند 2 و5. لا نحسب A بقسمة صفر على صفر.

إذا قيل بدلًا من ذلك f(2)=7، فلا يوجد عامل A في عائلتنا يحققها، لأن كل A×q(2)=0. هذه حالة عدم توافق مع الفرض المعلن، لا معلومة تستخرج معاملًا جديدًا.

قيد القائمة الكاملة والدرجة مهم: السماح بعوامل إضافية أو بيانات تقريبية أو ضجيج يجعل السؤال مختلفًا. نحن نستعيد مضاعفًا غير صفري لتربيعية محددة، ولا نحل ملاءمة من مشاهدات أو مسألة استيفاء عامة.

قيمة خارج الجذور تحدد عامل الضرب.
القسمة ممكنة عند قيمة غير صفرية للقاعدة.

التكرار والصفر وحدود الفحص

مرت 280 مقارنة على 40 حالة تربيعية مؤلفة، تشمل جذرًا مكررًا وجذرًا صفريًا؛ المرجع كسري مستقل والتساوي دقيق للأعداد الصغيرة المختارة.

تحكم الجذر المكرر [2,2] أعطى [4.,−4.,1.]، أي (x−2)². أبقينا النسختين في المدخل. وتحكم [0,5] أعطى [0.,−5.,1.]؛ وجود الجذر صفر جعل الحد الثابت صفرًا، ولم يغير المعامل الرئيس 1 في الخرج المسجل.

أخذنا الأزواج الستة غير المرتبة من {−3,−1,2,5}، ثم الزوجين [2,2] و[0,5]. لكل زوج جرّبنا العوامل {−3,−1,2,3,5}، وهي غير صفرية؛ لدينا 8×5=40 حالة. النقطة 3 خارج الجذور في جميع هذه الأزواج.

سبعة فحوص لكل حالة: المعاملات المنشأة ونوعها وشكلها؛ التعويض بالجذرين؛ معاملات المضاعف؛ القيم عند النقطة 3 وجذور المضاعف؛ استعادة العامل ومصفوفة المعاملات؛ عكس ترتيب الجذرين؛ ثم ثبات بايتات المدخل والخرج ونوع المضاعف وشكله والقيم عند صفر. الإجمالي 40×7=280، ومرت كلها.

لجذرين a وb، المرجع الكسري [ab,−(a+b),1]. وللعامل A نضرب كل خانة فيه؛ ثم نحسب القيمة بجمع المعامل مضروبًا في القوة المناسبة. هذا المرجع لا يستدعي polyfromroots أو polymul أو polyval أو polyroots.

كانت مدخلات الجذور من float64 بشكل (2,)، والمعاملات المنشأة والمضروبة من النوع نفسه بشكل (3,). بقيت بايتات الجذور وq كما هي، واستعملنا مساواة دقيقة للأعداد الصحيحة الصغيرة هنا. لا ننقل هذا إلى ضمان تقريب لكل جذور عشرية.

لم نفحص درجات أعلى، أو جذورًا مركبة أو تقريبية، أو قائمة ناقصة، أو مدخلًا فارغًا، أو عاملًا صفريًا، أو ضجيجًا وملاءمة، أو تكييفًا عدديًا وأداءً ومحاور. حالة العامل الصفري ليست عضوًا في العائلة غير الصفرية التي استعملناها؛ ولا نستنتج منها عدد جذور تربيعية.

المعاملاتعند 2عند 5عند 3عند 0
[10,-7,1]00-210
[30,-21,3]00-630
[20,-14,2]00-420

للتوسع: الحدود والمعاملات والدرجة.

المراجع

  1. NumPy polyfromroots

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