Un approssimazione di $pi$ di “grado $n$” può essere calcolata tramite la somma
$ pi_i=sum_(j=0)^i (-1)^j*4/(2j+1) $
1. Sviluppare un programma che prenda un numero intero, $n$, e calcoli l’approssimazione di “grado $n$”.
2. Sviluppare una seconda versione che prenda un double, $epsilon$, e calcoli un approssimazione di $pi$ di “grado
$n$” tale che $|pi_i - pi_(i-1)|<epsilon$
il primo punto è cosi è funziona:
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double pi=0;
int j=0,x;
cout<<"dammi il grado dell approssimazione";
cin>>x;
while (j<=x){
pi=pi+((pow(-1,j)*4)/((2*j)+1));
j++;
}
cout<<pi;
return 0;
}
ho dei problemi con il secondo punto:
ho provato con cicli annidati per calcolare le somme e metterle in relazione con la richiesta di $| |<epsilon$
diff=4-3/4 è il primo termine della differenza di sommatorie, ho dei problemi con l'indice i in quando non saprei come dargli una fine, visto che la fine è il relazione con la soddisfazione della $| |<epsilon$
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double pi=0,pi1=0,e,diff=4-3/4;
int i,j=0;
cin>>e;
while (diff<e) {
while (j<=i){ pi=pi+((pow(-1,j)*4)/((2*j)+1)); j++; }
while (j<=i){ pi1=pi1+((pow(-1,j-1)*4)/((2*(j-1))+1)); j++; }
diff=pi-pi1;
}
cout<<diff;
return 0;
}