Een wortel uitrekenen
Zoals je weet heeft Python een ingebouwde functie voor het uitrekenen van een wortel. Het is echter een goede oefening om zelf een programma te maken dat de wortel zelf kan benaderen. Dit kan op veel verschillende manieren. Het algoritme wat wij gebruiken werkt met een bovengrens en een ondergrens. De wortel ligt tussen deze twee waarden in. In een loop worden deze waarden steeds wat naar elkaar toegeschoven, zodat je steeds preciezer weet wat de wortel ongeveer is. Zie ook de presentatie-slides voor een grafische uitleg. Het algoritme begint als volgt:
-
De gebruiker voert een getal in, dat in deze uitleg $x$ wordt genoemd. Hiervan ga je de wortel zoeken.
-
Je mag een bepaalde foutmarge aanhouden - je programma mag er bijvoorbeeld $0.01$ naast zitten. Je mag hiervoor een constante waarde in je programma zetten, of je mag het door de gebruiker laten intypen.
-
Als je algoritme begint, kun je nog weinig zeggen over deze onder- en bovengrens. Je moet hiervoor dus veilige waarden nemen, waarvan je zeker weet dat de wortel ertussenin ligt. Voor de ondergens kun je nul nemen, en voor de bovengrens kun je $x$ nemen. Dit werkt alleen niet als $x$ tussen $0$ en $1$ ligt. Welk getal moet je dan gebruiken?
-
Je weet dat $\sqrt{x}$ ergens tussen de onder- en bovengrens ligt, dus als schatting voor $\sqrt{x}$ kunnen we het gemiddelde van deze twee nemen.
Nu gaan we in stappen te werk.
- Maak een programma, waarin deze beginwaarden goed worden gezet ($x$, foutmarge, onder- en bovengrens, schatting). Het algoritme zelf hoeft nog niet uitgevoerd te worden.
Nu heb je alle gegevens die je nodig hebt, en kan het zoeken beginnen. Dit gebeurt in een loopje:
-
In de conditie van de while-loop controleren we hoe ver we van de echte wortel af zitten. Dit kunnen we doen door onze laatste schatting te kwadrateren, en met $x$ te vergelijken.
-
Als het kwadraat van onze laatste schatting groter is dan $x$ zitten we kennelijk te hoog. Dit is nu een veilige nieuwe bovengrens. Als de schatting lager is, is het de nieuwe ondergrens.
Als uit de conditie van de while-loop blijkt dat onze schatting goed genoeg is, zijn we klaar.
- Vul nu je programma aan, zodat dit algoritme wordt uitgevoerd. Laat de gebruiker een getal intypen, en eventueel een foutmarge als je hiervoor geen vaste waarde in je programma wil nemen. Voer het algoritme uit, en print de resulterende wortelbenadering.
Hint: als je tijdens het programmeren een foutje maakt, kan het gebeuren dat de loop nooit eindigt. Druk in PyCharm op de stop-knop om je programma te stoppen. Door in de loop de waarden van je variabelen te printen, kun je zien hoe de variabelen veranderen. Dit kan helpen met ontdekken wat er fout gaat.