Halveringsmethode

De halveringsmethode is een algoritme voor het oplossen van vergelijkingen. Het principe is eenvoudig en de methode is gemakkelijk op een computer te implementeren. De methode vertoont overeenkomsten met binair zoeken binnen een rij gegevens. De halveringsmethode kan bijvoorbeeld worden gebruikt om de nulpunten van een functie te bepalen.

Nulpunt bepalen

  1. Stel de te bereiken nauwkeurigheid vast.
  2. Bepaal een interval waarin een oplossing van de vergelijking ligt, noem dat [ a , b ] {\displaystyle [a,b]} .
  3. Bepaal of de oplossing zich links of rechts van het midden van het interval bevindt. Dat komt neer op het bepalen van f ( ( a + b ) / 2 ) {\displaystyle f((a+b)/2)} .
  4. Zoek dan verder in het deelinterval waar de oplossing in ligt. Bij elke iteratie wordt de lengte van het interval waarin verder gezocht wordt de helft kleiner. Ga hiermee door tot de gewenste nauwkeurigheid is bereikt.

De methode convergeert dus in ieder geval, maar een belangrijk nadeel is dat deze convergentie langzaam gaat.

Voorbeeld

Worteltrekken is geen elementaire operatie zoals optellen of vermenigvuldigen. Wortels moeten in de praktijk altijd worden benaderd met een iteratief algoritme of een rij. Een voorbeeld toont de benadering van 2   3 {\displaystyle {\sqrt[{3}]{2\ }}} met de halveringsmethode. Voor het benaderen van wortels zijn er efficiëntere methoden dan de halveringsmethode.

Het berekenen van de derdemachtswortel wordt vertaald in het oplossen van de vergelijking

x 3 2 = 0 {\displaystyle x^{3}-2=0}

Duidelijk is dat 1 < x < 2 {\displaystyle 1<x<2} , dus een eerste benadering is

x 1 = 1 , 5 {\displaystyle x_{1}=1{,}5}

Aangezien 1 , 5 3 = 3,375 {\displaystyle 1{,}5^{3}=3{,}375} , ligt x {\displaystyle x} dus in de linkerhelft: 1 < x < 1 , 5 {\displaystyle 1<x<1{,}5} . De procedure wordt nu herhaald en als tweede benadering krijgt men

x 2 = 1 2 ( 1 + 1 , 5 ) = 1 , 25 {\displaystyle x_{2}={\tfrac {1}{2}}(1+1{,}5)=1{,}25}

Nu is 1 , 25 3 = 1,953 125 {\displaystyle 1{,}25^{3}=1{,}953125} , dus ligt x {\displaystyle x} in de rechterhelft: 1 , 25 < x < 1 , 5 {\displaystyle 1{,}25<x<1{,}5} . Zo gaat men door:

x 3 = 1 2 ( 1 , 25 + 1 , 5 ) = 1,375 {\displaystyle x_{3}={\tfrac {1}{2}}(1{,}25+1{,}5)=1{,}375}

Dan blijkt: 1 , 25 < x < 1,375 {\displaystyle 1{,}25<x<1{,}375} . Dus wordt

x 4 = 1 2 ( 1 , 25 + 1,375 ) = 1,312 5 {\displaystyle x_{4}={\tfrac {1}{2}}(1{,}25+1{,}375)=1{,}3125}

Omdat voor de gezochte waarde geldt dat x 1,259 92105 {\displaystyle x\approx 1{,}25992105} , zal voorlopig steeds x i {\displaystyle x_{i}} in de linkerhelft van de komende intervallen liggen:

x 5 = 1 2 ( 1 , 25 + 1,312 5 ) = 1,281 25 {\displaystyle x_{5}={\tfrac {1}{2}}(1{,}25+1{,}3125)=1{,}28125}
x 6 = 1 2 ( 1 , 25 + 1,281 25 ) = 1,265 625 {\displaystyle x_{6}={\tfrac {1}{2}}(1{,}25+1{,}28125)=1{,}265625}
x 7 = 1 2 ( 1 , 25 + 1,265 625 ) = 1,257 8125 {\displaystyle x_{7}={\tfrac {1}{2}}(1{,}25+1{,}265625)=1{,}2578125}

Nu duikt men onder x {\displaystyle x} , wat door berekening van de derde macht is vast te stellen, dus

x 8 = 1 2 ( 1,257 8125 + 1,265 625 ) = 1,261 71875 {\displaystyle x_{8}={\tfrac {1}{2}}(1{,}2578125+1{,}265625)=1{,}26171875}

Nu ligt de benadering er weer boven:

x 9 = 1 2 ( 1,257 8125 + 1,261 71875 ) = 1,259 765625 {\displaystyle x_{9}={\tfrac {1}{2}}(1{,}2578125+1{,}26171875)=1{,}259765625}

Men gaat zo door tot de gewenste nauwkeurigheid is bereikt.

Toepasbaarheid

Deze methode is eigenlijk alleen zinvol wanneer de methode van Newton of regula falsi niet kunnen worden gebruikt, bijvoorbeeld als er veel oplossingen dicht bij elkaar liggen, wat die methoden kan ontregelen, of wanneer de startwaarden te ver van de oplossing af liggen. Als de gewenste nauwkeurigheid niet al te groot is, kan de halveringsmethode ook sneller zijn omdat per stap minder rekenwerk nodig is.

Uit het bovenstaande voorbeeld leren we dat we de methode kunnen toepassen voor het oplossen van een vergelijking van de vorm f ( x ) = 0 {\displaystyle f(x)=0} , als we een interval [ a , b ] {\displaystyle [a,b]} hebben waarin de/één oplossing ligt en alle functiewaarden links van de oplossing kleiner óf groter zijn dan alle functiewaarden rechts van de oplossing. Als f {\displaystyle f} continu is op [ a , b ] , {\displaystyle [a,b],} en f ( a ) < 0 {\displaystyle f(a)<0} en f ( b ) > 0 {\displaystyle f(b)>0} (of andersom) is er volgens de tussenwaardestelling gegarandeerd ten minste een nulpunt.

Pseudocode

De halveringsmethode in pseudocode:

    const d = .... 
    var a, b, m;
    a, b ← A, B;
    
    ZOLANG (b - a) > d 
      m ← (a + b) / 2
      ALS f(m)*f(a) < 0
      DAN b ← m
      ANDERS a ← m
    HERHAAL  
    schatting ← (a + b) / 2