Er bestaan verschillende manieren om de waarde van het getal $$\pi$$ te berekenen aan de hand van een computer. Zo kan je bijvoorbeeld een partieelsom berekenen van de reeks van Gregory-Leibniz: \[ \pi = \frac41 - \frac43 + \frac45 - \frac47 + \dots \] De Indische wiskundige Madhava van Sangamagrama stelde reeds in de veertiende eeuw een alternatieve reeksontwikkeling voor: \[ \pi = \sqrt{12}\,\left( 1 - \frac1{3\cdot 3} + \frac1{5\cdot 3^2} - \frac1{7\cdot 3^3} + \cdots \right) \]
Schrijf een functie GL die de som van de eerste n termen van de reeks van Gregory-Leibniz teruggeeft. Het aantal termen $$n$$ moet als parameter aan de functie meegegeven worden.
Schrijf een functie MvS die de som van de eerste n termen van de reeks van Madhava van Sangamagrama teruggeeft. Het aantal termen $$n$$ moet als parameter aan de functie meegegeven worden.
Onderzoek welk van deze twee reeksen het snelst convergeert. Gebruik deze reeks om een functie benader_pi te schrijven. Deze functie moet toelaten om een benaderde waarde voor $$\pi$$ te bepalen, die tot op $$n$$ decimalen nauwkeurig is. De waarde $$n$$ moet als argument aan de functie meegegeven worden. Om de nauwkeurigheid van de benadering te bepalen, moet je nagaan of het verschil tussen twee opeenvolgende termen in de reeks kleiner is dan $$10^{-n-1}$$. Op het ogenblik dat het verschil tussen de ($$i-1$$)-de en de $$i$$-de term kleiner wordt dan $$10^{-n-1}$$, vormt de $$i$$-de partieelsom een benadering van $$\pi$$ tot op $$n$$ decimalen nauwkeurig. De functie moet het tupel $$(i, p)$$ als resultaat teruggeven, waarbij $$i$$ het aantal berekende termen is en $$p$$ de benaderde waarde van $$\pi$$.
>>> GL(2)
2.666666666666667
>>> MvS(2)
3.0792014356780038
>>> benader_pi(2)
(8, 3.141568715941784)