Halveringsmethode

Uit testwiki
Versie door imported>Fryslanfrysk op 6 aug 2024 om 09:57 (growthexperiments-addlink-summary-summary:1|2|0)
(wijz) ← Oudere versie | Huidige versie (wijz) | Nieuwere versie → (wijz)
Naar navigatie springen Naar zoeken springen

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].
  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).
  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 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

x32=0

Duidelijk is dat 1<x<2, dus een eerste benadering is

x1=1,5

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

x2=12(1+1,5)=1,25

Nu is 1,253=1,953125, dus ligt x in de rechterhelft: 1,25<x<1,5. Zo gaat men door:

x3=12(1,25+1,5)=1,375

Dan blijkt: 1,25<x<1,375. Dus wordt

x4=12(1,25+1,375)=1,3125

Omdat voor de gezochte waarde geldt dat x1,25992105, zal voorlopig steeds xi in de linkerhelft van de komende intervallen liggen:

x5=12(1,25+1,3125)=1,28125
x6=12(1,25+1,28125)=1,265625
x7=12(1,25+1,265625)=1,2578125

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

x8=12(1,2578125+1,265625)=1,26171875

Nu ligt de benadering er weer boven:

x9=12(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, als we een interval [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 continu is op [a,b], en f(a)<0 en 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