מספר צעדים של יישום שיטת החצייה במרווח התחלתי.{\displaystyle [a\_{1},b\_{1}]}. הנקודה האדומה היא השורש של הפונקציה.
שיטת החצייה היא שיטה איטרטיבית למציאת השורש של הפונקציה, הנעשית באמצעות סדרת קירובים תוך שימוש בחישוב הערך האמצעי
באנליזה נומרית, **שיטת החצייה** (באנגלית: **bisection method**) היא אלגוריתם למציאת שורש של פונקציה, אשר עושה שימוש איטרטיבי בחלוקת המרווח לשורש בשניים וכך לבחור מרווח קטן יותר שבו השורש נמצא. תהליך זה נמשך עד שהפער מספיק קטן.

תיאור
-----

נניח שאנו רוצים לפתור את המשוואה {\displaystyle f(x)=0}, כאשר {\displaystyle f} היא פונקציה רציפה. בהינתן שתי נקודות {\displaystyle a} ו-{\displaystyle b}, שלערכי הפונקציה בהן יש סימנים הפוכים, ממשפט ערך הביניים נובע שלפונקציה יש לפחות שורש אחד במרווח זה {\displaystyle [a,b]}. שיטה זו מחלקת את המרווח בשתיים בכל איטרציה:

{\displaystyle c={\frac {a+b}{2}}}
אחר כך, ישנן שתי אפשרויות: או של-{\displaystyle f(a)} ול-{\displaystyle f(c)} יש ערכים הפוכים בסימנם, או של-{\displaystyle f(b)} ול-{\displaystyle f(c)} יש ערכים הפוכים בסימנם. האלגוריתם ימשיך לאיטרציה הבאה למרווח בין שני הערכים, שבהם הסימנים של הפונקציות שלהם הפוכים.

אם {\displaystyle f} היא פונקציה רציפה במרווח {\displaystyle [a,b]} ו-{\displaystyle f(a)\cdot f(b)<0}, אזי שיטת החצייה מתכנסת. למעשה, ניתן לחשב שגיאה מוחלטת לשיטה החצייה ברוב המקרים: 

{\displaystyle {\frac {b-a}{2^{n}}}}
לאחר {\displaystyle n} צעדים. במילים אחרות, השגיאה מתחלקת בשתיים בכל איטרציה, לכן השיטה מתכנסת באופן ליניארי (סדר ההתכנסות הוא 1). אבל השיטה מתכנסת באופן ודאי אם ל-{\displaystyle f(a)} ול-{\displaystyle f(b)} יש ערכים הופכיים. מכאן, 
שיטת החצייה יעילה פחות משיטת ניוטון-רפסון (מתכנסת לאט יותר), אולם בניגוד לשיטת ניוטון-רפסון, ההתכנסות בה מובטחת.

פסאדו-קוד
---------

להלן הצגה של שיטה החצייה בקוד פייתון. הערכים ההתחלתיים של {\displaystyle a} ו-{\displaystyle b} חייבים להיות כך ש-{\displaystyle f(a)\cdot f(b)<0} (כמו שנדרש למעלה). המשתנה epsilon מגדיר כמה מדויקת תהיה התוצאה.

```
# שיטת החצייה
while (b - a) > epsilon:
    
    #חישוב הערך האמצעי
    c = (a + b) / 2.
    
    if f(a)\*f(c) > 0:
        #התעלם מהחצי השמאלי
        a = c
    else:
        #התעלם מהחצי הימני
        b = c

```

קוד ב-Java
----------

על מנת שהתוכנית תקבל כקלט כלל העתקה של פולינום {\displaystyle \deg p(x)=n} ניתן להגדיר לשם הנוחות מערך חד־ממדי {\displaystyle factor[]} בגודל {\displaystyle n-1} ומשתנה {\displaystyle var} כך שיתקיים {\displaystyle \sum \_{i=0}^{n}a\_{i}x^{i}=\sum \_{i=0}^{n-1}f\_{i}x^{i+1}+var} וכך נגדיר את הפולינום {\displaystyle p(x)} ואת הפעולה {\displaystyle f}

```
public class Polynom {

 private double[] factor; 
 private double var;

 public Polynom(double[] factor, double var) { //Constructor

 this.factor = factor;
 this.var = var;
 }
 
 public double f(double x) { // f(x) = Polynom(x) 

 double f = var;

 for (int i = 0; i < factor.length; i++) {

 f = f + factor[i] \* Math.pow(x, i + 1);
 }

 return f ;
}

```

```
public class Bisection {

 public static void BisectionMethod(Polynom p ,double Xleft,double Xright,
 int m, double ep, double delta)
 {
 double fXleft= p.f(Xleft);
 double fXright=p.f(Xright);
 double interval=Xright-Xleft;
 double Xmid,fXmid;
 if (fXright\*fXleft>0)
 System.exit(0);
 for(int i=0;i<m;i++)
 {
 interval=interval/2;
 Xmid=Xleft+interval;
 fXmid=p.f(Xmid);
 System.out.println("x"+i+" = "+Xmid);
 if(Math.abs(interval)<ep && Math.abs(fXmid)<delta)
 System.exit(0);
 if(fXmid\*fXleft>0)
 {
 Xleft=Xmid;
 fXleft=fXmid;
 }
 else
 {
 Xright=Xmid;
 fXright=fXmid;
 }
 }
 }
}

```

פלט התוכנית
-----------

נריץ את התוכנית עבור הפולינום {\displaystyle p(x)=x^{2}-4}. יש לשים לב שככל שנריץ את התוכנית מספר רב יותר של איטרציות כך למעשה נגיע לקירוב טוב יותר.
בתוכנית הנ"ל ההרצה מתבצעת 40 פעמים. והקירוב המרבי שקיבלנו הוא:{\displaystyle x\_{40}=1.9999999999886313} .

```
x0 = 25.5
x1 = 13.25
x2 = 7.125
x3 = 4.0625
x4 = 2.53125
x5 = 1.765625
x6 = 2.1484375
x7 = 1.95703125
x8 = 2.052734375
x9 = 2.0048828125
x10 = 1.98095703125
x11 = 1.992919921875
x12 = 1.9989013671875
x13 = 2.00189208984375
x14 = 2.000396728515625
x15 = 1.9996490478515625
x16 = 2.0000228881835938
x17 = 1.9998359680175781
x18 = 1.999929428100586
x19 = 1.9999761581420898
x20 = 1.9999995231628418
x21 = 2.0000112056732178
x22 = 2.00000536441803
x23 = 2.000002443790436
x24 = 2.000000983476639
x25 = 2.0000002533197403
x26 = 1.999999888241291
x27 = 2.0000000707805157
x28 = 1.9999999795109034
x29 = 2.0000000251457095
x30 = 2.0000000023283064
x31 = 1.999999990919605
x32 = 1.9999999966239557
x33 = 1.999999999476131
x34 = 2.0000000009022187
x35 = 2.000000000189175
x36 = 1.999999999832653
x37 = 2.000000000010914
x38 = 1.9999999999217835
x39 = 1.9999999999663487
x40 = 1.9999999999886313

```

קישורים חיצוניים
----------------

* שיטת החצייה ב-MathCad.
* שיטת החצייה, באתר MathWorld (באנגלית)

| חשבון אינפיניטסימלי |
| --- |
| מושגי יסוד | חשבון אינפיניטסימלי • סדרה • סדרה מתכנסת • גבול • סדרת קושי • טור • אינפיניטסימל • שדה המספרים הממשיים • ערך מוחלט • אי-שוויון המשולש • אי-שוויון קושי-שוורץ |
| פונקציות | פונקציה • גרף פונקציה • פונקציה ליניארית • פונקציה מונוטונית • נקודת קיצון •נקודת פיתול •נקודת אוכף • פונקציה קעורה • פונקציה קמורה • פונקציה רציפה • פונקציה רציפה במידה שווה • נקודת אי רציפות • נגזרת • טור טיילור • סדרת פונקציות • התכנסות נקודתית • התכנסות במידה שווה |
| משפטים | משפט בולצאנו-ויירשטראס • משפטי ויירשטראס • משפט קנטור • משפט ערך הביניים • משפט פרמה • משפט רול • משפט הערך הממוצע של לגראנז' • משפט הערך הממוצע של קושי • משפט דארבו • כלל השרשרת • כלל הסנדוויץ' • כלל לופיטל • משפט שטולץ • אריתמטיקה של גבולות |
| האינטגרל | אינטגרל • אינטגרל לא אמיתי • אינטגרל רב-ממדי • המשפט היסודי של החשבון הדיפרנציאלי והאינטגרלי • אינטגרציה בחלקים • שיטות אינטגרציה |
| אנליזה מתקדמת | פונקציה מרוכבת • אנליזה וקטורית • שיטת ניוטון-רפסון • משוואה דיפרנציאלית • טופולוגיה • תורת המידה |
| אנליזה מתמטית • אנליזה וקטורית • טופולוגיה • אנליזה מרוכבת • אנליזה פונקציונלית • תורת המידה |