PyPrintPi op een Raspberry Pi (12 / 23 stap)

Stap 12: Codering van Gauss formule

In onze vorige stap vonden we de formule:

Π/4=12*arctan(1/18) + 8*arctan(1/57) - 5*arctan(1/239)

We kunnen dit gemakkelijk omzetten in een functie in python als we aannemen dat we een arctangens-functie hebt gedefinieerd:

Nu moeten we een arctangens-functie maken. De snelste methode uit te voeren zou zijn om gebruik van de formule die we in stap 9 zagen:

arctan(x) = x - (x³/3) + (x⁵/5) - (x⁷/7) + (x⁹/9) - (x¹¹/11)...

echter zien als we alleen zijn berekening van arctans van getallen in de vorm van 1 / x het zinvoller te herdefiniëren van de formule als:

arctan(1/x) = (1 / x)-(1/3 x ³) + (1/5x⁵) - (1/7x⁷) + (1/9x⁹) - (1/11 x ¹¹)...

Dit geeft ons de volgende functie in Python:

Deze functie is een beetje meer gevorderd dan onze vorige functies zoals op niet de gebruiker vergen doet voor het invoeren van hoeveel herhalingen uit te voeren. In plaats daarvan het kijkt naar de waarde van getcontext () .prec en de kleinste waarde gezocht die het Python programma van nul onderscheiden kunt (bijvoorbeeld als getcontext () .prec = 2 dan de kleinste waarde Python van 0 onderscheiden kunt 0.1 is).

Het vergelijkt vervolgens de waarde van de vorige zittingsperiode in de volgorde: als het kleiner is dan de kleinste waarde python van 0 onderscheiden kunt, dan geen zin voort te zetten heeft zodat het programma stopt.

Als we de twee functies samen te stellen krijgen we het volgende programma (gauss_pi_method.py):

Als je dit om te zoeken naar 10.000 cijfers van π uitvoeren duurt het minder dan een minuut. Op mijn computer kostte het 17 seconden. Dat is veel beter dan de vorige beste programma we hadden, enerzijds op basis van de veelhoek-methode, die 43 seconden nam op mijn computer voor het berekenen van 100 cijfers van π.

Echter kunnen we veel beter met behulp van dezelfde functie voor het berekenen van π als we arctan(1/x) sneller kunnen berekenen.

Gelukkig, Euler kwam met een manier om enkel dat te doen:

arctan(1/x) = (x / (1 + x²)) + ((2 * x) / (3*(1+x²)²)) + ((2 * 4 * x) / (3*5*(1+x²)³)) + ((2 * 4 * 6 * x) / (3*5*7*(1+x²)⁴)) +...

De nth term in deze serie wordt gegeven door de functie f(n):

f(n) = f(n-1) * (2 * n) / ((2*n+1)*(1+x²))

waar is de eerste termijn (x / (1 + x²))

Zodat de code sneller lopen kunnen we berekenen 1 + x² voordat de lus zodat we slechts eenmaal berekenen. De geactualiseerde code (gauss_pi_method_accelerated_arctan.py) is:

Deze code duurde iets meer dan een halve seconde voor het berekenen van π tot 10.000 cijfers, dat is ongeveer 30 keer sneller dan vóór!

Er is een handige truc om de code nog sneller te maken. Tot nu toe hebben we met behulp van de decimale library in Python. Als we de berekeningen met behulp van gehele getallen doen zal het wel veel sneller. Om dit te doen we eerst vermenigvuldigt u de waarde voor de beginkleur met een grote macht van 10 en later, wanneer we het resultaat gebruiken willen, we het indelen door dat dezelfde macht van 10. Hier is hoe de code eruit ziet (gauss_pi_method_fixed_point.py):

Deze versie van de code berekend 10.000 decimalen van π in slechts 0,26 seconden, dat is bijna twee keer zo snel als de vorige methode!

Gerelateerde Artikelen

Controle op elk apparaat met behulp van een Raspberry Pi en een Relais module

Controle op elk apparaat met behulp van een Raspberry Pi en een Relais module

Het doel van deze ible is te laten zien hoe aan de slag met het opzetten van een Relais module op uw pi en onder controle. Mijn doel is om scripts toevoegen aan mijn octopussen op en uitschakelen LED-verlichting, maar hoe dan ook u wilt uiteindelijk
De Linkit met behulp van een Raspberry PI Program

De Linkit met behulp van een Raspberry PI Program

In dit instructable, ik ga u tonen hoe te programmeren van de Linktit een bord met behulp van een Raspberry Pi, en ook seriële communicatie met het vast te stellen. Dit instructable ziet u hoe u een micro-controller (één Linkit) en het werk van een m
IoT - een Raspberry Pi Robot beheren via internet met HTML en shell scripts alleen

IoT - een Raspberry Pi Robot beheren via internet met HTML en shell scripts alleen

(Als je deze Instructables, vergeet dan niet te stemmen (boven: rechts hoek vlag). het is concurreren op INTERNET of THINGS en automatisering wedstrijden. Heel hartelijk bedankt! ;-)In dit instructable, zullen we het maken van een volledig gecontrole
Bouwen van een Raspberry Pi SUPER weerstation

Bouwen van een Raspberry Pi SUPER weerstation

Laten we eerlijk zijn, wij mensen praten over het weer een veel ⛅️. De gemiddelde persoon praat over het weer vier keer per dag, voor een gemiddelde van 8 minuten en 21 seconden. Doe de wiskunde en die bedraagt 10 maanden van je leven dat je zal door
RPiScope: een raspberry pi Microscoop, bouwen van laser gesneden acryl onderdelen

RPiScope: een raspberry pi Microscoop, bouwen van laser gesneden acryl onderdelen

Work in progress. Versie: 29 Nov 2015Stap 1: InleidingStap 2: Nemen van afbeeldingen & voorbeeldafbeeldingen (neem een kijkje op de vlieg film)Stap 3: BouwinstructiesStap 4: Gereflecteerd licht vs. transillumination microscopieStap 5: SVG-bestanden e
Een Raspberry Pi camera gebaseerde Microscoop met behulp van LEGO onderdelen

Een Raspberry Pi camera gebaseerde Microscoop met behulp van LEGO onderdelen

Een Raspberry Pi camera gebaseerde Microscoop, gebouwd net van LEGO onderdelen.Versie: 11 oktober 2015Inleiding en overzichtIkn het begin ik had het idee om het bouwen van een eenvoudige en goedkope microscoop met behulp van een raspberry pi en een p
Uw eerste IOT met een Raspberry Pi, DHT11 sensor en Thingspeak bouwen.

Uw eerste IOT met een Raspberry Pi, DHT11 sensor en Thingspeak bouwen.

IOT of Internet of Things is een hot topic! Volgens de deskundigen zal alles worden aangesloten op het internet en al onze toestellen en hun gegevens zal binnenkort gewoon een IP-adres van ons af. Dus waar moet u beginnen als u wilt ontdekken de were
PiDP-8: Een Raspberry Pi als PDP-8 minicomputer

PiDP-8: Een Raspberry Pi als PDP-8 minicomputer

Iedereen wilde een PDP-8 minicomputer. Nou ja, in 1968 toch. Beleef de gouden eeuw van minicomputers door deze SD-kaart image booten op een Raspberry Pi. Desgewenst voegt u een replica voorpaneel opnieuw de Blinkenlights-ervaring toe. Een eenvoudige
Een weerbericht-weergave met behulp van knooppunt-rood en een Raspberry-Pi

Een weerbericht-weergave met behulp van knooppunt-rood en een Raspberry-Pi

Heb je gehoord over Knooppunt-rood ? Deze grafische tool wil helpen ontwikkelaars in hun missie om de draad van het Internet van dingen met Flow gebaseerde programmering.Ik keek een paar tutorials en demonstratie video's, om te begrijpen hoe vakken b
Hoe Hack een Apple Time Capsule met een Raspberry Pi

Hoe Hack een Apple Time Capsule met een Raspberry Pi

Invoering van de "Pi-Capsule." Het is momenteel de enige Apple Time Capsule die u op uw TV aansluiten kunt..., betekent dit dat het een Apple TV? ;-)OK, ok, laten we zeggen dat je hebt een oude Apple Time Capsule rond leggend dat niet meer werkt
Bouw een 3D Pan Tilt geval afgedrukt voor een Raspberry Pi

Bouw een 3D Pan Tilt geval afgedrukt voor een Raspberry Pi

Dit instructable beschrijft het gebouw van een zaak voor een Raspberry Pi waarin een vergadering van de pan-tilt voor de Pi-Camera.Mijn doel was het ontwerpen van een 3D afdrukbare geval dat netjes de Raspberry Pi terwijl ook het verstrekken van ruim
Pure Pi: Controle aangepaste stompbox effecten op een Raspberry Pi met een smartphone

Pure Pi: Controle aangepaste stompbox effecten op een Raspberry Pi met een smartphone

Dit is mijn eerste instructable, hoewel ik met Pure Data, Raspberry Pi, en andere digitale audio voor geruime tijd gewerkt heb. Als u wilt zien meer instructables uitzien, stem voor mij!Ooit wonder hoe digitale effecten worden gemaakt? Wilt u uw favo
WiFi Photobooth met een Raspberry Pi

WiFi Photobooth met een Raspberry Pi

Dit project is over een photobooth volledig gecontroleerd en beheerd door slechts een raspberry pi. U kunt het zelfs bedienen met een 12V auto accu voor een tijdje.Wat u ermee kunt doen:Deze instellen als een normale photobooth voor huwelijken, verja
Besturen van een trein van Lionel met een Raspberry Pi

Besturen van een trein van Lionel met een Raspberry Pi

Wat er gebeurt als u een oud model van Lionel trein systeem en sommige web-control toe te voegen? Dit project regelt een Lionel model treinset met de Raspberry Pi.In dit project gaan we stap voor stap door het delen, hardware en software waarmee een