Pi ausrechnen?
-
Hi,
ich möchte gerne PI ausrechen und hab hier im Forum neulich diese Funktion gefunden:
float PI(__int64 n) { float erg = 0; __int64 i = 1; while (i < n) { erg += 1/i; i += 2; erg -= 1/i; i += 2; } return i; }
Leider kommt da kein PI raus?:( Was stimmt an der Funktion nicht?
-
Da fehlt ein Punkt hinter der 1 bei 1/i, also 1./i oder 1.0/i. Lass mich raten: Es kam 1 raus?
-
nein leider was total falsches (53)
#include <iostream> using namespace std; float PI(__int64 n) { float erg = 0; float i = (float)1.0f; while (i < n) { erg += 1.0f/i; i += 2.0f; erg -= 1.0f/i; i += 2.0f; } return i; } int main (void) { cout << PI (50) << endl; return 0; }
-
Du kannst auch "4*atan(1)" nehmen...
-
ja ich finde das sieht so aus als wäre i nur ne Zählvariable und erg wohl das ergEbnis,d.h. ich bin mir da verdammt sicher, schreib doch return erg; statt return i;
-
Winn schrieb:
Du kannst auch "4*atan(1)" nehmen...
Dann tut's acos(-1) auch.
-
In meinem Analysis-Buch steht folgendes Verfahren, welches sehr gut für die Berechnung von pi geeignet sein soll, da es schneller als quadratisch konvergiert. Also, man setzt und und für \nu = 1,\dots,n:
$ \begin{eqnarray*} a_\nu &=& (a_{\nu - 1} + b_{\nu - 1}) / 2\\ b_\nu &=& \sqrt{a_{\nu - 1} b_{\nu - 1}}\\ \pi\_n &=& (a\_n + b\_n)^2 / (1 - \sum\_{\nu = 0}^n 2^\nu\cdot(a_\nu - b_\nu)^2) \end{eqnarray*}Bereits pi_3 hat 20 korrekte Dezimalstellen.