في الرياضيات، طريقة التنصيف هي إحدى خوارزمية ايجاد الجذر والتي بها يتم تنصيف فترة ما بصورة تكرارية واختيار فترة فرعية يقع عليها الجذر من أجل تحسين المعالجة.[1][2] مع أنها بسيطة جدا ومرنة إلا أن طريقة التنصيف بطيئة نسبيا.
الطريقة
إذا كانت الدالة f(x)= 0 مستمرة ومعرفة في الفترة [a,b] حيث f(a)* f(b) <0 أي أنهما مختلفتان في الإشارة فإن معني ذلك ان أحد جذور الدالة f(x) علي الأقل يقع في نطاق الفترة [a,b] (انظر الشكل 1-1). في هذه الحالة نتبع الخوارزمية التالية للوصول إلي حل هذه الدالة:
نوجد متوسط القيمتان a,b المعرف عندهما الدالة وليكن x1 حيث أن x1=(a+b)/2.
إذا كانت قيمة f(x1)= 0 فإن x1 جذر للدالة f(x) وحلا لها. إذا لم يتحقق الشرط السابق نقوم باتباع التالي:
إذا كانت f(x1) * f(b)<0 فإننا نضع a = x1 لنقترب من الحل.
إذا كانت f(x1) * f(a)<0 فإننا نضع b = x1 لنقترب من الحل.
نقوم بتكرار الخطوتين 1 و 2 حتي نصل لقيمة تكون فيها f(xi)= 0 أو تكون فيها f(xi)=> P حيث أن P تمثل درجة الدقة المطلوبة في الحل.
كود برمجي
فيما يلي كود بلغة فجول بيسك يوضح طريقة التنصيف. المتغيرات left وright تقابل a and b أعلاه. القيم الأولية left وright ينبغي اختيارها بالشكل الصحيح بحيث f(left) وf(right) بحيث تكون ذات إشارات مخالفة (لحصر الجذر). المتغير epsilon يبين مدى الدقة المطلوبة.
'Bisection Method 'Start loop Do While (abs(right - left)> 2*epsilon) 'Calculate midpoint of domain midpoint = (right + left) / 2 'Find f(midpoint) If ((f(left) * f(midpoint))> 0) Then 'Throw away left half left = midpoint Else 'Throw away right half right = midpoint End If Loop Return (right + left) / 2
إنظر أيضا
المصادر
- "معلومات عن طريقة التنصيف على موقع mathworld.wolfram.com". mathworld.wolfram.com. مؤرشف من الأصل في 7 مايو 2019.
- "معلومات عن طريقة التنصيف على موقع jstor.org". jstor.org. مؤرشف من الأصل في 28 مارس 2020.
- Burden, Richard L.; Faires, J. Douglas (2000), (الطبعة 7th), Brooks/Cole, .
- Corliss, George (1977), "Which root does the bisection algorithm find?", SIAM Review, 19, صفحات 325–327, doi:10.1137/1019044, ISSN 1095-7200 .
- Kaw, Autar; Kalu, Egwu (2008), Numerical Methods with Applications (الطبعة 1st) . http://numericalmethods.eng.usf.edu/topics/textbook_index.html