Εκτίμηση του π με τη μέθοδο Leibnitz στη C++

Η πλήρης προβολή του βίντεο απαιτεί σύνδεση

Το βίντεο έχει διάρκεια 28:29, πιθανά να χρειάζεται λίγος χρόνος για την προβολή του.

cpp εκίμηση π μέθοδος Leibnitz άθροισμα σειράς

Η μέθοδος στηρίζεται στον τύπο:

$$ \frac{\pi}{4} = 1 - \frac{1}{3} + \frac{1}{5} - \frac{1}{7} + \frac{1}{9} - \cdots = \sum_{n=0}^\infty \frac{(-1)^n}{2n+1} $$

Ο παραπάνω τύπος μπορεί να χρησιμοποιηθεί ως εξής για την εκτίμηση της τιμής του π (μεγαλύτερο Ν δίνει καλύτερη εκτίμηση):

#include <stdio.h>
#include <math.h>

using namespace std;

int main()
{
    int N = 5000;
    int i;
    double  pi = 0;
    for (int i=0; i<=N; i++)
    {
        pi += (double) pow(-1.0, i) / (2*i+1);
    }

    pi *= 4;
    printf("PI value with %d elements: ", N);
    printf ("pi = %12.10f\n", pi); 

    return 0;
}

Μεταγλώττιση και εκτέλεση:

astavrak@apollonia:~$ g++ program.cpp
astavrak@apollonia:~$ ./a.out 
Estimated PI value with 5000 elements of Leibnitz series: 
pi = 3.1413926536

Εναλλακτικός τρόπος που βασίζεται σε βρόγχο με δεδομένη ακρίβεια υπολογισμού:

#include <stdio.h>
#include <math.h>

using namespace std;

int main()
{
    double h = 1e-5;
    double pi = 0;
    double d;
    unsigned long int i = 0;
    
    do
    {
        d = (double) pow(-1.0, i) / (2*i+1);
        pi += d;
        ++i;
    } while (fabs(d) > h);

    pi *= 4;
    printf ("pi = %12.10f\n", pi); 

    return 0;
}

Μεταγλώττιση και εκτέλεση:

astavrak@apollonia:~$ g++ program.cpp
astavrak@apollonia:~$ ./a.out 
pi = 3.1415926736

Δοκιμάστε την εκτέλεση του προγράμματος με διαφορετικές τιμές h, πχ 1e-4, 1e-6, 1e-10 και ερμηνεύστε το αποτέλεσμα.

Δείτε επίσης Εκτίμηση του π με τη μέθοδο Leibnitz με το Excel/Calc

Συνδεθείτε για περισσότερες δυνατότητες αλληλεπίδρασης,
σχολιασμοί, εξωτερικοί σύνδεσμοι, βοήθεια, ψηφοφορίες, αρχεία, κτλ.

Creative Commons License
Εκπαιδευτικό υλικό από τον Αθανάσιο Σταυρακούδη σας παρέχετε κάτω από την άδεια Creative Commons Attribution-NonCommercial-ShareAlike 4.0 License.
Σας παρακαλώ να ενημερωθείτε για κάποιους επιπλέον περιορισμούς
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=401.