Valoarea lui π poate fi calculatată cu ajutorul formulei:

Scrieți un program care calculează valoarea lui π. Pentru că formula utilizează o serie infinită,
valoarea se va calcula cu o precizie de 6 poziții zecimale.
Răspunsuri la întrebare
Răspuns de
3
Precizie de 6 pozitii zecimale inseamna ca diferenta de valoare dintre
doi termeni consecutivi ai sirului de mai sus(1-1/3+1/5-1/7...) este de 0.000001, adica 1 parte la un milion.
Daca testezi asa, o sa vezi ca pi are o eroare de 0.00001, o parte la o suta de mii(la final ca sa obtii pi, trebuie sa inmultesti valoarea sirului cu 4)
Deci ar trebui sa folosesti o eroare maxim admisibila de 10^-7 in loc de 10^-6, dar o sa vezi ca ia foarte mult pana obtine acest grad de precizie
Te poti juca tu cu valorile sa vezi: cu cat eroarea e mai mica, cu atat pi este mai precis, dar timpul de executie creste exponential
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int n,i,nr=1;
long double pi,x0,x1,err;
err=10e-6;
x1=1;
i=3;
do
{
x0=x1;
x1=x0+pow(-1,nr)/i;
i=i+2;
nr++;
cout<<x0<<" "<<x1<<endl;
}while(abs(x1-x0)>err);
pi=x1*4;
cout<<"Valoarea lui pi este:"<<pi;
return 0;
}
doi termeni consecutivi ai sirului de mai sus(1-1/3+1/5-1/7...) este de 0.000001, adica 1 parte la un milion.
Daca testezi asa, o sa vezi ca pi are o eroare de 0.00001, o parte la o suta de mii(la final ca sa obtii pi, trebuie sa inmultesti valoarea sirului cu 4)
Deci ar trebui sa folosesti o eroare maxim admisibila de 10^-7 in loc de 10^-6, dar o sa vezi ca ia foarte mult pana obtine acest grad de precizie
Te poti juca tu cu valorile sa vezi: cu cat eroarea e mai mica, cu atat pi este mai precis, dar timpul de executie creste exponential
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int n,i,nr=1;
long double pi,x0,x1,err;
err=10e-6;
x1=1;
i=3;
do
{
x0=x1;
x1=x0+pow(-1,nr)/i;
i=i+2;
nr++;
cout<<x0<<" "<<x1<<endl;
}while(abs(x1-x0)>err);
pi=x1*4;
cout<<"Valoarea lui pi este:"<<pi;
return 0;
}
Alte întrebări interesante
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă