Calcolo della costante e con C++
#include <iostream>
#include <iomanip>
using namespace std;
double factorial(double); // in alternativa: double!
int main(){
double app=2,prevval=0,i=2;
// l'idea e' che prevval conterra' ogni volta il valore calcolato al
// passo precedente: se e' uguale al nuovo valore, significa che
// la precisione massima e` stata raggiunta e che bisogna terminare il
giro. cout << "\n\n==================\n";
while(true){
app+=(1/(factorial(i)));
if (app == prevval) break;
cout << i++ << "\t" << std::setprecision(30) << app << endl;
prevval = app;
}
return 0;
}
double factorial(double num){
if (num < 2) return 1; else return (num * factorial(num - 1));
/* OUTPUT con double
==================
2 2.5
3 2.66666666666666651863693004998
4 2.70833333333333303727386009996
5 2.71666666666666634100124610995
6 2.71805555555555544700041536998
7 2.71825396825396836675281520002
8 2.71827876984127003723301641003
9 2.71828152557319224769116772222
10 2.71828180114638451314590383845
11 2.71828182619849290091451621265
12 2.71828182828616871091753637302
13 2.71828182844675936280509631615
14 2.71828182845823018709552343353
15 2.71828182845899490871488524135
16 2.71828182845904287034954904811
17 2.71828182845904553488480814849
*/
/* OUTPUT con float
==================
2 2.5
3 2.6666667461395263671875
4 2.708333492279052734375
5 2.7166669368743896484375
6 2.71805572509765625
7 2.71825408935546875
8 2.7182788848876953125
9 2.71828174591064453125
10 2.7182819843292236328125
*/
Programma del numero e in C++
Il numero trascendente "e", dato in buona approssimazione da
e = 2.71828182845904
è calcolabile come limite di svariate serie o successioni. In particolare, si hanno due importanti definizioni per e:
A. e = lim (1 + 1/n)^n, con n → infinito
B. e = 1/0! + 1/1! + 1/2! + 1/3! + ... + 1/n! + ...
Il programma calcola il valore di e con uno a scelta di questi algoritmi. Il programma deve essere in grado di arrestarsi quando ha raggiunto la massima precisione consentita dal tipo di dato scelto per contenerne il valore, senza però conoscere a priori il limite di precisione.