خوارزمية طريقة التنصيف مع أمثلة

ملخص ذكي

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

  • ➗ الفكرة الأساسية: قم بتقسيم القوس [a, b] بشكل متكرر إلى نصفين حيث يكون لـ f(a) و f(b) إشارات متعاكسة حتى تتقلص الفترة إلى ما دون حد التسامح.
  • 📐 اساس نظرى: مبني مباشرة على نظرية القيمة المتوسطة، التي تضمن وجود جذر عندما تغير الدالة إشارتها على فترة متصلة.
  • 🔁 سلوك التقارب: التقارب الخطي مع انخفاض الخطأ إلى النصف لكل تكرار، مما يعطي تحسينات متوقعة ولكنها بطيئة نسبياً في الدقة.
  • ✅ نقاط القوة: يتقارب دائمًا للأقواس الصالحة، ولا يتطلب سوى قيم الدوال، ويسهل تنفيذه في أي لغة برمجة.
  • 🧪 الاستخدام العملي: مفيد لحل المعادلات غير الخطية في الفيزياء والتمويل والبحث عن المعلمات الفائقة للتعلم الآلي والحلول العددية المدفوعة بالذكاء الاصطناعي.

ما هي طريقة التنصيف؟

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

نظراً لأن آلية عملها تشبه البحث الثنائي، تُعرف طريقة التنصيف أيضاً باسم طريقة البحث الثنائي، أو طريقة التنصيف، أو طريقة التقسيم الثنائي. وهي تستند إلى أساس نظري متين: نظرية القيمة المتوسطة، التي تضمن أن الدالة المتصلة التي تغير إشارتها على فترة ما يجب أن تعبر الصفر في مكان ما داخل تلك الفترة.

بعد وضع التعريف الأساسي، دعونا نستكشف لماذا يعد إيجاد جذور المعادلات أمراً مهماً وكيف تتناسب طريقة التنصيف مع تلك الصورة الأوسع.

إيجاد جذور المعادلات

في هذا النقاش، سنركز فقط على المعادلات ذات المتغير المستقل الواحد. قد تكون هذه المعادلات خطية أو غير خطية. تصف المعادلات الخطية تمثيل الخط المستقيم بيانيًا، بينما تصف المعادلات غير الخطية المنحنيات والأشكال الأكثر تعقيدًا.

جذر المعادلة هو قيمة المتغير المستقل التي تحقق المعادلة. على سبيل المثال، جذر المعادلة f(x) = 4 – x2 القيمة 0 تساوي 2، لأن f(2) = 4 – 22 = 0.

لنفترض أن f(x) دالة حقيقية متصلة. وفقًا لنظرية القيمة المتوسطة، فإن المعادلة f(x) = 0 لها جذر واحد على الأقل بين a و b عندما يكون f(a)f(b) < 0. بعبارة أخرى، للدالة f(x) جذر، "c"، يقع في مكان ما بين a و b.

إيجاد جذور المعادلات

تستغل طريقة التنصيف خاصية تغيير الإشارة هذه تحديدًا. يوضح القسم التالي كيف تبدو هذه الفكرة بيانيًا.

التمثيل البياني لطريقة التنصيف

يوضح الرسم البياني التالي آلية عمل طريقة التنصيف. من الرسم البياني، نلاحظ أن الجذر الحقيقي للمعادلة مُحدد باللون الأحمر.

يمكن تلخيص الإجراء على النحو التالي:

  • نختار أولاً تخمينين أوليين، أ1 وب1، والتي من أجلها f(a)1)و(ب1) < 0. وفقًا لنظرية القيمة المتوسطة، يجب أن يقع الجذر في [a1، ب1].
  • ثم نحسب نقطة المنتصف لـ1 وب1، وهو ب2تم تقليص الفترة الأولية الآن إلى [أ1، ب2] لأن و(أ1)و(ب2) <0.
  • وبالمثل، يتم تقسيم الفاصل الزمني إلى النصف مرارًا وتكرارًا حتى يتم العثور على حل تقريبي ضمن التفاوت المطلوب.

التمثيل الرسومي لطريقة التنصيف

بعد أن أصبح الحدس الهندسي واضحاً، يمكننا الآن صياغة الإجراء كخوارزمية خطوة بخطوة.

خوارزمية طريقة التنصيف

فيما يلي خطوات تطبيق خوارزمية طريقة التنصيف لإيجاد جذر المعادلة f(x) = 0.

الخطوة 1) اختر التخمينات الأولية a و b ومعدل التسامح e.

الخطوة 2) إذا كانت f(a)f(b) ≥ 0، فإن الجذر لا يقع في هذه الفترة. في هذه الحالة، لا يوجد حل ضمن [a, b].

الخطوة 3) أوجد نقطة المنتصف، ج = (أ + ب)/2.

(أ) إذا كانت قيمة الدالة عند نقطة المنتصف f(c) = 0، فإن c هو الجذر. انتقل إلى الخطوة 5.
(ii) إذا كانت f(a)f(c) < 0، فإن الجذر يقع بين a و c. ثم اجعل a = a، b = c.
(iii) وإلا، فضع a = c، b = b.

الخطوة 4) إذا كان الخطأ المطلق أعلى من معدل التسامح، أي (ب - أ) > هـ، فارجع إلى الخطوة 3.

الخطوة 5) عرض c كالجذر التقريبي.

لنلقِ نظرة على مثال عملي لخوارزمية طريقة التنصيف. سنجد جذر الدالة المتصلة التالية باستخدام صيغة طريقة التنصيف.

و (س) = س3 - س2 + 2

مثال على طريقة التقسيم

الخطوة 1) لنفترض،

         أ = -10،
         ب = 10، و
         e = 1% أو 0.01.

الخطوة 2) الآن، سوف نتحقق مما إذا كان f(a)f(b) >= 0 أم لا.

         f(a) = f(-10) = (-10)3 – (-10)2 + 2 = -1098
         f(b) = f(10) = (10)3 - (10)2 + = 2 902
         و(أ)و(ب) = و(-10)و(10) = (-1098)(902) < 0

وبالتالي، فإن جذر الدالة المذكورة أعلاه يقع في الفترة [-10، 10].

الخطوة 3) بعد ذلك، يتم حساب نقطة المنتصف ج.

مثال على طريقة التقسيم

الآن يجب التحقق من الشروط التالية:

(i) هل f(c) = 0:
         f(c) = f(0) = (0)3 - (0)2 + 2 = 2، وهو لا يساوي 0.

(ii) هل f(a)f(c) < 0:
         f(c)f(a) = 2 * (-1098) < 0

تم استيفاء الشرط. في التكرار التالي، ستكون القيم كالتالي:

         أ = أ = -10
         ب = ج = 0

الخطوة 4) بما أن (ب - أ) = (0 - (-10)) = 10 > 0.01، تُكرر العملية. يوضح الجدول أدناه التكرارات التالية.

تكرار a b c با و (ج)
1 -10 0 0 10 2
2 -5 0 -5 5 -148
3 -2.5 0 -2.5 2.5 -19.875
4 -1.25 0 -1.25 1.25 -1.52562
5 -1.25 -0.625 -0.625 0.625 1.36523
6 -1.25 -0.9375 -0.9375 0.3125 0.297119
7 -1.09375 -0.9375 -1.09375 0.15625 -0.50473
8 -1.01562 -0.9375 -1.01562 0.078125 -0.0791054
9 -1.01562 -0.976562 -0.976562 0.0390625 0.115003
10 -1.01562 -0.996094 -0.996094 0.0195312 0.0194703
11 -1.00586 -0.996094 -1.00586 0.00976562 -0.0294344

الخطوة 5) في التكرار الحادي عشر، يصبح الشرط الوارد في الخطوة الرابعة غير صحيح. وبالتالي، فإن الجذر التقريبي لهذه المعادلة هو -1.00586.

بعد الانتهاء من المثال العددي، يقدم القسم التالي المخطط المنطقي الذي يوضح تدفق التحكم الكامل.

طريقة التنصيف المخطط المنطقي

يلخص المخطط الانسيابي أدناه منطق اتخاذ القرار لطريقة التنصيف، بما في ذلك فحص الأقواس، وتحديث نقطة المنتصف، واختبار التسامح.

طريقة التنصيف المخطط المنطقي

مستعار-Code

يعكس الكود الزائف أدناه الخوارزمية ويعمل كنموذج أولي لتنفيذ طريقة التنصيف في أي لغة برمجة.

Start
Set a, b, e
if f(a)*f(b) >= 0
    Output("Root does not exist in this interval")
    Stop
while (b-a) > e do
    c ← (a + b)/2
    if f(c) = 0
        break
    end if
    if f(c)*f(a) < 0 then
        b ← c
    else
        a ← c
end while
Output(c)
Stop

مثال على طريقة التقسيم في C/C++

C/ التاليC++ يطبق البرنامج طريقة التنصيف لإيجاد جذر المعادلة f(x) = x3 - س2 + 2 ضمن الفترة [-10، 10].

الإدخال:

#include <bits/stdc++.h>
using namespace std;
#define Error 0.01
double value(double x)
{
    return x*x*x - x*x + 2;
}
void bisection_method(double a, double b)
{
    if (value(a) * value(b) >= 0)
    {
        cout << "The root does not lie in this interval\n";
        return;
    }
    double c = a;
    while ((b-a) >= Error)
    {
        c = (a+b)/2;
        if (value(c) == 0.0)
            break;
        else if (value(c)*value(a) < 0)
            b = c;
        else
            a = c;
    }
    cout << "The root is :" << c;
}
int main()
{
    double a = -10, b = 10;
    bisection_method(a, b);
    return 0;
}

الإخراج:

The root is :-1.00586

مثال على طريقة التنصيف في Python

استخدم Python ينتج الإصدار أدناه نفس الجذر التقريبي باستخدام نفس المنطق، مما يجعله مثالياً للتجربة السريعة والتعليم.

الإدخال:

def value(x):
    return x*x*x - x*x + 2

def bisection_method(a, b):
    if (value(a) * value(b) >= 0):
        return
    c = a
    while ((b-a) >= 0.01):
        c = (a+b)/2
        if (value(c) == 0.0):
            break
        if (value(c)*value(a) < 0):
            b = c
        else:
            a = c
    print("The root is : ", "%.4f" % c)

a = -10
b = 10
bisection_method(a, b)

الإخراج:

The root is :  -1.0059

مزايا وقيود طريقة التنصيف

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

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

تطبيقات طريقة التنصيف

تُستخدم طريقة التنصيف في العديد من سيناريوهات الحوسبة العملية والحديثة حيث تكون هناك حاجة إلى خطوة قوية لإيجاد الجذر.

  • محاكاة هندسية: حل المعادلات غير الخطية التي تظهر في انتقال الحرارة، وديناميكا الموائع، والتحليل الهيكلي.
  • النماذج المالية: حساب العوائد، ومعدلات العائد الداخلي، ونقاط التعادل حيث لا توجد حلول مغلقة.
  • التعلم الآلي والذكاء الاصطناعي: تحديد العتبات، ومعايرة النماذج، وضبط المعلمات الفائقة داخل الحلول العددية المدعومة بالذكاء الاصطناعي.
  • الرسومات الحاسوبية: تحديد نقاط تقاطع الأشعة مع الأسطح وقيم المعلمات على طول المنحنيات.
  • الأنظمة المضمنة: جذور تقريبية في وحدات التحكم ذات الموارد المحدودة حيث تكون البساطة والقدرة على التنبؤ أكثر قيمة من السرعة.

الأسئلة الشائعة

طريقة التنصيف هي تقنية عددية تجد جذر دالة متصلة عن طريق تقسيم فترة زمنية تغير فيها الدالة إشارتها إلى النصف بشكل متكرر واختيار النصف الذي لا يزال يحتوي على الجذر.

إنها تتقارب دائمًا عندما تكون الدالة متصلة على [a, b] ويكون f(a)f(b) أقل من الصفر، لأن نظرية القيمة المتوسطة تضمن وجود جذر في الفترة، والتقسيم إلى نصفين يستمر في تقليص القوس حوله.

تتقارب طريقة التنصيف خطيًا. ويقل الخطأ إلى النصف تقريبًا في كل تكرار، لذا فإن الوصول إلى قيمة التسامح e من فترة طولها L يتطلب حوالي log2(L/e) تكرارًا، وهو أبطأ من طرق نيوتن أو القاطع.

تفشل الطريقة عندما يكون لـ f(a) و f(b) نفس الإشارة، أو عندما تكون الدالة غير متصلة في الفترة، أو عندما يكون للجذر تعدد زوجي، لأن الدالة لا تغير إشارتها عبر مثل هذا الجذر.

غالباً ما تجمع حلول الذكاء الاصطناعي بين طريقة التنصيف والنماذج المُدرَّبة. تقترح الشبكة العصبية نطاقاً ضيقاً حول جذر محتمل، ثم تضمن طريقة التنصيف حلاً موثوقاً ومعتمداً داخل هذا النطاق.

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

تلخيص هذه التدوينة بـ: