Het $$n$$-de harmonische getal is de som \[\sum_{i=1}^{n}\frac{1}{i}\]
Voor kleine waarden van $$n$$ is het eenvoudig om deze som te gewoon berekenen. Als $$n$$ echter zeer groot wordt, dan kan dit heel wat tijd in beslag nemen. Voor grote waarden van $$n$$ gebruik je dus beter een benadering die eenvoudig te berekenen is. De harmonische getallen kan je benaderen met onderstaande formule: \[\ln(n) + \gamma + \frac{1}{2n} - \frac{1}{12n^2} + \frac{1}{120n^4}\]
Hierbij staat $$\ln$$ voor de natuurlijke logaritme11. De $$\gamma$$ uit de formule is de constante van Euler-Mascheroni22 (niet te verwarren met het getal van Euler dat voorgesteld wordt door $$e$$) en is ongeveer gelijk aan 0.577215664901532.
Schrijf een functie harmonisch_exact die het $$n$$-de harmonische getal exact berekent. De functie neemt één argument: een geheel getal $$n$$.
Schrijf een functie harmonisch_benaderd die het $$n$$-de harmonische getal benaderd berekent. Je mag in de berekening de constante van Euler-Mascheroni gelijk stellen aan 0.577215664901532. De functie neemt één argument: een geheel getal $$n$$.
Schrijf een functie harmonisch met twee parameters: een geheel getal $$n$$ en een tweede optionele parameter $$exact$$ (een Boolean). Als het tweede argument weggelaten wordt, dan wordt True
verondersteld en wordt de exacte waarde berekend. Als de waarde False
opgegeven wordt, dan bereken je de benadering. Vermijd overbodige duplicatie van code.
>>> harmonisch_exact(10)
2.9289682539682538
>>> harmonisch_benaderd(10)
2.9289682578955776
>>> harmonisch(10, False)
2.9289682578955776
>>> harmonisch(10)
2.9289682539682538