obliczanie liczby pi
Ostatnio zmodyfikowano 2009-12-23 18:53
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: #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? |
|
Elaine |
» 2009-12-23 18:40:55 Przechowuj liczbę w jakiejś innej postaci, niż liczba zmiennoprzecinkowa. |
|
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. |
|
« 1 » |