Halbierungsmethode – Was ist, Algorithmus und Beispiel

Was ist die Halbierungsmethode?

Die Bisektionsmethode ist eine der grundlegenden numerischen Lösungen zum Finden der Wurzel einer Polynomgleichung. Sie umklammert das Intervall, in dem die Wurzel der Gleichung liegt, und unterteilt es bei jeder Iteration in Hälften, bis die Wurzel gefunden ist. Daher wird die Bisektionsmethode auch als Klammermethode bezeichnet.

Da der Arbeitsmechanismus jedoch dem binären Suchalgorithmus ähnelt, ist die Bisektionsmethode auch als binäre Suchmethode, Halbierungsmethode oder Dichotomiemethode bekannt. Sie basiert hauptsächlich auf dem Zwischenwertsatz.

Finden von Gleichungswurzeln

In diesem Beispiel betrachten wir nur Gleichungen mit einer unabhängigen Variablen. Es kann entweder linear oder nichtlinear sein. Lineare Gleichungen werden verwendet, um den Graphen einer geraden Linie darzustellen, während nichtlineare Gleichungen zur Darstellung von Kurven verwendet werden.

Die Wurzel einer Gleichung bezeichnet den Wert der unabhängigen Variablen, die die Gleichung erfüllt. Zum Beispiel: die Wurzel einer Gleichung f(x)= 4-x2 = 0 ist 2, weil f(2) = 4-22 = 0.

Betrachten wir f(x) als eine reelle stetige Funktion. Nach dem Zwischenwertsatz hat die Gleichung f(x)=0 mindestens eine Wurzel zwischen a und b, wenn f(a)f(b) < 0. Die Funktion f(x) hat eine Wurzel „c“. zwischen A und B.

Finden von Gleichungswurzeln

Grafische Darstellung der Halbierungsmethode

Die folgende Grafik stellt den Arbeitsmechanismus der Bisektionsmethode dar. Aus der Grafik können wir erkennen, dass die Wurzel der Gleichung rot markiert ist.

Zunächst:

  • Wir haben zunächst zwei erste Vermutungen angenommen, a1 und B1, für welche f(a1)f(b1) < 0. Nach dem Zwischenwertsatz sollte die Wurzel in [a liegen1, B1].
  • Wir können den Mittelpunkt von a finden1 und B1, Das ist b2. Somit wird das Anfangsintervall nun auf [a1, B2] weil f(a1)f(b2) < 0.
  • Auf die gleiche Weise wird das Intervall reduziert, bis die Näherungslösung gefunden ist.

Grafische Darstellung der Halbierungsmethode

Algorithmus der Bisektionsmethode

Die Schritte zum Anwenden des Bisektionsmethodenalgorithmus zum Finden der Wurzel der Gleichung f(x)=0 sind wie folgt

Schritt 1) Wählen Sie die anfänglichen Schätzungen a, b und die Toleranzrate e

Schritt 2) Wenn f(a)f(b) >=0, dann liegt die Wurzel nicht in diesem Intervall. Daher wird es keine Lösung geben.

Schritt 3) Finden Sie den Mittelpunkt, c = (a+b)/2

(i) Wenn der Funktionswert des Mittelpunkts f(c) = 0 ist, dann ist c die Wurzel. Gehen Sie zu Schritt 5.
(ii) Wenn f(a)f(c) < 0, liegt die Wurzel zwischen a und c. Dann setze a = a, b = c.
(iii) Sonst setze a = c, b = b.

Schritt 4) Wenn der absolute Fehler höher ist als die Toleranzrate oder (ba) > e, fahren Sie mit Schritt 3 fort.

Schritt 5) Zeigen Sie c als ungefähre Wurzel an.

Sehen wir uns ein Beispiel für den Algorithmus der Halbierungsmethode an.
Wir müssen die Wurzel der folgenden kontinuierlichen Funktion mithilfe der Formel der Bisektionsmethode finden.

f(x) = x3 - x2 + 2

Beispiel einer Halbierungsmethode

Schritt 1) Angenommen,

         a = -10,
         b = 10, und
         e = 1 % oder 0.01

Schritt 2) Jetzt prüfen wir, ob f(a)f(b) >= 0 ist oder nicht.

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

Daher liegt die Wurzel der obigen Funktion in diesem Intervall [-10, 10].

Schritt 3) Dann wird zuerst der Mittelpunkt c berechnet.

Beispiel einer Halbierungsmethode

Nun müssen folgende Voraussetzungen überprüft werden:

(i) ob f(c) = 0:
         f(c) = f(0) = (0)3 – (0)2 + 2 = 2 ≠ 0

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

Die Bedingung ist erfüllt. Für die nächste Iteration lauten die Werte:

         a = a = -10
         b = c = 0

Schritt 4) Da (ba) = (0-(-10)) = 10>0.05, wird der Vorgang wiederholt. Die nächsten Iterationen sind in der Tabelle aufgeführt.

Iteration a b c ba f(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

Schritt 5) In der 11. Iteration ist die Bedingung von Schritt 4 falsch. Somit ist die Wurzel dieser Gleichung -1.00586.

Logisches Diagramm der Halbierungsmethode

Logisches Diagramm der Halbierungsmethode

Pseudocode

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

Beispiel für die Bisektionsmethode in C/C++

Eingang:

#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;
}

Ausgang:

The root is :-1.00586

Beispiel für die Bisektionsmethode in Python

Eingang:

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)

Ausgang:

The root is :  -1.0059

Vorteile und Einschränkungen der Halbierungsmethode

Hier sind die Vor- und Nachteile der Bisektionsmethode:

Vorteile Nachteile
Einfache und einfach zu implementierende Wurzelfindungsmethode. Die Konvergenz ist langsam, da sie lediglich auf der Halbierung des Intervalls basiert.
Da es die Wurzel einklammert, ist es immer konvergent. Wenn eine der anfänglichen Schätzungen nahe an der Wurzel liegt, sind weitere Iterationen erforderlich, um die Wurzel zu erreichen.
Die Fehlerrate kann durch Erhöhen oder Verringern der Anzahl der Iterationen gesteuert werden.