Bisectiemethode - Wat is, algoritme en voorbeeld

Wat is bisectiemethode?

Bisection Method is een van de basis numerieke oplossingen voor het vinden van de wortel van een polynoomvergelijking. Het haakt het interval waarin de wortel van de vergelijking ligt in en verdeelt ze in helften in elke iteratie totdat het de wortel vindt. Daarom wordt de bisection-methode ook wel de bracketing-methode genoemd.

Omdat het werkingsmechanisme echter vergelijkbaar is met het binaire zoekalgoritme, staat de bisectiemethode ook bekend als binaire zoekmethode, halveringsmethode of dichotomiemethode. Het is voornamelijk gebaseerd op de tussenwaardestelling.

Wortels van vergelijkingen vinden

In dit voorbeeld beschouwen we alleen vergelijkingen met één onafhankelijke variabele. Het kan lineair of niet-lineair zijn. Lineaire vergelijkingen worden gebruikt om de grafiek van een rechte lijn weer te geven, terwijl niet-lineaire vergelijkingen worden gebruikt om curven weer te geven.

De wortel van een vergelijking betekent de waarde van de onafhankelijke variabele die aan de vergelijking voldoet. Bijvoorbeeld: de wortel van een vergelijking f(x)= 4-x2 = 0 is 2 omdat f(2) = 4-22 = 0.

Laten we f(x) beschouwen als een echte continue functie. Volgens de tussenwaardestelling heeft de vergelijking f(x)=0 ten minste één wortel tussen a en b als f(a)f(b) < 0. De functie f(x) heeft een wortel, "c", tussen a en b.

Wortels van vergelijkingen vinden

Grafische weergave van de bisectiemethode

De volgende grafiek geeft het werkingsmechanisme van de bisectiemethode weer. Uit de grafiek kunnen we zien dat de wortel van de vergelijking rood gemarkeerd is.

Beginnen met:

  • We hebben eerst twee initiële gissingen gedaan, a1 en B1, waarvoor f(een1)f(geb1) < 0. Volgens de tussenwaardestelling zou de wortel in [a moeten liggen1, b1].
  • We kunnen het middelpunt van a vinden1 en B1, dat is b2. Het initiële interval wordt nu dus teruggebracht tot [a1, b2] omdat f(a1)f(geb2) < 0.
  • Op dezelfde manier wordt het interval verkleind totdat de geschatte oplossing is gevonden.

Grafische weergave van de bisectiemethode

Algoritme voor bisectiemethode

De stappen voor het toepassen van het algoritme voor de bisectiemethode om de wortel van vergelijking f(x)=0 te vinden, zijn als volgt

Stap 1) Kies initiële schattingen a, b en tolerantiepercentage e

Stap 2) Als f(a)f(b) >=0, dan ligt de wortel niet in dit interval. Er zal dus geen oplossing zijn.

Stap 3) Zoek het middelpunt, c = (a+b)/2

(i) Als de functiewaarde van het middelpunt f(c) = 0, dan is c de wortel. Ga naar stap 5.
(ii) Als f(a)f(c) < 0 ligt de wortel tussen a en c. Stel vervolgens a = a, b = c in.
(iii) Stel anders a = c, b = b.

Stap 4) Als de absolute fout hoger is dan het tolerantiepercentage of (ba) > e, ga dan naar stap 3.

Stap 5) Geef c weer als de geschatte wortel.

Laten we een voorbeeld bekijken van het algoritme voor de bisectiemethode.
We moeten de wortel van de volgende continue functie vinden met behulp van de formule van de bisectiemethode.

f(x) = x3 - x2 + 2

Bisectiemethode Voorbeeld

Stap 1) Laten we aannemen,

         een = -10,
         b = 10, en
         e = 1% of 0.01

Stap 2) Nu gaan we na of f(a)f(b) >= 0 of niet.

         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

De wortel van de bovenstaande functie ligt dus in dit interval [-10, 10].

Stap 3) Vervolgens wordt eerst het middelpunt c berekend.

Bisectiemethode Voorbeeld

Nu moeten de volgende voorwaarden worden gecontroleerd:

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

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

Er is aan de voorwaarde voldaan. Voor de volgende iteratie zijn de waarden:

         een = een = -10
         b = c = 0

Stap 4) Als (ba) = (0-(-10)) = 10>0.05, wordt het proces herhaald. De volgende iteraties worden weergegeven in de tabel.

herhaling 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

Stap 5) In de 11e iteratie zal de voorwaarde van stap 4 onwaar zijn. De wortel van deze vergelijking is dus -1.00586.

Bisectiemethode Logisch diagram

Bisectiemethode Logisch diagram

Pseudo-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

Bisectiemethode Voorbeeld in C/C++

Input:

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

Output:

The root is :-1.00586

Bisectiemethode Voorbeeld in Python

Input:

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)

Output:

The root is :  -1.0059

Voordelen en beperkingen van de bisectiemethode

Hier zijn de voor- en nadelen van de bisectiemethode:

VOORDELEN NADELEN
Gemakkelijke en eenvoudige methode voor het vinden van wortels om te implementeren. De convergentie is langzaam omdat deze eenvoudigweg gebaseerd is op het halveren van het interval.
Omdat het de wortel omsluit, is het altijd convergent. Als een van de initiële gissingen dicht bij de wortel ligt, zal het bereiken van de wortel meer iteraties vergen.
Het foutenpercentage kan worden beheerst door het aantal iteraties te verhogen of te verlagen.