ubuntuusers.de

Programmierübung in C++ : Berechnung von PI mit vielen Stellen

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

schollsky

Avatar von schollsky

Anmeldungsdatum:
3. Dezember 2012

Beiträge: 1712

Wohnort: Ruhrgebeat

Guten Abend allerseits,

als Übung versuche ich die Kreiszahl Pi zu berechnen mit ca. 20 Nachkommastellen. Mit dem ersten Algorithmus aus Wikipedia konvergierte das Ergebnis nur sehr langsam, deshalb habe ich mich im zweiten Ansatz für folgende Formel entschieden:

https://de.wikipedia.org/wiki/Bailey-Borwein-Plouffe-Formel

Mit Hilfe von ChatGPT konnte ich folgenden Code in C++ zum Laufen bringen:

long double approx_pi (long int r)
    {
        long double term1, term2, term3, term4, term5;
        long double pi=0;
    
        for (long int k=0;k<=r;k++)
            {
                term1= 4.0/(8.0*k+1.0);
                term2= 2.0/(8.0*k+4.0);
                term3= 1.0/(8.0*k+5.0);
                term4= 1.0/(8.0*k+6.0);
                term5= 1.0/pow(16.0, k);
                pi = pi+term5*(term1-term2-term3-term4);
            }
        return pi;
    }

Das Ergebnis ist jedoch bei Werten für r von 10 und größer stets gleich. Als Ausgabe erhalte ich immer 3.14159. Liegt das an der Ausgabefunktion von C++ cout? Die Berechnung erfolgt sehr schnell, aber ich hätte gerne wenigstens 20 korrekte Nachkommastellen in der Ausgabe.

Wie kann ich das hinbekommen?

Grüße

schollsky

schollsky

(Themenstarter)
Avatar von schollsky

Anmeldungsdatum:
3. Dezember 2012

Beiträge: 1712

Wohnort: Ruhrgebeat

Habe die Lösung gefunden:

In der main.cpp habe ich folgendes hinzugefügt:

#include <iomanip>

Und die Ausgabefunktion habe ich wie folgt variiert:

cout << "Pi in dieser Näherung ist: ";
cout << std::fixed << std::setprecision(20) << pi << endl;

Grüße

schollsky

Antworten |