طريقة هورنر

في الرياضيات وعلوم الحاسوب ، تُعدّ طريقة هورنر (أو مخطط هورنر ) خوارزميةً لحساب كثيرات الحدود . سُمّيت نسبةً إلى ويليام جورج هورنر ، مع أنها أقدم من ذلك بكثير، إذ نسبها هورنر إلى جوزيف لويس لاغرانج ، وقد اكتشفها علماء رياضيات صينيون وفرس قبل ذلك بمئات السنين. [ 1 ] بعد ظهور الحواسيب، أصبحت هذه الخوارزمية أساسيةً لحساب كثيرات الحدود بكفاءة.

تعتمد الخوارزمية على قاعدة هورنر، حيث يتم كتابة متعددة الحدود في شكل متداخل : أ0+أ1x+أ2x2+أ3x3++أنxن=أ0+x(أ1+x(أ2+x(أ3++x(أن-1+xأن)))).{\displaystyle {\begin{aligned}&a_{0}+a_{1}x+a_{2}x^{2}+a_{3}x^{3}+\cdots +a_{n}x^{n}\\={}&a_{0}+x{\bigg (}a_{1}+x{\Big (}a_{2}+x{\big (}a_{3}+\cdots +x(a_{n-1}+x\,a_{n})\cdots {\big )}{\Big )}{\bigg )}.\end{aligned}}}

وهذا يسمح بتقييم متعددة الحدود من الدرجة n باستخدامن{\displaystyle n}الضرب ون{\displaystyle n}عمليات الجمع. هذا هو الأمثل، حيث يستحيل تقييم كثيرات الحدود من الدرجة n بعدد أقل من العمليات الحسابية عندما يتم إعطاء كل من x والمعاملات a 0 ، ... ، a n كمدخلات. [ 2 ]

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

التقييم متعدد الحدود والقسمة المطولة

بفرض متعددة الحدودص(x)=أنا=0نأأناxأنا=أ0+أ1x+أ2x2+أ3x3++أنxن،{\displaystyle p(x)=\sum _{i=0}^{n}a_{i}x^{i}=a_{0}+a_{1}x+a_{2}x^{2}+a_{3}x^{3}+\cdots +a_{n}x^{n},}أينأ0،...،أن{\displaystyle a_{0},\ldots ,a_{n}}إذا كانت المعاملات ثابتة، فإن المشكلة تكمن في حساب قيمة متعددة الحدود عند قيمة محددة.x0{\displaystyle x_{0}}لx.{\displaystyle x.}

ولهذا الغرض، يتم تعريف سلسلة جديدة من الثوابت بشكل متكرر على النحو التالي:

ثمب0{\displaystyle b_{0}}قيمةص(x0){\displaystyle p(x_{0})}.

لفهم سبب نجاح ذلك، يمكن كتابة متعددة الحدود على الصورة التالية ص(x)=أ0+x(أ1+x(أ2+x(أ3++x(أن-1+xأن)))) .{\displaystyle p(x)=a_{0}+x{\bigg (}a_{1}+x{\Big (}a_{2}+x{\big (}a_{3}+\cdots +x(a_{n-1}+x\,a_{n})\cdots {\big )}{\Big )}{\bigg )}\ .}

وبالتالي، من خلال الاستبدال المتكرر لـبأنا{\displaystyle b_{i}}في التعبير، ص(x0)=أ0+x0(أ1+x0(أ2++x0(أن-1+بنx0)))=أ0+x0(أ1+x0(أ2++x0بن-1))  =أ0+x0ب1=ب0.\begin{aligned}p(x_{0})&=a_{0}+x_{0}{\Big (}a_{1}+x_{0}{\big (}a_{2}+\cdots +x_{0}(a_{n-1}+b_{n}x_{0})\cdots {\big )}{\Big )}\\&=a_{0}+x_{0}{\Big (}a_{1}+x_{0}{\big (}a_{2}+\cdots +x_{0}b_{n-1}{\big )}{\Big )}\\&~~\vdots \\&=a_{0}+x_{0}b_{1}\\&=b_{0}.\end{aligned}}}

وبالمثل، يمكن إثبات ما يلي:

اقتراح إجراء مناسب لتحديد نتيجة قسمة كثير الحدود ص(x)/(x-x0){\displaystyle p(x)/(x-x_{0})} معب0{\displaystyle b_{0}}(وهو ما يساويص(x0){\displaystyle p(x_{0})}) وهو باقي القسمة. إذاx0{\displaystyle x_{0}}هو جذرص(x){\displaystyle p(x)}، ثمب0=0{\displaystyle b_{0}=0}(أي أن الباقي هو0{\displaystyle 0}) وx-x0{\displaystyle x-x_{0}}عامل منص(x){\displaystyle p(x)}.

أمثلة

يقيمو(x)=2x3-6x2+2x-1{\displaystyle f(x)=2x^{3}-6x^{2}+2x-1}لx=3{\displaystyle x=3}.

نستخدم القسمة التركيبية على النحو التالي:

3 2-62-16062025{\displaystyle {\begin{array}{cc}{\begin{array}{r}\\3\\\\\\\end{array}}&{\begin{array}{|rrrr}\ 2&-6&2&-1\\&6&0&6\\\hline 2&0&2&5\end{array}}\end{array}}}

القيم في الصف الثالث هي مجموع القيم في الصفين الأولين. كل قيمة في الصف الثاني هي حاصل ضرب قيمة x ((في هذا المثال، 3 ) مع إدخال الصف الثالث مباشرةً إلى اليسار. إدخالات الصف الأول هي معاملات كثيرة الحدود المراد حسابها. ثم باقيو(x){\displaystyle f(x)}القسمة علىx-3{\displaystyle x-3}يكون5 .

لكن بحسب نظرية باقي كثير الحدود ، نعلم أن الباقي هوو(3){\displaystyle f(3)}. هكذا،و(3)=5{\displaystyle f(3)=5}.

في هذا المثال، إذاأ3=2،أ2=-6،أ1=2،أ0=-1{\displaystyle a_{3}=2,a_{2}=-6,a_{1}=2,a_{0}=-1}يمكننا أن نرى ذلكب3=2،ب2=0،ب1=2،ب0=5{\displaystyle b_{3}=2,b_{2}=0,b_{1}=2,b_{0}=5}، المدخلات في الصف الثالث. لذا، فإن القسمة التركيبية (التي اخترعها ونشرها روفيني قبل عشر سنوات من نشر هورنر) أسهل في الاستخدام؛ ويمكن إثبات أنها مكافئة لطريقة هورنر.

نتيجةً لنظرية باقي كثير الحدود، فإنّ القيم الموجودة في الصف الثالث هي معاملات كثيرة الحدود من الدرجة الثانية، وهي ناتج قسمةو(x){\displaystyle f(x)}القسمة علىx-3{\displaystyle x-3}والباقي هو5. وهذا يجعل طريقة هورنر مفيدة للقسمة المطولة لكثيرات الحدود .

قسّمx3-6x2+11x-6{\displaystyle x^{3}-6x^{2}+11x-6}بواسطةx-2{\displaystyle x-2}:

2 1-611-62-861-430{\displaystyle {\begin{array}{cc}{\begin{array}{r}\\2\\\\\\\end{array}}&{\begin{array}{|rrrr}\ 1&-6&11&-6\\&2&-8&6\\\hline 1&-4&3&0\end{array}}\end{array}}}

الناتج هوx2-4x+3{\displaystyle x^{2}-4x+3}.

يتركو1(x)=4x4-6x3+3x-5{\displaystyle f_{1}(x)=4x^{4}-6x^{3}+3x-5}وو2(x)=2x-1{\displaystyle f_{2}(x)=2x-1}قسّمو1(x){\displaystyle f_{1}(x)}بواسطةو2(x){\displaystyle f_{2}\,(x)}باستخدام طريقة هورنر.

0.5 4-603-52-2-112-2-11-4{\displaystyle {\begin{array}{cc}{\begin{array}{r}\\0.5\\\\\\\end{array}}&{\begin{array}{|rrrrr}\ 4&-6&0&3&-5\\&2&-2&-1&1\\\hline 2&-2&-1&1&-4\end{array}}\end{array}}}

الصف الثالث هو مجموع الصفين الأولين مقسومًا على2. كل عنصر في الصف الثاني هو ناتج ضرب1 مع إدخال الصف الثالث إلى اليسار. الإجابة هي و1(x)و2(x)=2x3-2x2-x+1-42x-1.{\displaystyle {\frac {f_{1}(x)}{f_{2}(x)}}=2x^{3}-2x^{2}-x+1-{\frac {4}{2x-1}}.}

كفاءة

التقييم باستخدام الشكل الأحادي للدرجةن{\displaystyle n}تتطلب متعددة الحدود على الأكثرن{\displaystyle n}إضافات و(ن2+ن)/2{\displaystyle (n^{2}+n)/2}يمكن تقليل تكلفة الضرب إذا تم حساب القوى عن طريق الضرب المتكرر وتقييم كل حد جبري على حدة.ن{\displaystyle n}إضافات و2ن-1{\displaystyle 2n-1}عمليات الضرب عن طريق تقييم قوىx{\displaystyle x}بالتكرار.

إذا تم تمثيل البيانات الرقمية من حيث الأرقام (أو البتات)، فإن الخوارزمية البسيطة تتضمن أيضًا تخزين ما يقارب2ن{\displaystyle 2n}مضروبًا في عدد بتاتx{\displaystyle x}: قيمة متعددة الحدود المحسوبة تقريبيةxن{\displaystyle x^{n}}ويجب على المرء أيضًا تخزينxن{\displaystyle x^{n}}على النقيض من ذلك، لا تتطلب طريقة هورنر سوىن{\displaystyle n}إضافات ون{\displaystyle n}عمليات الضرب، ومتطلبات التخزين الخاصة بها هي فقطن{\displaystyle n}مضروبًا في عدد بتاتx{\displaystyle x}أو بدلاً من ذلك، يمكن حساب طريقة هورنر باستخدامن{\displaystyle n}يمكن أيضًا توسيع طريقة هورنر لتقييم الضرب والجمع المدمجين .ك{\displaystyle k}مشتقات متعددة الحدود معكن{\displaystyle kn}الجمع والضرب. [ 3 ]

تُعدّ طريقة هورنر مثالية، بمعنى أن أي خوارزمية لتقييم أي متعددة حدود يجب أن تستخدم على الأقل نفس عدد العمليات. وقد أثبت ألكسندر أوستروفسكي في عام 1954 أن عدد عمليات الجمع المطلوبة هو الحد الأدنى. [ 4 ] كما أثبت فيكتور بان في عام 1966 أن عدد عمليات الضرب هو الحد الأدنى. [ 5 ]

ومع ذلك، فإن طريقة هورنر ليست مثالية لتقييم كثيرات الحدود المصفوفية (حيثx{\displaystyle x}(هي مصفوفة، لكن المعاملات قياسية)، عندما نحسب عمليات الضرب القياسي وعمليات ضرب المصفوفات بشكل منفصل لأن الأولى أرخص من الأخيرة.

يفترض هذا أن يتم تقييم متعددة الحدود في صورتها الأحادية، ولا يُسمح بأي تهيئة مسبقة للتمثيل، وهو أمر منطقي إذا تم تقييم متعددة الحدود مرة واحدة فقط. مع ذلك، إذا سُمح بالتهيئة المسبقة، وكان من المقرر تقييم متعددة الحدود عدة مرات، فمن الممكن استخدام خوارزميات أسرع . تتضمن هذه الخوارزميات تحويل تمثيل متعددة الحدود. بشكل عام، درجة-ن{\displaystyle n}يمكن حساب قيمة متعددة الحدود باستخدام n /2 +2 عملية ضرب فقط ون{\displaystyle n}إضافات. [ 6 ]

التقييم المتوازي

من عيوب قاعدة هورنر أن جميع العمليات تعتمد على بعضها البعض بشكل تسلسلي ، مما يحول دون الاستفادة من التوازي على مستوى التعليمات في الحواسيب الحديثة. في معظم التطبيقات التي تُعدّ فيها كفاءة حساب كثيرات الحدود مهمة، يتم حساب العديد من كثيرات الحدود منخفضة الرتبة في آنٍ واحد (لكل بكسل أو مضلع في رسومات الحاسوب، أو لكل مربع في شبكة المحاكاة العددية)، لذا لا داعي للبحث عن التوازي ضمن حساب كثير حدود واحد.

أما إذا كان المرء بصدد تقييم متعددة حدود واحدة من رتبة عالية جدًا، فقد يكون من المفيد تقسيمها على النحو التالي: ص(x)=أنا=0نأأناxأنا=أ0+أ1x+أ2x2+أ3x3++أنxن=(أ0+أ2x2+أ4x4+)+(أ1x+أ3x3+أ5x5+)=(أ0+أ2x2+أ4x4+)+x(أ1+أ3x2+أ5x4+)=أنا=0ن/2أ2أناx2أنا+xأنا=0ن/2أ2أنا+1x2أنا=ص0(x2)+xص1(x2).{\displaystyle {\begin{aligned}p(x)&=\sum _{i=0}^{n}a_{i}x^{i}\\[1ex]&=a_{0}+a_{1}x+a_{2}x^{2}+a_{3}x^{3}+\cdots +a_{n}x^{n}\\[1ex]&=\left(a_{0}+a_{2}x^{2}+a_{4}x^{4}+\cdots \right)+\left(a_{1}x+a_{3}x^{3}+a_{5}x^{5}+\cdots \right)\\[1ex]&=\left(a_{0}+a_{2}x^{2}+a_{4}x^{4}+\cdots \right)+x\left(a_{1}+a_{3}x^{2}+a_{5}x^{4}+\cdots \right)\\[1ex]&=\sum _{i=0}^{\lfloor n/2\rfloor }a_{2i}x^{2i}+x\sum _{i=0}^{\lfloor n/2\rfloor }a_{2i+1}x^{2i}\\[1ex]&=p_{0}(x^{2})+xp_{1}(x^{2}).\end{aligned}}}

وبشكل عام، يمكن تقسيم المجموع إلى k أجزاء: ص(x)=أنا=0نأأناxأنا=ج=0ك-1xجأنا=0ن/كأكأنا+جxكأنا=ج=0ك-1xجصج(xك){\displaystyle p(x)=\sum _{i=0}^{n}a_{i}x^{i}=\sum _{j=0}^{k-1}x^{j}\sum _{i=0}^{\lfloor n/k\rfloor }a_{ki+j}x^{ki}=\sum _{j=0}^{k-1}x^{j}p_{j}(x^{k})} حيث يمكن تقييم المجاميع الداخلية باستخدام نسخ متوازية منفصلة من طريقة هورنر. يتطلب هذا عددًا أكبر قليلًا من العمليات مقارنةً بطريقة هورنر الأساسية، ولكنه يسمح بتنفيذ معظمها بتقنية SIMD متعددة الاتجاهات (k -way SIMD). تُقيّم المترجمات الحديثة عادةً كثيرات الحدود بهذه الطريقة عندما يكون ذلك مفيدًا، على الرغم من أن هذا يتطلب تفعيل عمليات إعادة التجميع (غير الآمنة) لحسابات الفاصلة العائمة . من الاستخدامات الأخرى لتقسيم كثير الحدود بهذه الطريقة حساب خطوات المجاميع الداخلية بالتناوب للاستفادة من التوازي على مستوى التعليمات .

تطبيق على الضرب والقسمة ذات الفاصلة العائمة

طريقة هورنر هي طريقة سريعة وفعالة من حيث استخدام الكود لضرب وقسمة الأعداد الثنائية على متحكم دقيق بدون مُضاعِف مادي . يُمثَّل أحد الأعداد الثنائية المراد ضربها على شكل متعدد حدود بسيط، حيث (باستخدام الترميز أعلاه)أأنا=1{\displaystyle a_{i}=1}، وx=2{\displaystyle x=2}ثم، يتم استخراج العامل المشترك x (أو x مرفوعًا إلى قوة معينة) بشكل متكرر. في هذا النظام العددي الثنائي (الأساس 2)،x=2{\displaystyle x=2}لذلك يتم استخراج قوى العدد 2 بشكل متكرر.

مثال

على سبيل المثال، لإيجاد حاصل ضرب عددين (0.15625) و m : (0.15625)م=(0.00101ب)م=(2-3+2-5)م=(2-3)م+(2-5)م=2-3(م+(2-2)م)=2-3(م+2-2(م)).{\displaystyle {\begin{aligned}(0.15625)m&=(0.00101_{b})m=\left(2^{-3}+2^{-5}\right)m=\left(2^{-3})m+(2^{-5}\right)m\\&=2^{-3}\left(m+\left(2^{-2}\right)m\right)=2^{-3}\left(m+2^{-2}(m)\right).\end{aligned}}}

طريقة

لإيجاد حاصل ضرب عددين ثنائيين d و m :

  1. يتم تهيئة سجل يحتوي على النتيجة الوسيطة إلى d .
  2. ابدأ بأقل بت غير صفري أهمية (الأقصى يمينًا) في m .
    1. احسب (إلى اليسار) عدد خانات البتات حتى البت غير الصفري التالي الأكثر أهمية. إذا لم تكن هناك بتات أكثر أهمية، فخذ قيمة خانة البت الحالية.
    2. باستخدام تلك القيمة، قم بإجراء عملية إزاحة إلى اليسار بمقدار ذلك العدد من البتات على السجل الذي يحتوي على النتيجة الوسيطة
  3. إذا تم حساب جميع البتات غير الصفرية، فإن سجل النتيجة الوسيطة يحتوي الآن على النتيجة النهائية. وإلا، فأضف d إلى النتيجة الوسيطة، وتابع في الخطوة 2 مع البت الأكثر أهمية التالي في m .

الاشتقاق

بشكل عام، بالنسبة لعدد ثنائي ذي قيم بتية (د3د2د1د0{\displaystyle d_{3}d_{2}d_{1}d_{0}}) المنتج هو (د323+د222+د121+د020)م=د323م+د222م+د121م+د020م.{\displaystyle (d_{3}2^{3}+d_{2}2^{2}+d_{1}2^{1}+d_{0}2^{0})m=d_{3}2^{3}m+d_{2}2^{2}m+d_{1}2^{1}m+d_{0}2^{0}m.} في هذه المرحلة من الخوارزمية، من الضروري حذف الحدود ذات المعاملات الصفرية، بحيث يتم احتساب المعاملات الثنائية التي تساوي واحدًا فقط، وبالتالي فإن مشكلة الضرب أو القسمة على صفر ليست مشكلة، على الرغم من هذا التضمين في المعادلة المحللة: =د0(م+2د1د0(م+2د2د1(م+2د3د2(م)))).{\displaystyle =d_{0}\left(m+2{\frac {d_{1}}{d_{0}}}\left(m+2{\frac {d_{2}}{d_{1}}}\left(m+2{\frac {d_{3}}{d_{2}}}(m)\right)\right)\right).}

المقامات كلها تساوي واحدًا (أو أن الحد غير موجود)، لذا فإن هذا يختزل إلى =د0(م+2د1(م+2د2(م+2د3(م))))،{\displaystyle =d_{0}(m+2{d_{1}}(m+2{d_{2}}(m+2{d_{3}}(m)))),} أو ما يعادل ذلك (بما يتوافق مع "الطريقة" الموضحة أعلاه) =د3(م+2-1د2(م+2-1د1(م+د0(م)))).{\displaystyle =d_{3}(m+2^{-1}{d_{2}}(m+2^{-1}{d_{1}}(m+{d_{0}}(m)))).}

في النظام الثنائي (الأساس 2)، تُعتبر عملية الضرب في قوة من قوى العدد 2 مجرد عملية إزاحة في السجل . لذا، يُحسب الضرب في 2 في النظام الثنائي عن طريق الإزاحة الحسابية . العامل (2 - 1 ) هو إزاحة حسابية إلى اليمين ، و(0) لا يُجري أي عملية (لأن 2 1 هو العنصر المحايد للضرب )، و(2 ≠ 1 ) يُجري إزاحة حسابية إلى اليسار. يمكن الآن حساب ناتج الضرب بسرعة باستخدام عمليات الإزاحة الحسابية والجمع والطرح فقط .

تتميز هذه الطريقة بسرعة فائقة على المعالجات التي تدعم عملية الإزاحة والجمع والتجميع بتعليمات واحدة. وبالمقارنة مع مكتبة الأعداد العشرية في لغة C، فإن طريقة هورنر تُضحي ببعض الدقة، إلا أنها أسرع اسميًا بمقدار 13 مرة (16 مرة عند استخدام صيغة " الرقم المُوَقَّع المتعارف عليه " (CSD))، وتستخدم 20% فقط من مساحة الكود. [ 7 ]

تطبيقات أخرى

يمكن استخدام طريقة هورنر للتحويل بين أنظمة العد الموضعية المختلفة - حيث يمثل x أساس نظام العد، وتمثل معاملات aᵢ أرقام تمثيل الأساس x لعدد معين - ويمكن استخدامها أيضًا إذا كانت x مصفوفة ، وفي هذه الحالة يكون التحسن في الكفاءة الحسابية أكبر. ومع ذلك، توجد طرق أسرع معروفة لمثل هذه الحالات . [ 8 ]

إيجاد جذر كثير الحدود

باستخدام خوارزمية القسمة المطولة مع طريقة نيوتن ، يمكن تقريب الجذور الحقيقية لكثير الحدود. تعمل الخوارزمية كما يلي: بمعلومية كثير حدودصن(x){\displaystyle p_{n}(x)}درجة علميةن{\displaystyle n}مع أصفارzن<zن-1<<z1،{\displaystyle z_{n}<z_{n-1}<\cdots <z_{1},}وضع بعض التخمينات الأوليةx0{\displaystyle x_{0}}بحيثz1<x0{\displaystyle z_{1}<x_{0}}والآن، كرر الخطوتين التاليتين:

  1. باستخدام طريقة نيوتن ، أوجد أكبر صفرz1{\displaystyle z_{1}}لصن(x){\displaystyle p_{n}(x)}باستخدام التخمينx0{\displaystyle x_{0}}.
  2. باستخدام طريقة هورنر، قسّم(x-z1){\displaystyle (x-z_{1})}للحصول علىصن-1{\displaystyle p_{n-1}}عد إلى الخطوة 1 ولكن استخدم متعددة الحدودصن-1{\displaystyle p_{n-1}}والتخمين الأوليz1{\displaystyle z_{1}}.

تُكرر هاتان الخطوتان حتى يتم العثور على جميع الأصفار الحقيقية لكثير الحدود. إذا لم تكن الأصفار التقريبية دقيقة بما فيه الكفاية، فيمكن استخدام القيم المُحصل عليها كقيم ابتدائية لطريقة نيوتن، ولكن باستخدام كثير الحدود الكامل بدلاً من كثيرات الحدود المُختزلة. [ 9 ]

مثال

إيجاد جذر كثير الحدود باستخدام طريقة هورنر

لنفترض متعددة الحدود ص6(x)=(x+8)(x+5)(x+3)(x-2)(x-3)(x-7){\displaystyle p_{6}(x)=(x+8)(x+5)(x+3)(x-2)(x-3)(x-7)} والتي يمكن توسيعها إلى ص6(x)=x6+4x5-72x4-214x3+1127x2+1602x-5040.{\displaystyle p_{6}(x)=x^{6}+4x^{5}-72x^{4}-214x^{3}+1127x^{2}+1602x-5040.}

مما سبق، نعلم أن أكبر جذر لهذه المعادلة هو 7، لذا يمكننا أن نخمن مبدئيًا أنه 8. باستخدام طريقة نيوتن، نجد أول صفر للعدد 7 كما هو موضح باللون الأسود في الشكل على اليمين. بعد ذلكص(x){\displaystyle p(x)}يقسم على(x-7){\displaystyle (x-7)}للحصول على ص5(x)=x5+11x4+5x3-179x2-126x+720{\displaystyle p_{5}(x)=x^{5}+11x^{4}+5x^{3}-179x^{2}-126x+720} وهو موضح باللون الأحمر في الشكل على اليمين. تُستخدم طريقة نيوتن لإيجاد أكبر جذر لهذه كثيرة الحدود، مع افتراض أولي بقيمة 7. تم إيجاد أكبر جذر لهذه كثيرة الحدود، والذي يُقابل ثاني أكبر جذر لكثيرة الحدود الأصلية، عند 3، وهو مُحاط بدائرة حمراء. تُقسم الآن كثيرة الحدود من الدرجة 5 على(x-3){\displaystyle (x-3)}للحصول على ص4(x)=x4+14x3+47x2-38x-240{\displaystyle p_{4}(x)=x^{4}+14x^{3}+47x^{2}-38x-240} وهو موضح باللون الأصفر. تم إيجاد الصفر لهذه المعادلة عند 2 باستخدام طريقة نيوتن، وهو محاط بدائرة صفراء. تُستخدم الآن طريقة هورنر للحصول على ص3(x)=x3+16x2+79x+120{\displaystyle p_{3}(x)=x^{3}+16x^{2}+79x+120} والذي يظهر باللون الأخضر، وقد وُجد أن له صفرًا عند -3 . يتم اختزال هذه المعادلة متعددة الحدود إلى  ص2(x)=x2+13x+40{\displaystyle p_{2}(x)=x^{2}+13x+40} وهو موضح باللون الأزرق ويعطي جذرًا يساوي -5 . يمكن إيجاد الجذر النهائي لكثير الحدود الأصلي إما باستخدام هذا الجذر النهائي كقيمة ابتدائية في طريقة نيوتن، أو عن طريق التبسيط. ص2(x){\displaystyle p_{2}(x)}وبحل المعادلة الخطية . وكما هو واضح، تم إيجاد الجذور المتوقعة وهي 3، 2، 3، و7.

الفرق المقسم لكثير الحدود

يمكن تعديل طريقة هورنر لحساب الفرق المقسم(ص(y)-ص(x))/(y-x).{\displaystyle (p(y)-p(x))/(y-x).}بالنظر إلى متعددة الحدود (كما في السابق) ص(x)=أنا=0نأأناxأنا=أ0+أ1x+أ2x2+أ3x3++أنxن،{\displaystyle p(x)=\sum _{i=0}^{n}a_{i}x^{i}=a_{0}+a_{1}x+a_{2}x^{2}+a_{3}x^{3}+\cdots +a_{n}x^{n},} اتبع الخطوات التالية [ 10 ]بن=أن،دن=بن،بن-1=أن-1+بنx،دن-1=بن-1+دنy،    ب1=أ1+ب2x،د1=ب1+د2y،ب0=أ0+ب1x.{\displaystyle {\begin{aligned}b_{n}&=a_{n},&\quad d_{n}&=b_{n},\\b_{n-1}&=a_{n-1}+b_{n}x,&\quad d_{n-1}&=b_{n-1}+d_{n}y,\\&{}\ \ \vdots &\quad &{}\ \ \vdots \\b_{1}&=a_{1}+b_{2}x,&\quad d_{1}&=b_{1}+d_{2}y,\\b_{0}&=a_{0}+b_{1}x.\end{aligned}}}

عند الانتهاء، لدينا ص(x)=ب0،ص(y)-ص(x)y-x=د1،ص(y)=ب0+(y-x)د1.{\displaystyle {\begin{aligned}p(x)&=b_{0},\\{\frac {p(y)-p(x)}{y-x}}&=d_{1},\\p(y)&=b_{0}+(y-x)d_{1}.\end{aligned}}} تخضع عملية حساب الفرق المقسم لخطأ تقريب أقل من عملية حساب الفرق المقسم.ص(x){\displaystyle p(x)}وص(y){\displaystyle p(y)}بشكل منفصل، وخاصة عندماxy{\displaystyle x\approx y}.

مشتقة متعددة الحدود

الاستبدالy=x{\displaystyle y=x}تعطي هذه الطريقةد1=ص(x)=أنا=1نأناأأناxأنا-1{\textstyle d_{1}=p'(x)=\sum _{i=1}^{n}ia_{i}x^{i-1}}، مشتق منص(x){\displaystyle p(x)}إن تقييم كثير الحدود ومشتقته عند نقطة ما مفيد لإيجاد الجذر عبر طريقة نيوتن .

تاريخ

خوارزمية تشين جيوشاو لحل معادلة كثير الحدود من الدرجة الثانية-x4+763200x2-40642560000=0{\displaystyle -x^{4}+763200x^{2}-40642560000=0}النتيجة: س = 840 [ 11 ]

قُدِّمت ورقة هورنر، بعنوان "طريقة جديدة لحل المعادلات العددية من جميع الرتب، بالتقريب المستمر"، [ 12 ] أمام الجمعية الملكية في لندن، في اجتماعها المنعقد في 1 يوليو 1819، ونُشرت تتمة لها في عام 1823. [ 12 ] لاقت ورقة هورنر، المنشورة في الجزء الثاني من " المعاملات الفلسفية للجمعية الملكية في لندن" لعام 1819، ترحيبًا حارًا ومُسهبًا من أحد المُراجعين في عدد أبريل 1820 من "المجلة الشهرية: أو المجلة الأدبية" ؛ في المقابل، رُفضت ورقة تقنية لتشارلز باباج بإيجاز في هذه المراجعة. وخلصت سلسلة المراجعات في "المجلة الشهرية" لشهر سبتمبر 1821 إلى أن هولدريد كان أول من اكتشف حلاً عمليًا مباشرًا وعامًا للمعادلات العددية. أظهر فولر [ 13 ] أن الطريقة الواردة في ورقة هورنر لعام 1819 تختلف عما أصبح فيما بعد يُعرف باسم "طريقة هورنر" وبالتالي فإن الأولوية لهذه الطريقة يجب أن تذهب إلى هولدرد (1820).

على عكس معاصريه الإنجليز، استقى هورنر من الأدب الأوروبي، ولا سيما أعمال أربوغاست . ومن المعروف أيضاً أن هورنر قد قرأ بتأنٍّ كتاب جون بونيكاسل في الجبر، مع أنه أغفل أعمال باولو روفيني .

على الرغم من أن الفضل يُنسب إلى هورنر في جعل هذه الطريقة سهلة التطبيق وعملية، إلا أنها كانت معروفة قبل هورنر بفترة طويلة. وبالترتيب الزمني العكسي، كانت طريقة هورنر معروفة بالفعل لما يلي:

يُقدّم تشين جيوشاو ، في كتابه "شوشو جيو تشانغ" ( رسالة في تسعة أقسام ؛ 1247)، مجموعة من طرق هورنر لحلّ المعادلات متعددة الحدود، مستندًا إلى أعمال سابقة لعالم الرياضيات جيا شيان من أسرة سونغ في القرن الحادي عشر ؛ فعلى سبيل المثال، تُناسب إحدى هذه الطرق تحديدًا المعادلات ثنائية الخماسية، ويُقدّم تشين مثالًا عليها، تماشيًا مع العرف الصيني آنذاك المتمثل في دراسات الحالة. كتب يوشيو ميكامي في كتابه "تطور الرياضيات في الصين واليابان " (لايبزيغ 1913):

"...  من يستطيع إنكار حقيقة استخدام عملية هورنر الشهيرة في الصين قبل ستة قرون طويلة على الأقل من استخدامها في أوروبا  ... بالطبع لا ننوي بأي حال من الأحوال أن ننسب اختراع هورنر إلى أصل صيني، لكن مرور الوقت يجعل من الممكن ألا يكون الأوروبيون قد عرفوا الطريقة الصينية بطريقة مباشرة أو غير مباشرة." [ 20 ]

وخلص أولريش ليبرخت إلى القول: من الواضح أن هذا الإجراء اختراع صيني  ... لم تكن هذه الطريقة معروفة في الهند . وقال إن فيبوناتشي ربما تعلمها من العرب، الذين ربما اقتبسوها بدورهم من الصينيين. [ 21 ] وقد ناقش ليو هوي استخراج الجذور التربيعية والتكعيبية بطريقة مماثلة في سياق المسألتين 16 و22 من كتاب "جيو تشانغ سوان شو" ، بينما افترض وانغ شياوتونغ في القرن السابع أن بإمكان قرائه حل المعادلات التكعيبية باستخدام طريقة تقريبية موصوفة في كتابه "جيغو سوانجينغ" .

انظر أيضاً

ملحوظات

  1. قبل 600 عام، على يد عالم الرياضيات الصيني تشين جيوشاو ، وقبل 700 عام، على يد عالم الرياضيات الفارسي شرف الدين الطوسي
  2. بان 1966
  3. بانكيويتش 1968 .
  4. أوستروفسكي 1954 .
  5. بان 1966 .
  6. كنوت 1997 .
  7. كريباساجار 2008 ، ص 62 . 
  8. Higham 2002 ، القسم 5.4 .
  9. كريس 1991 ، ص 112 . 
  10. فاتيمان وكاهان 2000
  11. ^ ليبرخت 2005 ، ص 181-191 . 
  12. 1 2 هورنر 1819 .
  13. فولر 1999 ، ص 29-51 . 
  14. كاجوري 1911 .
  15. 1 2 أوكونور، جون جيه؛ روبرتسون، إدموند إف ، " طريقة هورنر" ، أرشيف ماك تيوتور لتاريخ الرياضيات ، جامعة سانت أندروز
  16. تحليل لكل سلسلة كمية، Fluctiones ac Differences : Cum Enumeratione Linearum Tertii Ordinis، Londini. Ex Officina بيرسونيانا. أنو MDCCXI، ص. 10، الفقرة الرابعة.
  17. أوراق نيوتن المجمعة، طبعة 1779، في حاشية، المجلد الأول، ص 270-271
  18. ^ بيرجرين 1990 ، ص 304-309 . 
  19. تيمبل 1986 ، ص 142 . 
  20. ميكامي 1913 ، ص 77
  21. Libbrecht 2005 ، ص 208 . 

مراجع