Vierkantswortels uitrekenen

Een manier om de vierkantswortel van een gegeven getal n te berekenen is om deze bewerking te zien als een binair zoekalgoritme. Immers:

Jouw taak is om de functie vkw(n) te schrijven die de vierkantswortel van n uitrekent en returnt. Je mag géén ingebouwde vierkantswortels (zoals **0.5) gebruiken. Eens je dit gedaan hebt mag je onderstaande code kopiëren in Dodona.

def vkw(n):
	# HIER JOUW CODE
    pass

def test_vkw(n):
    if n == 0:
        return 1 if vkw(n) == 0.0 else -1

    x = vkw(n)
    y = n ** 0.5
    return 1 if abs(x-y) / y < 10**-10 else 0

Dodona zal dan jouw code testen via de functie test_vkw(n), die nagaat of jouw uitgerekende vierkantswortel tot op 10 cijfers gelijk is aan de ingebouwde in Python.

Tip: Je kan natuurlijk géén lijst met mogelijke waarden opstellen voor dit probleem. Je functie zal moeten eindigen als de boven- en ondergrens dicht genoeg bij elkaar liggen. Als jouw onder- en bovengrens a en b heten, dan kun je dit via onderstaande boolean:

(b**2 - a**2) / b**2 > 10**-12

Zolang deze boolean True is liggen a en b nog te ver uit elkaar om te returnen.