Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

obliczanie liczby pi

Ostatnio zmodyfikowano 2009-12-23 18:53
Autor Wiadomość
jarek4700
Temat założony przez niniejszego użytkownika
obliczanie liczby pi
» 2009-12-23 17:39:48
Witam!
Ostatnio pomyślałem żeby napisać program, który będzie obliczał liczbę pi.
skorzystałem z faktu że pi = 16*arctg(1/5)-4*arctg(1/239). Wyrażenie po prawej jest równe dokładnie liczbie pi (nie jest to żadne przyblizenie).
Znalazłam jeszcze wzór na arcus tangens i napisałem taki oto program:
C/C++
#include <iostream>
#include<iomanip>

using namespace std;

int main()
{
    long double pi, arctan1_5 = 0, arctan1_239 = 0, p1_5_n, p1_239_n;
    int n, znak;
   
   
    n = 1;
    znak = 1;
    do
    {
        p1_5_n = 1;
        for( int i = 1; i <= n; i++ ) p1_5_n = p1_5_n / 5;
       
        arctan1_5 = arctan1_5 + znak * p1_5_n / n;
        znak = znak *( - 1 );
        n = n + 2;
    } while(( p1_5_n / n ) != 0 );
   
    pi = 16 * arctan1_5;
   
    n = 1;
    znak = 1;
    do
    {
        p1_239_n = 1;
        for( int i = 1; i <= n; i++ ) p1_239_n = p1_239_n / 239;
       
        arctan1_239 = arctan1_239 + znak * p1_239_n / n;
        znak = znak *( - 1 );
        n = n + 2;
    } while(( p1_239_n / n ) != 0 );
   
    pi = pi - 4 * arctan1_239;
   
    cout << "pi=" << setprecision( 16 ) << pi;
    return 0;
}
Program nawet działa ale chciałem liczyć pi z dużą dokładnością. Tutaj mogę policzyć tylko do 15 miejsc po przecinku, dalej program liczy błędnie.
Jak to można zrobić żeby policzyć powiedzmy tysiąc cyfr po przecinku?
P-12430
Elaine
» 2009-12-23 18:40:55
Przechowuj liczbę w jakiejś innej postaci, niż liczba zmiennoprzecinkowa.
P-12431
DejaVu
» 2009-12-23 18:53:04
Możesz np. przechowywać liczby w std::string, ale będziesz musiał później oprogramować wszystkie operacje matematyczne.
P-12436
« 1 »
  Strona 1 z 1