Schrijf de functie
newton_raphson()
met als argumenten:
-
f
: te onderzoeken functie
-
x0
: eerste schatting voor nulpunt
-
df
: afgeleide functie van f, default waarde None
-
h
: nauwkeurigheid op nulpunt, default $$10^{-3}$$
-
max_iter
: maximum aantal iteraties, default $$100$$
Het resultaat is het nulpunt van de functie dat je via het Newton-Raphson algoritme identificeert.
- indien de afgeleide functie niet opgegeven wordt,
bepaal je de waarde van de afgeleide numeriek, gebruik hiervoor de $$h$$-waarde
in het centrale differentieschema
- vermits convergentie niet gegarandeerd is, wordt het aantal iteraties beperkt,
indien het maximaal aantal iteraties bereikt wordt, zonder dat de gewenste tolerantie
gehaald wordt, levert de functie
math.nan
als resultaat
- het nulpunt wordt als voldoende dicht benaderd beschouwd zodra
opeenvolgende benaderingen dichter dan $$h$$ bijeen liggen
Voorbeeld
f = lambda x:(x+3)*(x-2)*(x-8)
df = lambda x:3*x**2-14*x-14
nul0 = newton_raphson(f, -5.0, df, 1e-05, 100) #-3.0
nul1 = newton_raphson(f, -5.0, h = 1e-05, max_iter = 100) #-3.0